Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma assinatura de acesso compartilhado (SAS) permite que você conceda acesso limitado a contêineres e blobs em sua conta de armazenamento. Ao criar uma SAS, você especifica suas restrições, incluindo quais recursos do Armazenamento do Azure um cliente tem permissão para acessar, quais permissões eles têm nesses recursos e por quanto tempo a SAS é válida.
Cada SAS é assinado com uma chave. Você pode assinar uma SAS de duas maneiras:
- Com uma chave criada usando credenciais do Microsoft Entra. Uma SAS assinada com credenciais do Microsoft Entra é uma SAS de delegação de utilizador. Um cliente que cria uma SAS de delegação de usuário deve receber 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 a chave da conta de armazenamento. Tanto uma SAS de serviço como uma SAS de conta são assinadas com a chave da conta de armazenamento. O cliente que cria uma SAS de serviço deve ter acesso direto à chave da conta ou ser-lhe atribuída 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 segurança superior à de uma SAS assinada com a chave da conta de armazenamento. A Microsoft recomenda o uso de uma SAS de delegação de usuário quando possível. Para obter mais informações, consulte Conceder acesso limitado a dados com assinaturas de acesso compartilhado (SAS).
Este artigo mostra como usar a chave da conta de armazenamento para criar uma conta SAS com a biblioteca de cliente do Armazenamento do Azure para Python.
Sobre a conta SAS
Uma conta SAS é criada no nível da conta de armazenamento. Ao criar uma conta SAS, você pode:
- Delegue o acesso a operações de nível de serviço que não estão atualmente disponíveis com um SAS específico do serviço, como Obter Propriedades do Serviço de Blob, Configurar Propriedades do Serviço de Blob e Obter Estatísticas do Serviço de Blob.
- Delegue acesso a mais de um serviço em uma conta de armazenamento de cada vez. Por exemplo, você pode delegar acesso a recursos no Armazenamento de Blobs do Azure e nos Arquivos do Azure usando uma conta SAS.
As políticas de acesso guardadas não são suportadas para uma Conta SAS.
Criar uma conta SAS
Uma conta SAS é 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:
-
service: o padrão é
False; defina paraTrueconceder acesso a APIs de nível de serviço. -
container: o padrão é
False; definido paraTrueconceder acesso a APIs no nível de contêiner. -
object: default é
False; definido comoTruepara conceder acesso a APIs no nível do objeto para blobs, mensagens de fila e arquivos.
Para obter as permissões disponíveis, consulte AccountSasPermissions.
Usar uma conta SAS fornecida por um cliente
Para usar a conta SAS para aceder às APIs de nível de serviço do serviço Blob, crie um objeto BlobServiceClient usando a conta SAS e o ponto de extremidade de armazenamento Blob para a 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 conta SAS para autorizar e trabalhar com um objeto ContainerClient ou um objeto BlobClient , se esses tipos de recursos tiverem acesso concedido como parte dos valores de assinatura.
Recursos
Para saber mais sobre como criar uma conta SAS usando a biblioteca de cliente do Armazenamento de Blobs do Azure para Python, consulte os recursos a seguir.