Создание 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 учетной записи с помощью клиентской библиотеки служба хранилища Azure для Java.
Сведения о SAS учетной записи
SAS учетной записи создается на уровне учетной записи хранения и подписан ключом доступа к учетной записи. Создав SAS учетной записи, вы можете:
- Делегировать доступ к операциям уровня обслуживания, которые в настоящее время недоступны с помощью SAS для конкретной службы, таких как получение свойств службы BLOB-объектов, задание свойств службы BLOB-объектов и получение статистики службы BLOB-объектов.
- Делегировать доступ к нескольким службам в учетной записи хранения за раз. Например, можно делегировать доступ к ресурсам как в Хранилище BLOB-объектов Azure, так и в Файлы Azure с помощью 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;
Create an account SAS (Создание 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 учетной записи с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.
Примеры кода
Ресурсы клиентской библиотеки
См. также
- Предоставление ограниченного доступа к ресурсам службы хранилища Azure с помощью подписанных URL-адресов (SAS)
- Create an account SAS (Создание SAS на уровне учетной записи)