Поделиться через


Создание SAS службы для контейнера или большого двоичного объекта с помощью JavaScript

Подписанный 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 службы для контейнера или большого двоичного объекта с клиентской библиотекой служба хранилища BLOB-объектов для JavaScript.

Создание SAS службы для контейнера BLOB-объектов

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

SAS службы подписан ключом доступа к учетной записи. Используйте класс StorageSharedKeyCredential для создания учетных данных, которые используются для подписания SAS. После этого вызовите функцию generateBlobSASQueryParameters, указав необходимые параметры для получения строки маркера SAS.

// Create a service SAS for a blob container
function getContainerSasUri(containerClient, sharedKeyCredential, storedPolicyName) {
    const sasOptions = {
        containerName: containerClient.containerName,
        permissions: ContainerSASPermissions.parse("c")
    };

    if (storedPolicyName == null) {
        sasOptions.startsOn = new Date();
        sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
    } else {
        sasOptions.identifier = storedPolicyName;
    }

    const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
    console.log(`SAS token for blob container is: ${sasToken}`);

    return `${containerClient.url}?${sasToken}`;
}

Создание SAS службы для BLOB-объекта

В нижеприведенном примере кода создается SAS для BLOB-объекта. Если указано имя существующей хранимой политики доступа, то эта политика будет связана с SAS. Если сохраненная политика доступа не указана, код создает специальный SAS для BLOB-объекта.

Чтобы создать SAS службы для BLOB-объекта вызовите функцию generateBlobSASQueryParameters, указав при этом необходимые параметры.

// Create a service SAS for a blob
function getBlobSasUri(containerClient, blobName, sharedKeyCredential, storedPolicyName) {
    const sasOptions = {
        containerName: containerClient.containerName,
        blobName: blobName
    };

    if (storedPolicyName == null) {
        sasOptions.startsOn = new Date();
        sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
        sasOptions.permissions = BlobSASPermissions.parse("r");
    } else {
        sasOptions.identifier = storedPolicyName;
    }

    const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
    console.log(`SAS token for blob is: ${sasToken}`);

    return `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;
}

Ресурсы для разработки с помощью JavaScript

По приведенным ниже ссылкам предоставляются полезные ресурсы для разработчиков, использующих клиентскую библиотеку службы хранилища Azure для JavaScript

API хранилища BLOB-объектов

Инструменты JavaScript

Следующие шаги