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


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

Подписанный 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-объектов для Java.

Сведения о SAS службы

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

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

Create a service SAS (Создание SAS на уровне службы)

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

Sas службы можно создать для делегирования ограниченного доступа к ресурсу контейнера с помощью следующего метода:

Значения подписи SAS, такие как время истечения срока действия и подписанные разрешения, передаются методу в рамках экземпляра BLOBServiceSasSignatureValues . Разрешения указываются как экземпляр BlobContainerSasPermission .

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

public String createServiceSASContainer(BlobContainerClient containerClient) {
    // Create a SAS token that's valid for 1 day, as an example
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);

    // Assign read permissions to the SAS token
    BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
            .setReadPermission(true);

    BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
            .setStartTime(OffsetDateTime.now().minusMinutes(5));

    String sasToken = containerClient.generateSas(sasSignatureValues);
    return sasToken;
}

Использование SAS службы для авторизации клиентского объекта

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

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

Сначала создайте объект BlobServiceClient, подписанный ключом доступа к учетной записи:

String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
        
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
        .credential(credential)
        .buildClient();

Затем создайте SAS службы, как показано в предыдущем примере, и используйте SAS для авторизации объекта BlobContainerClient :

// Create a SAS token
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("sample-container");
String sasToken = createServiceSASContainer(containerClient);

// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
        .endpoint(containerClient.getBlobContainerUrl())
        .sasToken(sasToken)
        .buildClient();

Ресурсы

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

Примеры кода

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

См. также