Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
A shared access signature (SAS) enables you to grant limited access to containers and blobs in your storage account. При создании SAS необходимо указать его ограничения, включая ресурсы службы хранилища Azure, к которым разрешен доступ клиенту, разрешения, предоставленные для доступа к этим ресурсам, а также срок действия SAS.
Каждый SAS подписывается ключом. Подписать документ SAS можно одним из двух способов:
- С помощью ключа, созданного с помощью учетных данных Microsoft Entra. A SAS that is signed with Microsoft Entra credentials is a user delegation SAS. A client that creates a user delegation SAS must be assigned an Azure RBAC role that includes the Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey action. Чтобы узнать больше, см. статью «Создание SAS делегирования пользователей».
- With the storage account key. Both a service SAS and an account SAS are signed with the storage account key. The client that creates a service SAS must either have direct access to the account key or be assigned the Microsoft.Storage/storageAccounts/listkeys/action permission. Дополнительные сведения см. в статье "Создание SAS службы" или "Создание SAS учетной записи".
Примечание.
A user delegation SAS offers superior security to a SAS that is signed with the storage account key. Майкрософт рекомендует по возможности использовать SAS с делегированием пользователей. Дополнительные сведения см. в статье Предоставление ограниченного доступа к данным с помощью подписанных URL-адресов (SAS).
This article shows how to use Microsoft Entra credentials to create a user delegation SAS for a container or blob with the Azure CLI.
About the user delegation SAS
A SAS token for access to a container or blob may be secured by using either Microsoft Entra credentials or an account key. SAS, защищенный учетными данными Microsoft Entra, называется пользовательским делегированным SAS, так как токен OAuth 2.0, используемый для подписи SAS, запрашивается от имени пользователя.
Корпорация Майкрософт рекомендует использовать учетные данные Microsoft Entra, если это возможно, как рекомендации по безопасности, а не использовать ключ учетной записи, который может быть проще скомпрометирован. Если в дизайне вашего приложения требуются подписи для совместного доступа, используйте учетные данные Microsoft Entra для создания SAS с делегированием пользователей, чтобы обеспечить повышенную безопасность. Дополнительные сведения о SAS для делегирования пользователей см. в статье Создание SAS для делегирования пользователей.
Осторожность
Any client that possesses a valid SAS can access data in your storage account as permitted by that SAS. Важно обеспечить для SAS защиту от вредоносного или непреднамеренного использования. Распространять SAS нужно с осторожность и следует подготовить план для отзыва скомпрометированного SAS.
Для получения дополнительной информации об общих ключах доступа см. статью Предоставление ограниченного доступа к ресурсам хранилища Azure с помощью общих ключей доступа (SAS).
Install the latest version of the Azure CLI
To use the Azure CLI to secure a SAS with Microsoft Entra credentials, first make sure that you have installed the latest version of Azure CLI. For more information about installing the Azure CLI, see Install the Azure CLI.
To create a user delegation SAS using the Azure CLI, make sure that you have installed version 2.0.78 or later. To check your installed version, use the az --version
command.
Sign in with Microsoft Entra credentials
Sign in to the Azure CLI with your Microsoft Entra credentials. For more information, see Sign in with the Azure CLI.
Назначение разрешений с помощью Azure RBAC
To create a user delegation SAS from Azure PowerShell, the Microsoft Entra account used to sign into Azure CLI must be assigned a role that includes the Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey action. Это разрешение позволяет учетной записи Microsoft Entra запрашивать ключ делегирования пользователей. The user delegation key is used to sign the user delegation SAS. Роль, предоставляющая действие Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey , должна быть назначена на уровне учетной записи хранения, группы ресурсов или подписки.
Если у вас недостаточно разрешений для назначения ролей Azure субъекту безопасности Microsoft Entra, может потребоваться попросить владельца учетной записи или администратора назначить необходимые разрешения.
The following example assigns the Storage Blob Data Contributor role, which includes the Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey action. The role is scoped at the level of the storage account.
Не забудьте заменить значения заполнителей в угловых скобках собственными значениями.
az role assignment create \
--role "Storage Blob Data Contributor" \
--assignee <email> \
--scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"
Дополнительные сведения о встроенных ролях, включающих действия Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey , см. в статье о встроенных ролях Azure.
Использование учетных данных Microsoft Entra для защиты SAS
When you create a user delegation SAS with the Azure CLI, the user delegation key that is used to sign the SAS is created for you implicitly. Время начала и время истечения срока действия, указанное для SAS, также используются в качестве времени начала и истечения срока действия ключа делегирования пользователей.
Так как максимальный интервал, в течение которого ключ делегирования пользователя действителен, составляет 7 дней с даты начала, следует указать время истечения срока действия SAS, которое находится в течение 7 дней времени начала. SAS недопустим после истечения срока действия ключа делегирования пользователей, поэтому SAS с истекающим сроком действия, превышающим 7 дней, по-прежнему будет действительным только в течение 7 дней.
When creating a user delegation SAS, the --auth-mode login
and --as-user parameters
are required. Specify login for the --auth-mode
parameter so that requests made to Azure Storage are authorized with your Microsoft Entra credentials. Specify the --as-user
parameter to indicate that the SAS returned should be a user delegation SAS.
Create a user delegation SAS for a container
To create a user delegation SAS for a container with the Azure CLI, call the az storage container generate-sas command.
Supported permissions for a user delegation SAS on a container include Add, Create, Delete, List, Read, and Write. Permissions can be specified singly or combined. For more information about these permissions, see Create a user delegation SAS.
В следующем примере возвращается токен пользовательского делегирования SAS для контейнера. Не забудьте заменить значения заполнителей в скобках собственными значениями.
az storage container generate-sas \
--account-name <storage-account> \
--name <container> \
--permissions acdlrw \
--expiry <date-time> \
--auth-mode login \
--as-user
The user delegation SAS token returned will be similar to:
se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>
Примечание.
The SAS token returned by Blob Storage does not include the delimiter character ('?') for the URL query string. If you are appending the SAS token to a resource URL, remember to also append the delimiter character.
Create a user delegation SAS for a blob
To create a user delegation SAS for a blob with the Azure CLI, call the az storage blob generate-sas command.
Supported permissions for a user delegation SAS on a blob include Add, Create, Delete, Read, and Write. Permissions can be specified singly or combined. For more information about these permissions, see Create a user delegation SAS.
The following syntax returns a user delegation SAS for a blob. В примере указывается параметр --full-uri
, который возвращает URI BLOB с добавленным маркером SAS. Не забудьте заменить значения заполнителей в скобках собственными значениями.
az storage blob generate-sas \
--account-name <storage-account> \
--container-name <container> \
--name <blob> \
--permissions acdrw \
--expiry <date-time> \
--auth-mode login \
--as-user \
--full-uri
The user delegation SAS URI returned will be similar to:
https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>
Примечание.
The SAS token returned by Azure CLI does not include the delimiter character ('?') for the URL query string. Если маркер SAS добавляется к URL-адресу ресурса, не забудьте добавить символ разделителя в URL-адрес ресурса перед добавлением маркера SAS.
A user delegation SAS does not support defining permissions with a stored access policy.
Revoke a user delegation SAS
To revoke a user delegation SAS from the Azure CLI, call the az storage account revoke-delegation-keys command. Эта команда отменяет все ключи делегирования пользователей, связанные с указанной учетной записью хранения. Все общие ключи доступа, связанные с этими ключами, аннулируются.
Не забудьте заменить значения заполнителей в угловых скобках собственными значениями.
az storage account revoke-delegation-keys \
--name <storage-account> \
--resource-group <resource-group>
Это важно
Ключ делегирования пользователей и назначения ролей Azure кэшируются службой хранилища Azure, поэтому может возникнуть задержка между запуском процесса отзыва и когда существующий SAS делегирования пользователей становится недействительным.