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.
A melhor forma de autenticar nos serviços do Azure é com uma identidade gerida, mas alguns cenários ainda exigem chaves de acesso ou palavras-passe. Altere essas credenciais regularmente para reduzir o impacto de uma fuga de dados.
Este tutorial mostra como automatizar a rotação periódica de segredos para bases de dados e serviços que utilizam dois conjuntos de credenciais de autenticação. Para uma visão geral da autorrotação entre diferentes tipos de ativos, consulte Compreender a autorrotação no Azure Key Vault.
Especificamente, este tutorial roda as chaves de conta do Armazenamento do Azure que estão armazenadas no Azure Key Vault como segredos. Utiliza uma função que é ativada por uma notificação do Azure Event Grid.
Importante
Para Armazenamento do Azure, prefira autorização Microsoft Entra ID com identidade gerida em vez de chaves de conta partilhadas. Quando a conformidade permitir, desative a autorização de Chave Partilhada na conta de armazenamento e elimine completamente a necessidade de rotação de chaves. Use o padrão neste tutorial apenas quando uma carga de trabalho requer uma chave de conta de armazenamento ou uma cadeia de ligação.
Aqui está a solução de rotação descrita neste tutorial:
Nesta solução, o Azure Key Vault armazena cada chave de acesso à conta de armazenamento como uma versão do mesmo segredo, alternando entre a chave primária e secundária em versões sucessivas. Quando uma chave de acesso é armazenada como a versão mais recente do segredo, a chave alternativa é regenerada e adicionada ao Key Vault como a nova versão mais recente. Este design dá à aplicação um ciclo completo de rotação para captar a chave recém-regenerada.
- Trinta dias antes da data de expiração de um segredo, o Key Vault publica o evento de expiração iminente no Event Grid.
- A Grade de Eventos verifica as assinaturas de eventos e usa HTTP POST para chamar o ponto de extremidade do aplicativo de função inscrito no evento.
- O aplicativo de função identifica a chave alternativa (não a mais recente) e chama a conta de armazenamento para regenerá-la.
- A aplicação de funções adiciona a chave regenerada ao Azure Key Vault como a nova versão do segredo.
Pré-requisitos
- Uma subscrição do Azure. Crie um gratuitamente.
- Azure Cloud Shell. Este tutorial utiliza o portal Cloud Shell com o ambiente PowerShell.
- Um cofre de chaves do Azure.
- Duas contas de armazenamento Azure.
Observação
Rodar uma chave de conta de armazenamento partilhado revoga qualquer assinatura de acesso partilhado (SAS) ao nível da conta gerada a partir dessa chave. Após a rotação, regenere os tokens SAS ao nível da conta para evitar interrupções nas aplicações.
Se não tiver um cofre de chaves existente e duas contas de armazenamento, use este link de implementação:
Em Grupo de recursos, selecione Criar novo. Nomeie o grupo rotação do cofre e, em seguida, selecione OK.
Selecione Verificar + criar.
Selecione Criar.
Agora tens um cofre de chaves e duas contas de armazenamento. Verifique esta configuração no CLI do Azure ou Azure PowerShell:
az resource list -o table -g vaultrotation
O resultado é semelhante ao seguinte resultado:
Name ResourceGroup Location Type Status
----------------------- -------------------- ---------- --------------------------------- --------
vaultrotation-kv vaultrotation westus Microsoft.KeyVault/vaults
vaultrotationstorage vaultrotation westus Microsoft.Storage/storageAccounts
vaultrotationstorage2 vaultrotation westus Microsoft.Storage/storageAccounts
Criar e implantar a função de rotação de teclas
De seguida, crie uma aplicação de funções com uma identidade gerida atribuída pelo sistema, juntamente com os outros componentes necessários, e implemente a função de rotação para as chaves da conta de armazenamento.
A função de rotação requer os seguintes componentes e configuração:
- Um plano do Serviço de Aplicações do Azure.
- Uma conta de armazenamento para gerir os acionadores da aplicação de funções.
- Uma atribuição de funções no Azure que permite à aplicação de funções aceder a segredos no cofre de chaves.
- A Função de Serviço de Operador da Chave da Conta de Armazenamento atribuída à aplicação de funções para que possa aceder às chaves de acesso da conta de armazenamento.
- Uma função de rotação de chaves com um acionador do Event Grid e um acionador HTTP (para rotação a pedido).
- Uma subscrição de evento da Event Grid para o evento SecretNearExpiry.
Selecione o link de implementação do modelo Azure:
Na lista Grupo de recursos , selecione vaultrotation.
Em Storage Account RG, introduza o nome do grupo de recursos onde a conta de armazenamento se encontra. Mantém o padrão
[resourceGroup().name]se a conta de armazenamento estiver no mesmo grupo de recursos que a função de rotação.Em Nome da Conta de Armazenamento, introduza o nome da conta de armazenamento cujas chaves de acesso pretende rodar. Mantenha a predefinição
[concat(resourceGroup().name, 'storage')]se utilizar a conta de armazenamento em Pré-requisitos.No Key Vault RG, introduza o nome do grupo de recursos onde o key vault está localizado. Mantenha a predefinição
[resourceGroup().name]se o cofre de chaves estiver no mesmo grupo de recursos que a função de rotação.Em Key Vault Name, introduza o nome do Key vault. Mantenha a predefinição
[concat(resourceGroup().name, '-kv')]se utilizar o cofre de chaves em Pré-requisitos.Em Tipo de Plano de Serviço de Aplicação, selecione o plano de alojamento. O Plano Premium só é necessário quando o cofre de chaves está protegido por uma firewall.
No campo Nome da aplicação de funções, introduza o nome da aplicação de funções.
Em Nome Secreto, introduza o nome secreto que armazena as chaves de acesso.
Na URL do repositório, introduza a localização do código da função no GitHub:
https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git.Selecione Verificar + criar.
Selecione Criar.
Quando a implementação estiver concluída, tem uma conta de armazenamento, uma farm de servidores, uma aplicação de funções e um recurso do Application Insights:
Observação
Este modelo ARM utiliza a implantação por controlo de código-fonte do App Service (Kudu) para obter o código da função a partir do GitHub. Para uma carga de trabalho de produção, recomendamos uma implantação baseada em pacotes, como func azure functionapp publish ou implementação zip com WEBSITE_RUN_FROM_PACKAGE, em vez disso. Se a implementação falhar, selecione Redeploy para tentar novamente.
Os modelos de implementação e o código para a função de rotação encontram-se em Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.
Adicionar as chaves de acesso à conta de armazenamento aos segredos do Key Vault
Primeiro, atribui a ti próprio o papel de Oficial de Segredos do Key Vault para que possas gerir segredos no cofre:
az role assignment create --role "Key Vault Secrets Officer" --assignee <email-address-of-user> --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/vaultrotation-kv
Agora pode criar um segredo cujo valor é uma chave de acesso à conta de armazenamento. Juntamente com o valor, adiciona o ID do recurso da conta de armazenamento, o período de validade secreta e o ID da chave como etiquetas para que a função de rotação possa regenerar a chave na conta de armazenamento.
Determine o identificador do recurso da conta de armazenamento. É a propriedade id:
az storage account show -n vaultrotationstorage
Liste as chaves de acesso da conta de armazenamento para obter os valores de chave:
az storage account keys list -n vaultrotationstorage
Adicione o segredo ao cofre de chaves com um período de validade de 60 dias e, (para demonstração), com data de expiração definida para amanhã, para desencadear a rotação imediatamente. Execute este comando com os valores recuperados para key1Value e storageAccountResourceId:
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey --vault-name vaultrotation-kv --value <key1-value> --tags "CredentialId=key1" "ProviderAddress=<storage-account-resource-id>" "ValidityPeriodDays=60" --expires $tomorrowDate
Este segredo desencadeia um evento SecretNearExpiry em poucos minutos, o que, por sua vez, faz com que a função proceda à rotação do segredo, com uma expiração definida para 60 dias depois. Nessa configuração, o evento SecretNearExpiry é acionado a cada 30 dias (30 dias antes da expiração), e a função de rotação alterna entre key1 e key2.
Verifica se as chaves de acesso se regeneraram recuperando a chave da conta de armazenamento e o segredo do Key Vault, e depois comparando-as.
Use este comando para obter as informações secretas:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey
Observe que CredentialId é atualizado para o alternativo keyName e que value é regenerado:
Recupere as chaves de acesso para comparar os valores:
az storage account keys list -n vaultrotationstorage
Note que o valor da chave corresponde ao segredo no cofre de chaves:
Use uma função de rotação existente para múltiplas contas de armazenamento
Pode reutilizar a mesma aplicação Function App para efetuar a rotação das chaves de mais de uma conta de armazenamento.
Para adicionar as chaves de outra conta de armazenamento a uma função de rotação existente, precisa de:
- O Papel de Operador de Serviço da Chave de Conta de Armazenamento atribuído à aplicação de funções para que possa aceder às chaves de acesso da conta de armazenamento.
- Uma subscrição de evento da Event Grid para o evento SecretNearExpiry.
Selecione o link de implementação do modelo Azure:
Na lista Grupo de recursos , selecione vaultrotation.
Em Storage Account RG, introduza o nome do grupo de recursos onde a conta de armazenamento se encontra. Mantém o padrão
[resourceGroup().name]se a conta de armazenamento estiver no mesmo grupo de recursos que a função de rotação.Em Nome da Conta de Armazenamento, introduza o nome da conta de armazenamento cujas chaves de acesso pretende alternar.
No Key Vault RG, introduza o nome do grupo de recursos onde o key vault está localizado. Mantenha a predefinição
[resourceGroup().name]se o cofre de chaves estiver no mesmo grupo de recursos que a função de rotação.Em Key Vault Name, introduza o nome do Key vault.
Em Nome da Aplicação de Função, introduza o nome da Aplicação de Função.
Em Nome Secreto, introduza o nome secreto que armazena as chaves de acesso.
Selecione Verificar + criar.
Selecione Criar.
Adicionar chave de acesso à conta de armazenamento aos segredos do Key Vault
Determine o identificador do recurso da conta de armazenamento. Você pode encontrar este valor na propriedade id.
az storage account show -n vaultrotationstorage2
Liste as chaves de acesso da conta de armazenamento para obter o valor key2:
az storage account keys list -n vaultrotationstorage2
Adicione o segredo ao cofre de chaves com um período de validade de 60 dias e, (para demonstração), uma data de expiração para amanhã, para desencadear a rotação imediatamente. Execute este comando com os valores recuperados para key2Value e storageAccountResourceId:
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey2 --vault-name vaultrotation-kv --value <key2-value> --tags "CredentialId=key2" "ProviderAddress=<storage-account-resource-id>" "ValidityPeriodDays=60" --expires $tomorrowDate
Use este comando para obter as informações secretas:
az keyvault secret show --vault-name vaultrotation-kv --name storageKey2
Observe que CredentialId é atualizado para o alternativo keyName e que value é regenerado:
Recupere as chaves de acesso para comparar os valores:
az storage account keys list -n vaultrotationstorage2
Repare que o valor da chave corresponde ao segredo no cofre de chaves:
Desativar a rotação de um segredo
Para desativar a rotação de um segredo, elimine a subscrição do Event Grid para esse segredo. Utilize o cmdlet Remove-AzEventGridSubscription do Azure PowerShell ou o comando az eventgrid event-subscription delete da CLI do Azure.
Use IA para personalizar a função de rotação para outros serviços
Este tutorial demonstra a rotação secreta para contas do Armazenamento do Azure, mas pode adaptar a função de rotação para outros serviços do Azure que usam credenciais duplas. O GitHub Copilot pode ajudar-te a modificar o código da função de rotação do PowerShell para funcionar com o teu serviço.
I'm using the Azure Key Vault dual-credential secret rotation tutorial for Storage accounts. Help me modify the PowerShell rotation function to work with Azure Cosmos DB instead. The function should:
1. Connect to Cosmos DB and regenerate the secondary key
2. Store the new key in Key Vault as a new secret version
3. Alternate between primary and secondary keys on each rotation
Show me the changes needed to the PowerShell function code, including the correct Cosmos DB PowerShell cmdlets.
O GitHub Copilot é alimentado por IA, por isso surpresas e erros são possíveis. Para mais informações, consulte Copilot FAQs.