Criar uma SAS de conta com Python
Uma SAS (Assinatura de Acesso Compartilhado) permite conceder acesso limitado a contêineres e blobs da conta de armazenamento. Ao criar uma SAS, você especificará suas restrições, inclusive que recursos do Armazenamento do Azure um cliente terá permissão para acessar, que permissões ele terá nesses recursos e por quanto tempo a SAS é válida.
Cada SAS é assinada com uma chave. Você pode assinar uma SAS de uma das duas maneiras:
- Com uma chave criada utilizando as credenciais do Microsoft Entra. Uma SAS assinada com credenciais do Microsoft Entra é uma SAS de delegação de usuário. É necessário atribuir um cliente que cria uma SAS de delegação de usuário a uma função RBAC do Azure que inclua a ação Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Para saber mais, consulte Criar uma SAS de delegação de usuário.
- Com uma chave da conta de armazenamento. Tanto uma SAS de serviço quanto uma SAS de conta são assinadas com a chave da conta de armazenamento. É necessário que o cliente que cria uma SAS de serviço tenha acesso direto à chave da conta ou receba a permissão Microsoft.Storage/storageAccounts/listkeys/action. Para saber mais, consulte Criar uma SAS de serviço ou Criar uma SAS de conta.
Observação
Uma SAS de delegação de usuário oferece mais segurança do que uma SAS que é assinada com a chave da conta de armazenamento. A Microsoft recomenda usar uma SAS de delegação de usuário quando possível. Para saber mais, confira Conceder acesso limitado a dados com assinaturas de acesso compartilhado (SAS).
Este artigo mostra como usar a chave de conta de armazenamento para criar uma Assinatura de Acesso Compartilhado de conta com a biblioteca de clientes do Armazenamento do Microsoft Azure para Python.
Sobre a conta SAS
Uma conta SAS foi criada no nível da conta de armazenamento. Ao criar uma conta SAS, você pode:
- Delegue acesso a operações de nível de serviço que não estão atualmente disponíveis com um SAS específico de serviço, como Obter Propriedades do Serviço de Blob, Definir as Propriedades do Serviço de Blob e Obter as Estatísticas do Serviço de Blob .
- Delegue o acesso a mais de um serviço em uma conta de armazenamento ao mesmo tempo. Por exemplo, você pode delegar o acesso a recursos no Armazenamento de Blobs do Azure e nos Arquivos do Azure usando uma conta SAS.
As políticas de acesso armazenado não são suportadas em uma conta SAS.
Criar uma SAS de conta
Uma Assinatura de Acesso Compartilhado de conta é assinada com a chave de acesso da conta. O exemplo de código a seguir mostra como chamar o método generate_account_sas para obter a cadeia de caracteres de token SAS da conta.
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
Os parâmetros válidos para o construtor ResourceTypes são:
- serviço: o padrão é
False
; defina comoTrue
para conceder acesso a APIs de nível de serviço. - contêiner: o padrão é
False
; defina comoTrue
para conceder acesso a APIs no nível do contêiner. - objeto: o padrão é
False
; defina comoTrue
para conceder acesso a APIs no nível do objeto para blobs, mensagens de fila e arquivos.
Para ver as permissões disponíveis, confira AccountSasPermissions.
Usar uma Assinatura de Acesso Compartilhado de conta de um cliente
Para usar a SAS de conta e acessar as APIs de nível de serviço para o serviço Blob, crie um objeto BlobServiceClient usando a SAS de conta e o ponto de extremidade do Armazenamento de Blobs para sua conta de armazenamento.
# 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)
Você também pode usar uma SAS de conta para autorizar e trabalhar com um objeto ContainerClient ou um objeto BlobClient, se esses tipos de recursos receberem acesso como parte dos valores de assinatura.
Recursos
Para saber mais sobre como criar uma SAS de conta usando a biblioteca de clientes do Armazenamento de Blobs do Azure para Python, confira os recursos a seguir.
Exemplos de código
Recursos da biblioteca de clientes
- Documentação de referência da biblioteca de clientes
- Código-fonte da biblioteca de clientes
- Pacote (PyPi)