Создание SAS для учетной записи с помощью .NET

Подписанный URL-адрес (SAS) позволяет предоставить ограниченный разрешениями доступ к контейнерам и BLOB-объектам в вашей учетной записи хранения. При создании SAS необходимо указать его ограничения, включая ресурсы службы хранилища Azure, к которым разрешен доступ клиенту, разрешения, предоставленные для доступа к этим ресурсам, а также срок действия SAS.

Каждый SAS подписывается ключом. Подписать SAS можно одним из двух способов:

  • С помощью ключа, созданного с помощью учетных данных Microsoft Entra. SAS, подписанный учетными данными Microsoft Entra, — это SAS делегирования пользователей. Клиенту, создающему SAS делегирования пользователей, должна быть назначена роль Azure RBAC, которая включает действие Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Дополнительные сведения см. в статье "Создание SAS делегирования пользователей".
  • Ключом учетной записи хранения. Как SAS службы, так и SAS учетной записи подписываются ключом учетной записи хранения. Клиент, создающий SAS службы, должен иметь прямой доступ к ключу учетной записи или ему должно быть назначено разрешение Microsoft.Storage/storageAccounts/listkeys/action. Дополнительные сведения см. в статье "Создание SAS службы" или "Создание SAS учетной записи".

Примечание.

SAS делегирования пользователя обеспечивает более высокую безопасность по сравнению с SAS, подписанным ключом учетной записи хранения. Корпорация Майкрософт рекомендует по возможности использовать SAS делегирования пользователя. Дополнительные сведения см. в статье Предоставление ограниченного доступа к данным с помощью подписанных URL-адресов (SAS).

В этой статье показано, как использовать ключ учетной записи хранения для создания SAS учетной записи с помощью клиентской библиотеки службы хранилища Microsoft Azure для .NET.

Сведения о SAS учетной записи

SAS учетной записи создается на уровне учетной записи хранения. Создав SAS учетной записи, вы можете:

  • Делегировать доступ к операциям уровня обслуживания, которые в настоящее время недоступны с помощью SAS для конкретной службы, таких как получение свойств службы BLOB-объектов, задание свойств службы BLOB-объектов и получение статистики службы BLOB-объектов.
  • Делегировать доступ к нескольким службам в учетной записи хранения за раз. Например, можно делегировать доступ к ресурсам как в Хранилище BLOB-объектов Azure, так и в Файлы Azure с помощью SAS учетной записи.

Хранимые политики доступа не поддерживаются для SAS учетной записи.

Create an account SAS (Создание SAS на уровне учетной записи)

SAS учетной записи подписан ключом доступа к учетной записи. Вы можете использовать класс служба хранилища SharedKeyCredential для создания учетных данных, используемых для подписи SAS.

В следующем примере кода показано, как создать объект AccountSasBuilder и вызвать метод ToSasQueryParameters , чтобы получить строку маркера SAS учетной записи.

public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
    // Create a SAS token that's valid for one day
    AccountSasBuilder sasBuilder = new AccountSasBuilder()
    {
        Services = AccountSasServices.Blobs | AccountSasServices.Queues,
        ResourceTypes = AccountSasResourceTypes.Service,
        ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
        Protocol = SasProtocol.Https
    };

    sasBuilder.SetPermissions(AccountSasPermissions.Read |
        AccountSasPermissions.Write);

    // Use the key to get the SAS token
    string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();

    return sasToken;
}

Использование учетной записи SAS из клиента

Чтобы использовать SAS учетной записи для доступа к API уровня обслуживания для службы BLOB-объектов, создайте объект BlobServiceClient с помощью SAS учетной записи и конечной точки служба хранилища BLOB-объектов для учетной записи хранения.

string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
    new(accountName, accountKey);

// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
    new Uri($"{blobServiceURI}?{sasToken}"));

Ресурсы

Дополнительные сведения о создании SAS учетной записи с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для .NET см. в следующих ресурсах.

Ресурсы клиентской библиотеки

См. также