Создание 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 службы для контейнера или большого двоичного объекта с клиентской библиотекой хранилища BLOB-объектов для Python.
Сведения о SAS службы
SAS службы подписан ключом доступа к учетной записи хранения. SAS службы делегирует доступ к ресурсу в одной службе служба хранилища Azure, например хранилище BLOB-объектов.
Вы также можете использовать хранимую политику доступа для определения разрешений и длительности SAS. Если указано имя существующей хранимой политики доступа, то эта политика будет связана с SAS. Дополнительные сведения о хранимых политиках доступа см. в статье "Определение хранимой политики доступа". Если хранимая политика доступа не указана, в примерах кода в этой статье показано, как определить разрешения и длительность SAS.
Create a service SAS (Создание SAS на уровне службы)
Вы можете создать SAS службы для контейнера или большого двоичного объекта в зависимости от потребностей приложения.
Sas службы можно создать для делегирования ограниченного доступа к ресурсу контейнера с помощью следующего метода:
Ключ доступа к учетной записи хранения, используемый для подписи SAS, передается методу в качестве аргумента account_key
. Разрешенные разрешения передаются методу в качестве аргумента permission
и определяются в классе ContainerSasPermissions .
В следующем примере кода показано, как создать SAS службы с разрешениями на чтение для ресурса контейнера:
def create_service_sas_container(self, container_client: ContainerClient, account_key: str):
# Create a SAS token that's valid for one day, as an example
start_time = datetime.datetime.now(datetime.timezone.utc)
expiry_time = start_time + datetime.timedelta(days=1)
sas_token = generate_container_sas(
account_name=container_client.account_name,
container_name=container_client.container_name,
account_key=account_key,
permission=ContainerSasPermissions(read=True),
expiry=expiry_time,
start=start_time
)
return sas_token
Использование SAS службы для авторизации клиентского объекта
С помощью SAS службы можно авторизовать клиентский объект для выполнения операций с контейнером или BLOB-объектом на основе разрешений, предоставленных SAS.
В следующем примере кода показано, как использовать SAS службы, созданной в предыдущем примере для авторизации объекта ContainerClient . Этот клиентский объект можно использовать для выполнения операций с ресурсом контейнера на основе разрешений, предоставленных SAS.
# The SAS token string can be appended to the resource URL with a ? delimiter
# or passed as the credential argument to the client constructor
sas_url = f"{container_client.url}?{sas_token}"
# Create a ContainerClient object with SAS authorization
container_client_sas = ContainerClient.from_container_url(container_url=sas_url)
Ресурсы
Дополнительные сведения об использовании клиентской библиотеки Хранилище BLOB-объектов Azure для Python см. в следующих ресурсах.