Gerenciar chaves de conta de armazenamento com o Cofre de Chaves e a CLI do Azure (legado)

Importante

As chaves de conta de armazenamento gerenciado do Cofre de Chaves (legado) são suportadas no estado em que se encontram, sem mais atualizações planejadas. Somente SAS de conta são suportados com definições SAS assinadas versão do serviço de armazenamento até 2018-03-28.

Importante

O suporte para chaves de conta de armazenamento gerenciado na CLI do Azure foi removido na versão 2.54, você deve usar a CLI do Azure versão 2.53.1 ou anterior para comandos neste tutorial.

Importante

Recomendamos usar a integração do Armazenamento do Azure com o Microsoft Entra ID, o serviço de gerenciamento de identidade e acesso baseado em nuvem da Microsoft. A integração do Microsoft Entra está disponível para blobs, filas e tabelas do Azure e fornece acesso baseado em token OAuth2 ao Armazenamento do Azure (assim como o Azure Key Vault). O Microsoft Entra ID permite que você autentique seu aplicativo cliente usando uma identidade de aplicativo ou usuário, em vez de credenciais de conta de armazenamento. Você pode usar uma identidade gerenciada do Microsoft Entra ao executar no Azure. As identidades gerenciadas eliminam a necessidade de autenticação de cliente e armazenamento de credenciais em ou com seu aplicativo. Use a solução abaixo somente quando a autenticação do Microsoft Entra não for possível.

Uma conta de armazenamento do Azure usa credenciais que compreendem um nome de conta e uma chave. A chave é gerada automaticamente e serve como uma senha, em vez de uma chave criptográfica. O Cofre de Chaves gerencia chaves de conta de armazenamento regenerando-as periodicamente na conta de armazenamento e fornece tokens de assinatura de acesso compartilhado para acesso delegado a recursos em sua conta de armazenamento.

Você pode usar o recurso de chave de conta de armazenamento gerenciado do Cofre da Chave para listar (sincronizar) chaves com uma conta de armazenamento do Azure e regenerar (girar) as chaves periodicamente. Você pode gerenciar chaves para contas de armazenamento e contas de armazenamento Classic.

Ao usar o recurso de chave de conta de armazenamento gerenciado, considere os seguintes pontos:

  • Os valores-chave nunca são devolvidos em resposta a um chamador.
  • Apenas o Cofre de Chaves deve gerir as chaves da sua conta de armazenamento. Não gerencie as chaves sozinho e evite interferir nos processos do Cofre de Chaves.
  • Apenas um único objeto do Cofre da Chave deve gerenciar as chaves da conta de armazenamento. Não permita o gerenciamento de chaves de vários objetos.
  • Regenere as chaves usando apenas o Cofre da Chave. Não regenere manualmente as chaves da conta de armazenamento.

Importante

A regeneração da chave diretamente na conta de armazenamento interrompe a configuração da conta de armazenamento gerenciado e pode invalidar tokens SAS em uso e causar uma interrupção.

ID do aplicativo principal de serviço

Um locatário do Microsoft Entra fornece a cada aplicativo registrado uma entidade de serviço. A entidade de serviço serve como a ID do Aplicativo, que é usada durante a configuração de autorização para acesso a outros recursos do Azure por meio do controle de acesso da base de função do Azure (Azure RBAC).

O Key Vault é um aplicativo da Microsoft pré-registrado em todos os locatários do Microsoft Entra. O Cofre da Chave é registrado sob a mesma ID de Aplicativo em cada nuvem do Azure.

Inquilinos Cloud ID da aplicação
Microsoft Entra ID Azure Government 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra ID Azure público cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Outro Qualquer cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Pré-requisitos

Para concluir este guia, você deve primeiro executar as seguintes etapas:

Gerir as chaves de contas de armazenamento

Ligar à sua conta do Azure

Autentique sua sessão da CLI do Azure usando os comandos az login .

az login

Dê acesso ao Key Vault à sua conta de armazenamento

Use o comando Azure CLI az role assignment create para dar ao Cofre da Chave acesso à sua conta de armazenamento. Forneça ao comando os seguintes valores de parâmetro:

  • --role: Passe a função do Azure "Storage Account Key Operator Service Role". Essa função limita o escopo de acesso à sua conta de armazenamento. Para uma conta de armazenamento clássica, passe "Classic Storage Account Key Operator Service Role".
  • --assignee: Passe o valor "https://vault.azure.net", que é a url do Cofre da Chave na nuvem pública do Azure. (Para a nuvem do Azure Government, use '--assignee-object-id' em vez disso, consulte ID do aplicativo principal de serviço.)
  • --scope: Passe o ID de recurso da sua conta de armazenamento, que está no formato /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Encontre sua ID de assinatura, usando o comando Azure CLI az account list. Localize o nome da sua conta de armazenamento e o grupo de recursos da conta de armazenamento, usando o comando Azure CLI az storage account list.
az role assignment create --role "Storage Account Key Operator Service Role" --assignee "https://vault.azure.net" --scope "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Dê permissão à sua conta de usuário para contas de armazenamento gerenciado

Use o cmdlet keyvault-set-policy da CLI do Azure para atualizar a política de acesso do Cofre da Chave e conceder permissões de conta de armazenamento à sua conta de usuário.

# Give your user principal access to all storage account permissions, on your Key Vault instance

az keyvault set-policy --name <YourKeyVaultName> --upn user@domain.com --storage-permissions get list delete set update regeneratekey getsas listsas deletesas setsas recover backup restore purge

As permissões para contas de armazenamento não estão disponíveis na página "Políticas de acesso" da conta de armazenamento no portal do Azure.

Criar uma conta de armazenamento gerenciado do Key Vault

Crie uma conta de armazenamento gerenciado do Cofre da Chave usando o comando Azure CLI az keyvault storage . Defina um período de regeneração de 30 dias. Quando é hora de girar, o KeyVault regenera a chave que não está ativa e, em seguida, define a chave recém-criada como ativa. Apenas uma das chaves é usada para emitir tokens SAS a qualquer momento, esta é a chave ativa. Forneça ao comando os seguintes valores de parâmetro:

  • --vault-name: Passe o nome do seu cofre de chaves. Para localizar o nome do seu cofre de chaves, use o comando Azure CLI az keyvault list .
  • -n: Passe o nome da sua conta de armazenamento. Para localizar o nome da sua conta de armazenamento, use o comando Azure CLI az storage account list.
  • --resource-id: Passe o ID de recurso da sua conta de armazenamento, que está no formato /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Encontre sua ID de assinatura, usando o comando Azure CLI az account list. Localize o nome da sua conta de armazenamento e o grupo de recursos da conta de armazenamento, usando o comando Azure CLI az storage account list.
az keyvault storage add --vault-name <YourKeyVaultName> -n <YourStorageAccountName> --active-key-name key1 --auto-regenerate-key --regeneration-period P30D --resource-id "/subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>"

Tokens de assinatura de acesso compartilhado

Você também pode pedir ao Cofre da Chave para gerar tokens de assinatura de acesso compartilhado. Uma assinatura de acesso compartilhado fornece acesso delegado aos recursos em sua conta de armazenamento. Você pode conceder aos clientes acesso aos recursos em sua conta de armazenamento sem compartilhar suas chaves de conta. Uma assinatura de acesso compartilhado fornece uma maneira segura de compartilhar seus recursos de armazenamento sem comprometer as chaves da conta.

Os comandos nesta seção concluem as seguintes ações:

  • Definir uma definição <YourSASDefinitionName>de assinatura de acesso compartilhado de conta . A definição é definida em uma conta <YourStorageAccountName> de armazenamento gerenciado do Cofre da Chave no cofre da chave <YourKeyVaultName>.
  • Defina uma definição de assinatura de assinatura de acesso compartilhado de armazenamento gerenciado do Cofre de Chaves no cofre. A definição tem o URI do modelo do token de assinatura de acesso compartilhado que foi criado. A definição tem o tipo account de assinatura de acesso compartilhado e é válida por N dias.
  • Verifique se a assinatura de acesso compartilhado foi salva no cofre da chave como um segredo.

Definir um modelo de definição de assinatura de acesso compartilhado

O Key Vault usa o modelo de definição SAS para gerar tokens para aplicativos cliente.

Exemplo de modelo de definição SAS:

"sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

O modelo de definição SAS será passado para o --template-uri parâmetro na próxima etapa.

Parâmetros SAS de conta necessários no modelo de definição SAS para o Cofre de Chaves

Parâmetro de consulta SAS Description
SignedVersion (sv) Obrigatório. Especifica a versão do serviço de armazenamento assinado a ser usada para autorizar solicitações feitas com essa conta SAS. Deve ser definido para a versão 2015-04-05 ou posterior. O Key Vault suporta versões não posteriores a 2018-03-28
SignedServices (ss) Obrigatório. Especifica os serviços assinados acessíveis com a conta SAS. Valores possíveis incluem:

- Blob (b)
- Fila (q)
- Tabela (t)
- Arquivo (f)

Você pode combinar valores para fornecer acesso a mais de um serviço. Por exemplo, ss=bf especifica o acesso aos pontos de extremidade Blob e File.
SignedResourceTypes (srt) Obrigatório. Especifica os tipos de recursos assinados que podem ser acessados com a conta SAS.

- Serviço (s): Acesso a APIs de nível de serviço (por exemplo, Get/set Service Properties, Get Service Stats, List Containers/Queues/Tables/Shares)
- Container (c): Acesso a APIs no nível de contêiner (por exemplo, Create/Delete Container, Create/Delete Queue, Create/Delete Table, Create/Delete Share, List Blobs/Files and Directories)
- Objeto (o): Acesso a APIs de nível de objeto para blobs, mensagens de fila, entidades de tabela e arquivos (por exemplo, Put Blob, Query Entity, Get Messages, Create File, etc.)

Você pode combinar valores para fornecer acesso a mais de um tipo de recurso. Por exemplo, srt=sc especifica o acesso a recursos de serviço e contêiner.
SignedPermission (sp) Obrigatório. Especifica as permissões assinadas para a conta SAS. As permissões só são válidas se corresponderem ao tipo de recurso assinado especificado; caso contrário, são ignorados.

- Ler (r): Válido para todos os tipos de recursos assinados (Serviço, Contêiner e Objeto). Permite permissões de leitura para o tipo de recurso especificado.
- Write (w): Válido para todos os tipos de recursos assinados (Service, Container e Object). Permite permissões de gravação para o tipo de recurso especificado.
- Excluir (d): Válido para os tipos de recursos Container e Object, exceto para mensagens de fila.
- Exclusão permanente (y): Válido apenas para o tipo de recurso Object de Blob.
- Lista (l): Válida apenas para os tipos de recursos Service e Container.
- Adicionar (a): Válido apenas para os seguintes tipos de recursos de objeto: mensagens de fila, entidades de tabela e blobs de acréscimo.
- Create (c): Válido apenas para os seguintes tipos de recursos de objeto: blobs e arquivos. Os usuários podem criar novos blobs ou arquivos, mas não podem substituir blobs ou arquivos existentes.
- Atualização (u): Válido apenas para os seguintes tipos de recursos de objeto: mensagens de fila e entidades de tabela.
- Processo (p): Válido apenas para o seguinte tipo de recurso de objeto: mensagens de fila.
- Tag (t): Válido apenas para o seguinte tipo de recurso Object: blobs. Permite operações de tag de blob.
- Filtro (f): Válido apenas para o seguinte tipo de recurso Object: blob. Permite a filtragem por tag blob.
- Definir Política de Imutabilidade (i): Válido apenas para o seguinte tipo de recurso de objeto: blob. Permite definir/excluir política de imutabilidade e retenção legal em um blob.
SignedProtocol (spr) Opcional. Especifica o protocolo permitido para uma solicitação feita com a conta SAS. Os valores possíveis são HTTPS e HTTP (https,http) ou HTTPS apenas (https). O valor predefinido é https,http.

Apenas HTTP não é um valor permitido.

Para obter mais informações sobre o SAS da conta, consulte: Criar uma conta SAS

Nota

O Key Vault ignora parâmetros vitalícios como 'Signed Expiry', 'Signed Start' e parâmetros introduzidos após a versão 2018-03-28

Definir definição de assinatura de acesso compartilhado no Cofre da Chave

Use o comando Azure CLI az keyvault storage sas-definition create , passando o modelo de definição SAS da etapa anterior para o --template-uri parâmetro, para criar uma definição de assinatura de acesso compartilhado. Você pode fornecer o nome de sua escolha para o -n parâmetro.

az keyvault storage sas-definition create --vault-name <YourKeyVaultName> --account-name <YourStorageAccountName> -n <YourSASDefinitionName> --validity-period P2D --sas-type account --template-uri <sasDefinitionTemplate>

Verificar a definição de assinatura de acesso compartilhado

Você pode verificar se a definição de assinatura de acesso compartilhado foi armazenada em seu cofre de chaves usando o comando Azure CLI az keyvault storage sas-definition show .

Agora você pode usar o comando az keyvault storage sas-definition show e a id propriedade para exibir o conteúdo desse segredo.

az keyvault storage sas-definition show --id https://<YourKeyVaultName>.vault.azure.net/storage/<YourStorageAccountName>/sas/<YourSASDefinitionName>

Próximos passos