Criar uma delegação de utilizador SAS para um recipiente ou bolha com o Azure CLI

Uma assinatura de acesso partilhado (SAS) permite-lhe conceder acesso limitado a contentores e bolhas na sua conta de armazenamento. Quando cria um SAS, especifica os seus constrangimentos, incluindo quais os recursos de Armazenamento Azure a que um cliente tem acesso, quais as permissões que tem sobre esses recursos e quanto tempo o SAS é válido.

Todos os SAS são assinados com uma chave. Pode assinar um SAS de duas formas:

  • Com uma chave criada utilizando credenciais Azure Ative Directory (Azure AD). Um SAS assinado com credenciais AZure AD é uma delegação de utilizadores SAS.
  • Com a chave da conta de armazenamento. Tanto um serviço SAS como uma conta SAS são assinados com a chave da conta de armazenamento.

Uma delegação de utilizadores SAS oferece segurança superior a um SAS que é assinado com a chave da conta de armazenamento. A Microsoft recomenda a utilização de uma delegação de utilizador SAS, quando possível. Para obter mais informações, consulte Grant acesso limitado a dados com assinaturas de acesso partilhado (SAS).

Este artigo mostra como utilizar credenciais do Azure Ative Directory (Azure AD) para criar uma delegação de utilizador SAS para um recipiente ou bolha com o CLI Azure.

Sobre a delegação de utilizadores SAS

Um símbolo SAS para acesso a um recipiente ou bolha pode ser protegido utilizando credenciais AD Azure ou uma chave de conta. Um SAS garantido com credenciais AD Azure é chamado de delegação de utilizador SAS, porque o símbolo OAuth 2.0 usado para assinar o SAS é solicitado em nome do utilizador.

A Microsoft recomenda que utilize credenciais AZure AD quando possível como uma melhor prática de segurança, em vez de usar a chave de conta, que pode ser mais facilmente comprometida. Quando o design da sua aplicação necessitar de assinaturas de acesso partilhado, utilize credenciais Azure AD para criar uma delegação de utilizador SAS para uma segurança superior. Para obter mais informações sobre a delegação de utilizadores SAS, consulte Criar uma delegação de utilizador SAS.

Atenção

Qualquer cliente que possua um SAS válido pode aceder aos dados na sua conta de armazenamento, conforme permitido por essa SAS. É importante proteger um SAS de uso malicioso ou não intencional. Use discrição na distribuição de um SAS, e tenha um plano em vigor para revogar um SAS comprometido.

Para obter mais informações sobre assinaturas de acesso partilhado, consulte Grant acesso limitado aos recursos de Armazenamento Azure utilizando assinaturas de acesso partilhado (SAS).

Instalar a versão mais recente da CLI do Azure

Para utilizar o Azure CLI para garantir um SAS com credenciais AD AZure, certifique-se primeiro de que instalou a versão mais recente do Azure CLI. Para obter mais informações sobre a instalação do Azure CLI, consulte instalar o Azure CLI.

Para criar uma delegação de utilizador SAS utilizando o Azure CLI, certifique-se de que instalou a versão 2.0.78 ou posterior. Para verificar a sua versão instalada, utilize o az --version comando.

Inscreva-se com credenciais AD AD Azure

Inscreva-se no Azure CLI com as suas credenciais AZure AD. Para obter mais informações, veja Iniciar sessão na CLI do Azure.

Atribuir permissões com o Azure RBAC

Para criar uma delegação de utilizadores SAS da Azure PowerShell, a conta Azure AD utilizada para assinar no Azure CLI deve ser atribuída a uma função que inclua a ação Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Esta permissão permite que a conta Azure AD solicite a chave da delegação do utilizador . A chave da delegação de utilizadores é utilizada para assinar a delegação de utilizadores SAS. A função que fornece a ação Microsoft.Storage/storageAcounts/blobServices/generateUserDelegationKey deve ser atribuída ao nível da conta de armazenamento, do grupo de recursos ou da subscrição.

Se não tiver permissões suficientes para atribuir funções Azure a um responsável de segurança Azure, poderá ter de pedir ao proprietário ou administrador da conta para atribuir as permissões necessárias.

O exemplo a seguir atribui a função de Contribuinte de Dados blob de armazenamento, que inclui a ação Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. A função é traçada ao nível da conta de armazenamento.

Lembre-se de substituir os valores do espaço reservado nos suportes angulares com os seus próprios valores:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Para obter mais informações sobre as funções incorporadas que incluem a ação Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey, consulte as funções incorporadas do Azure.

Use credenciais AD AD para garantir um SAS

Quando cria uma delegação de utilizadores SAS com o Azure CLI, a chave da delegação do utilizador que é usada para assinar o SAS é criada implicitamente para si. O tempo de início e o prazo de validade que especifica para o SAS também são utilizados como o tempo de início e o prazo de validade para a chave da delegação do utilizador.

Uma vez que o intervalo máximo sobre o qual a chave da delegação do utilizador é válida é de 7 dias a contar da data de início, deve especificar um prazo de validade para o SAS que se encontra no prazo de 7 dias a contar da hora de início. O SAS é inválido após o termo da chave da delegação do utilizador, pelo que um SAS com um prazo de validade superior a 7 dias será válido apenas por 7 dias.

Ao criar uma delegação de utilizador SAS, --auth-mode login o e --as-user parameters é necessário. Especifique o login para o --auth-mode parâmetro de modo a que os pedidos feitos ao Azure Storage sejam autorizados com as suas credenciais AD Azure. Especifique o --as-user parâmetro que indica que o SAS devolvido deve ser uma delegação de utilizador SAS.

Criar uma delegação de utilizador SAS para um recipiente

Para criar uma delegação de utilizador SAS para um recipiente com o CLI Azure, ligue para o comando de confli do recipiente de armazenamento az.

Permissões suportadas para uma delegação de utilizador SAS em um recipiente incluem Adicionar, Criar, Eliminar, Listar, Ler e Escrever. As permissões podem ser especificadas singly ou combinadas. Para obter mais informações sobre estas permissões, consulte Criar uma delegação de utilizador SAS.

O exemplo a seguir devolve um símbolo SAS da delegação de utilizadores para um recipiente. Lembre-se de substituir os valores de espaço reservado nos parênteses pelos seus próprios valores:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

A delegação de utilizadores sas token devolvida será semelhante a:

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Criar uma delegação de utilizador SAS para uma bolha

Para criar uma delegação de utilizador SAS para uma bolha com o CLI Azure, ligue para o comando az blob de armazenamento generate-sas.

As permissões suportadas para uma delegação de utilizador SAS numa bolha incluem Adicionar, Criar, Eliminar, Ler e Escrever. As permissões podem ser especificadas singly ou combinadas. Para obter mais informações sobre estas permissões, consulte Criar uma delegação de utilizador SAS.

A sintaxe que se segue devolve uma delegação de utilizador SAS para uma bolha. O exemplo especifica o --full-uri parâmetro, que devolve o blob URI com o símbolo SAS anexado. Lembre-se de substituir os valores de espaço reservado nos parênteses pelos seus próprios valores:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

A delegação de utilizadores SAS URI devolvida será semelhante a:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Nota

Uma delegação de utilizadores SAS não suporta a definição de permissões com uma política de acesso armazenada.

Revogar uma delegação de utilizadores SAS

Para revogar uma delegação de utilizadores SAS do Azure CLI, ligue para a conta de armazenamento AZ revogar o comando de chaves de delegação. Este comando revoga todas as chaves da delegação do utilizador associadas à conta de armazenamento especificada. Quaisquer assinaturas de acesso partilhada associadas a essas chaves são invalidadas.

Lembre-se de substituir os valores do espaço reservado nos suportes angulares com os seus próprios valores:

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Importante

Tanto a chave da delegação do utilizador como as atribuições de funções Azure são armazenadas pela Azure Storage, pelo que pode haver um atraso entre quando inicia o processo de revogação e quando uma delegação de utilizador existente SAS se torna inválida.

Passos seguintes