Compartilhar via


Gerenciar chaves de conta de armazenamento com o Key Vault e a CLI do Azure (herdado)

Importante

O Key Vault de Chaves de Conta de Armazenamento Gerenciadas (herdado) tem suporte como está sem mais atualizações planejadas. Somente o SAS de conta tem suporte com definições SAS assinadas versão do serviço de armazenamento no máximo no máximo em 28-03-2018.

Importante

O suporte para chaves de conta de armazenamento gerenciadas na CLI do Azure foi removido na versão 2.54. Use a CLI do Azure versão 2.53.1 ou anterior para os comandos neste tutorial.

Importante

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

Uma conta de armazenamento do Azure usa credenciais compostas por um nome de conta e uma chave. A chave é gerada automaticamente e serve como uma senha, em vez de como uma chave de criptografia. O Key Vault gerencia as chaves de conta de armazenamento regenerando-as periodicamente na conta de armazenamento e fornece tokens de Assinatura de Acesso Compartilhado para acesso delegado aos recursos na sua conta de armazenamento.

Use o recurso de chave de conta de armazenamento gerenciada do Key Vault para listar (sincronizar) as chaves com uma conta de armazenamento do Azure e regenerar (girar) as chaves periodicamente. Gerencie as chaves de contas de armazenamento e contas de armazenamento Clássicas.

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

  • Os valores de chaves nunca são retornados em resposta a um chamador.
  • Somente o Key Vault deve gerenciar suas chaves de conta de armazenamento. Não gerencie as chaves por conta própria e evite interferir nos processos do Key Vault.
  • Um só objeto do Key Vault deve gerenciar as chaves de conta de armazenamento. Não permita o gerenciamento de chaves em vários objetos.
  • Regenere as chaves usando apenas o Key Vault. Não regenere manualmente as chaves da conta de armazenamento.

Importante

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

ID do aplicativo da entidade 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 baseado em funções do Azure (Azure RBAC).

O Key Vault é um aplicativo da Microsoft que é pré-registrado em todos os locatários do Microsoft Entra. O Key Vault é registrado na mesma ID do Aplicativo em cada nuvem do Azure.

Locatários Nuvem ID do aplicativo
ID do Microsoft Entra Azure Governamental 7e7c393b-45d0-48b1-a35e-2905ddf8183c
ID do Microsoft Entra Público do Azure cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Outro Qualquer cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Pré-requisitos

Para concluir este guia, primeiro, você precisará concluir as seguintes etapas:

Gerenciar chaves de conta de armazenamento

Conectar-se à sua conta do Azure

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

az login

Permitir acesso ao Key Vault na sua conta de armazenamento

Use o comando az role assignment create da CLI do Azure para permitir o acesso do Key Vault à sua conta de armazenamento. Forneça ao comando os seguintes valores de parâmetros:

  • --role: transmita a função do Azure "Função do Serviço de Operador da Chave de Conta de Armazenamento". Essa função limita o escopo de acesso à sua conta de armazenamento. Para uma conta de armazenamento clássica, transmita a "Função do Serviço de Operador da Chave de Conta de Armazenamento Clássica".
  • --assignee: transmita o valor "https://vault.azure.net"», que é a URL do Key Vault na nuvem pública do Azure Key Vault. (Para a nuvem do Azure Government, use '--assignee-object-id'; confira ID do aplicativo da entidade de serviço).
  • --scope: transmita a ID do recurso da conta de armazenamento, que está no formato /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Localize sua ID de assinatura usando o comando az account list da CLI do Azure. Localize o nome da conta de armazenamento e o grupo de recursos da conta de armazenamento usando o comando az storage account list da CLI do Azure.
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ê a sua permissão de conta de usuário para as contas de armazenamento gerenciadas

Use o cmdlet az keyvault-set-policy da CLI do Azure para atualizar a política de acesso ao Key Vault e conceder permissões da 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

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

Criar uma conta de armazenamento gerenciada no Key Vault

Crie uma conta de armazenamento gerenciada do Key Vault usando o comando az keyvault storage da CLI do Azure. Defina um período de regeneração de 30 dias. Quando chegar o momento de girar a chave, o Key Vault vai regenerar a chave que não está ativa e definir a chave recém-criada como ativa. Somente uma das chaves é usada para emitir tokens SAS em um dado momento; essa é a chave ativa. Forneça ao comando os seguintes valores de parâmetros:

  • --vault-name: transmita o nome do cofre de chaves. Para encontrar o nome do cofre de chaves, use o comando az keyvault list da CLI do Azure.
  • -n: transmita o nome da conta de armazenamento. Para encontrar o nome da sua conta de armazenamento, use o comando az storage account list da CLI do Azure.
  • --resource-id: transmita a ID do recurso da conta de armazenamento, que está no formato /subscriptions/<subscriptionID>/resourceGroups/<StorageAccountResourceGroupName>/providers/Microsoft.Storage/storageAccounts/<YourStorageAccountName>. Localize sua ID de assinatura usando o comando az account list da CLI do Azure. Localize o nome da conta de armazenamento e o grupo de recursos da conta de armazenamento usando o comando az storage account list da CLI do Azure.
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

Solicite também ao Key Vault que gere tokens de Assinatura de Acesso Compartilhado. Uma assinatura de acesso compartilhado fornece acesso delegado aos recursos da sua conta de armazenamento. Você pode permitir acesso aos clientes aos recursos da sua conta de armazenamento sem compartilhar as chaves de conta. Uma Assinatura de Acesso Compartilhado oferece uma forma segura de compartilhar seus recursos de armazenamento sem comprometer suas chaves de conta.

Os comandos desta seção executam as seguintes ações:

  • Criam a definição <YourSASDefinitionName> de Assinatura de Acesso Compartilhado de uma conta. A definição é feita em uma conta de armazenamento gerenciada <YourStorageAccountName> do Key Vault no do cofre de chaves <YourKeyVaultName>.
  • Criam uma definição de Assinatura de Acesso Compartilhado de armazenamento gerenciado do Key Vault no cofre. A definição tem o URI do modelo do token de Assinatura de Acesso Compartilhado que foi criada. A definição tem o tipo de Assinatura de Acesso Compartilhado account e é válida por N dias.
  • Confirmam se a Assinatura de Acesso Compartilhado foi salva no seu cofre de chaves como um segredo.

Definir uma definição de Assinatura de Acesso Compartilhado

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

Exemplo de modelo de definição de SAS:

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

Esse modelo será transmitido para o parâmetro --template-uri na próxima etapa.

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

Parâmetro da Consulta de SAS Descrição
SignedVersion (sv) Obrigatórios. Especifica a versão do serviço de armazenamento assinado a ser usada para autorizar solicitações feitas com essa SAS de conta. Deve ser definido como a versão de 05-04-2015 ou posterior. Key Vault dá suporte a versões de no máximo 28-03-2018
SignedServices (ss) Obrigatórios. Especifica os serviços assinados acessíveis com a SAS da conta. Os 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 arquivo.
SignedResourceTypes (srt) Obrigatórios. Especifica os tipos de recursos assinados que podem ser acessados com a SAS da conta.

- Serviço (s): Acesso a APIs no nível do serviço (por exemplo, Obter/Definir Propriedades do Serviço, Obter Estatísticas de Serviço, Listar Contêineres/Filas/Tabelas/Compartilhamentos)
- Contêiner (c): Acesso para APIS no nível contêiner (por exemplo, Criar/Excluir Contêiner, Criar/Excluir Fila, Criar/Excluir Tabela, Criar/Excluir Compartilhamento e Listar Blobs/Arquivos e Diretórios)
- Objeto (o): Acesso a APIs no nível do objeto para blobs, mensagens de fila, entidades de tabela e arquivos(por exemplo, Colocar Blob, Entidade de Consulta, Obter Mensagens, Criar Arquivo etc.)

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

- Leitura (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.
- Gravação (w): válido para todos os tipos de recursos assinados (Serviço, Contêiner e Objeto). Permite permissões de gravação para o tipo de recurso especificado.
– Excluir (d): válido para tipos de recurso contêiner e objeto, exceto para mensagens de fila.
– Exclusão permanente (y): válido apenas para o tipo de recurso de objeto do Blob.
- Lista (l): válido somente para tipos de recursos de serviço e de contêiner.
- Adicionar (a): Válido somente para os seguintes tipos de recursos de objeto: mensagens de fila, entidades de tabela e blobs de acréscimo.
- Criar (c): válido somente para os seguintes tipos de recursos de objeto: blobs e arquivos. Os usuários podem criar novos blobs ou arquivos, mas podem não substituir blobs ou arquivos existentes.
- Atualizar (u): válido somente 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.
- Marca (t): válido apenas para o seguinte tipo de recurso de objeto: blobs. Permite operações de marca de blob.
- Filtro (f): válido apenas para o seguinte tipo de recurso de objeto: blob. Permite filtragem por marca de blob.
- Definir Política de Imutabilidade (i): válida apenas para o seguinte tipo de recurso de objeto: blob. Permite definir/excluir a política de imutabilidade e a retenção legal em um blob.
SignedProtocol (spr) Opcional. Especifica os protocolos permitidos para uma solicitação feita com a conta de SAS. Os valores possíveis são HTTPS e HTTP (https,http) ou somente HTTPS (https). O valor padrão é https,http.

Somente HTTP não é um valor permitido.

Para obter mais informações sobre a SAS de conta, consulte Criar uma SAS de conta

Observação

O Key Vault ignora parâmetros de tempo de vida como 'Expiração Assinada', 'Início Assinado' e parâmetros introduzidos após a versão de 28-03-2018

Definir a definição de assinatura de acesso compartilhado em Key Vault

Use o comando az keyvault storage sas-definition create da CLI do Azure transmitindo o modelo de definição SAS para a saída da etapa anterior para o parâmetro --template-uri, a fim de criar uma definição de Assinatura de Acesso Compartilhado. Você pode fornecer o nome de sua escolha para o parâmetro -n.

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

Confirme a definição de Assinatura de Acesso Compartilhado

Confirme se a definição de Assinatura de Acesso Compartilhado foi armazenada no cofre de chaves usando o comando az keyvault storage sas-definition show da CLI do Azure.

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

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

Próximas etapas