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:

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 como True para conceder acesso a APIs de nível de serviço.
  • contêiner: o padrão é False; defina como True para conceder acesso a APIs no nível do contêiner.
  • objeto: o padrão é False; defina como True 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

Confira também