Создание SAS учетной записи с помощью Python
Подписанный 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 для Python.
Сведения о SAS учетной записи
SAS учетной записи создается на уровне учетной записи хранения. Создав SAS учетной записи, вы можете:
- Делегировать доступ к операциям уровня обслуживания, которые в настоящее время недоступны с помощью SAS для конкретной службы, таких как получение свойств службы BLOB-объектов, задание свойств службы BLOB-объектов и получение статистики службы BLOB-объектов.
- Делегировать доступ к нескольким службам в учетной записи хранения за раз. Например, можно делегировать доступ к ресурсам как в Хранилище BLOB-объектов Azure, так и в Файлы Azure с помощью SAS учетной записи.
Хранимые политики доступа не поддерживаются для SAS учетной записи.
Create an account SAS (Создание SAS на уровне учетной записи)
SAS учетной записи подписан ключом доступа к учетной записи. В следующем примере кода показано, как вызвать метод generate_account_sas для получения строки маркера SAS учетной записи.
def create_account_sas(self, account_name: str, account_key: str):
# Create an account SAS that's valid for one day
start_time = datetime.datetime.now(datetime.timezone.utc)
expiry_time = start_time + datetime.timedelta(days=1)
# Define the SAS token permissions
sas_permissions=AccountSasPermissions(read=True)
# Define the SAS token resource types
# For this example, we grant access to service-level APIs
sas_resource_types=ResourceTypes(service=True)
sas_token = generate_account_sas(
account_name=account_name,
account_key=account_key,
resource_types=sas_resource_types,
permission=sas_permissions,
expiry=expiry_time,
start=start_time
)
return sas_token
Допустимые параметры конструктора ResourceTypes :
- служба: по умолчанию — для
True
False
предоставления доступа к API уровня обслуживания. - контейнер: по умолчанию — это
False
значение; установлено дляTrue
предоставления доступа к API уровня контейнера. - объект: по умолчанию — значение
False
; дляTrue
предоставления доступа к API уровня объекта для больших двоичных объектов, сообщений очередей и файлов.
Сведения о доступных разрешениях см. в разделе AccountSasPermissions.
Использование учетной записи SAS из клиента
Чтобы использовать SAS учетной записи для доступа к API уровня обслуживания для службы BLOB-объектов, создайте объект BlobServiceClient с помощью SAS учетной записи и конечной точки служба хранилища BLOB-объектов для учетной записи хранения.
# The SAS token string can be appended to the account URL with a ? delimiter
# or passed as the credential argument to the client constructor
account_sas_url = f"{blob_service_client.url}?{sas_token}"
# Create a BlobServiceClient object
blob_service_client_sas = BlobServiceClient(account_url=account_sas_url)
Вы также можете использовать SAS учетной записи для авторизации и работы с объектом ContainerClient или объектом BLOBClient, если эти типы ресурсов предоставляются в рамках значений подписи.
Ресурсы
Дополнительные сведения о создании SAS учетной записи с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Python см. в следующих ресурсах.
Примеры кода
Ресурсы клиентской библиотеки
См. также
- Предоставление ограниченного доступа к ресурсам службы хранилища Azure с помощью подписанных URL-адресов (SAS)
- Create an account SAS (Создание SAS на уровне учетной записи)