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


Создание SAS учетной записи с помощью Java

Подписанный ключ доступа (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 с помощью библиотеки клиента Azure Storage для Java.

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

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

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

Настройка проекта

Чтобы работать с примерами кода в этой статье, добавьте следующие директивы импорта:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

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

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

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

  • AccountSasPermission: представляет разрешения, разрешенные SAS. В нашем примере мы задали разрешение trueна чтение.
  • AccountSasService: представляет службы, доступные SAS. В нашем примере мы разрешаем доступ к службе BLOB-объектов.
  • AccountSasResourceType: представляет типы ресурсов, доступные SAS. В нашем примере мы разрешаем доступ к API уровня обслуживания.

После настройки вспомогательных классов можно инициализировать параметры SAS с помощью экземпляра AccountSasSignatureValues .

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

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

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

В следующем примере кода показано, как использовать SAS учетной записи, созданной в предыдущем примере для авторизации объекта BlobServiceClient . Затем этот клиентский объект можно использовать для доступа к API уровня обслуживания на основе разрешений, предоставленных 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 для авторизации объекта BlobServiceClient :

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

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

Ресурсы

Дополнительные сведения о создании учетной записи SAS с помощью клиентской библиотеки Azure Blob Storage для Java см. в следующих ресурсах.

Примеры кода

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

См. также