Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A melhor forma de autenticar-se nos serviços Azure é usando uma managed identity, mas há alguns cenários em que isso não é uma opção. Nesses casos, são utilizadas chaves de acesso ou palavras-passe. Você deve alternar as chaves de acesso e senhas com freqüência.
Este tutorial mostra como automatizar a rotação periódica de segredos para bancos de dados e serviços que usam dois conjuntos de credenciais de autenticação. Para obter uma visão geral abrangente dos conceitos e benefícios da rotação automática em diferentes tipos de ativos, consulte Noções básicas sobre rotação automática no Cofre de Chaves do Azure.
Especificamente, este tutorial mostra como girar chaves de conta do Armazenamento do Azure armazenadas no Cofre de Chaves do Azure como segredos. Você usará uma função acionada pela notificação da Grade de Eventos do Azure.
Observação
Para serviços de conta de armazenamento, recomenda-se o uso do Microsoft Entra ID para autorizar solicitações. Para obter mais informações, consulte Autorizar acesso a blobs usando o Microsoft Entra ID. Existem serviços que requerem cadeias de conexão de contas de armazenamento com chaves de acesso. Para esse cenário, recomendamos esta solução.
Aqui está a solução de rotação descrita neste tutorial:
Nesta solução, o Azure Key Vault armazena chaves de acesso individuais da conta de armazenamento como versões do mesmo segredo, alternando entre a chave primária e secundária nas versões subsequentes. Quando uma chave de acesso é armazenada na versão mais recente do segredo, a chave alternativa é regenerada e adicionada ao Cofre da Chave como a nova versão mais recente do segredo. A solução fornece todo o ciclo de rotação da aplicação para atualizar a chave regenerada mais recente.
- Trinta dias antes da data de expiração de um segredo, o Key Vault publica o evento de quase expiração na Grade de Eventos.
- O Event Grid analisa as subscrições de eventos e utiliza HTTP POST para aceder ao endpoint da aplicação de funções que está subscrito ao evento.
- O aplicativo de função identifica a chave alternativa (não a mais recente) e chama a conta de armazenamento para regenerá-la.
- O aplicativo de função adiciona a nova chave regenerada ao Cofre de Chaves do Azure como a nova versão do segredo.
Pré-requisitos
- Uma assinatura do Azure. Crie um gratuitamente.
- Azure Cloud Shell. Este tutorial está usando o portal Cloud Shell com PowerShell env
- Azure Key Vault.
- Duas contas de armazenamento do Azure.
Observação
A rotação da chave da conta de armazenamento compartilhado revoga a assinatura de acesso compartilhado (SAS) no nível da conta gerada com base nessa chave. Após a rotação da chave da conta de armazenamento, você deve regenerar os tokens SAS no nível da conta para evitar interrupções nos aplicativos.
Você pode usar este link de implantação se não tiver um cofre de chaves existente e contas de armazenamento existentes:
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 você terá um cofre de chaves e duas contas de armazenamento. Você pode verificar essa configuração na CLI do Azure ou no Azure PowerShell executando este comando:
- da CLI do Azure
- Azure PowerShell
az resource list -o table -g vaultrotation
O resultado será semelhante a esta saída:
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
Em seguida, você criará um aplicativo de função com uma identidade gerenciada pelo sistema, além de outros componentes necessários. Você também implantará a função de rotação para as chaves da conta de armazenamento.
A função de rotação do aplicativo requer os seguintes componentes e configuração:
- Um plano do Azure App Service
- Uma conta de armazenamento para controlar disparadores de aplicações de funções
- Uma política de acesso para acessar segredos no Cofre da Chave
- A função do Serviço de Operador de Chave da Conta de Armazenamento é atribuída à aplicação de função para que esta possa aceder às chaves de acesso da conta de armazenamento.
- Uma função de rotação de chave com um gatilho de evento e um gatilho HTTP (rotação sob demanda)
- Uma subscrição de evento da Grade de Eventos para o evento SecretNearExpiry
Selecione o link de implantação do modelo do Azure:
Na lista Grupo de recursos , selecione vaultrotation.
Na caixa RG da Conta de Armazenamento , insira o nome do grupo de recursos no qual sua conta de armazenamento está localizada. Mantenha o valor padrão [resourceGroup().name] se sua conta de armazenamento já estiver localizada no mesmo grupo de recursos em que você implantará a função de rotação de chaves.
Na caixa Nome da Conta de Armazenamento , digite o nome da conta de armazenamento que contém as chaves de acesso a serem giradas. Mantenha o valor padrão [concat(resourceGroup().name, 'storage')] se você usar a conta de armazenamento criada em Pré-requisitos.
Na caixa Key Vault RG , insira o nome do grupo de recursos no qual o cofre de chaves está localizado. Mantenha o valor padrão [resourceGroup().name] se o cofre de chaves já existir no mesmo grupo de recursos em que você implantará a função de rotação de chaves.
Na caixa Nome do Cofre da Chave , digite o nome do Cofre da Chave. Mantenha o valor padrão [concat(resourceGroup().name, '-kv')] se você usar o cofre de chaves criado em Pré-requisitos.
Na caixa Tipo de Plano do Serviço de Aplicativo , selecione plano de hospedagem. O Plano Premium é necessário apenas quando o cofre das chaves está protegido por firewall.
Na caixa Nome do aplicativo de função , digite o nome do aplicativo de função.
Na caixa Nome do Segredo , introduza o nome do segredo onde irá armazenar as chaves de acesso.
Na caixa URL do repositório , digite o local do GitHub do código da função. Neste tutorial, você pode usar https://github.com/Azure-Samples/KeyVault-Rotation-StorageAccountKey-PowerShell.git.
Selecione Verificar + criar.
Selecione Criar.
Depois de concluir as etapas anteriores, você terá uma conta de armazenamento, um farm de servidores, um aplicativo de função e o Application Insights. Quando a implantação estiver concluída, você verá esta página:
Observação
Se encontrar uma falha, você pode selecionar Reimplantar para concluir a implantação dos componentes.
Você pode encontrar modelos de implantação e código para a função de rotação em Exemplos do Azure.
Adicionar as chaves de acesso da conta de armazenamento aos segredos do Key Vault
Primeiro, defina a sua política de acesso para conceder permissões de gerenciamento de segredos ao principal de utilizador:
- da CLI do Azure
- Azure PowerShell
az keyvault set-policy --upn <email-address-of-user> --name vaultrotation-kv --secret-permissions set delete get list
Agora você pode criar um novo segredo com uma chave de acesso da conta de armazenamento como seu valor. Você também precisará do ID do recurso da conta de armazenamento, do período de validade do segredo e do ID da chave para adicionar ao segredo, para que a função de rotação da chave possa regenerar a chave na conta de armazenamento.
Determine o identificador do recurso da conta de armazenamento. Você pode encontrar este valor na propriedade id.
- da CLI do Azure
- Azure PowerShell
az storage account show -n vaultrotationstorage
Liste as chaves de acesso da conta de armazenamento para obter os valores de chave:
- da CLI do Azure
- Azure PowerShell
az storage account keys list -n vaultrotationstorage
Adicione o segredo ao cofre de chaves com um período de validade de 60 dias, ID de recurso da conta de armazenamento, e, para fins de demonstração, para acionar a rotação imediatamente, defina a data de expiração para amanhã. Execute este comando, usando os valores recuperados para key1Value e storageAccountResourceId:
- da CLI do Azure
- Azure PowerShell
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey --vault-name vaultrotation-kv --value <key1Value> --tags "CredentialId=key1" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Este segredo irá acionar o evento SecretNearExpiry dentro de alguns minutos. Este evento, por sua vez, acionará a função para renovar o segredo com a expiração definida para 60 dias. Nessa configuração, o evento 'SecretNearExpiry' seria acionado a cada 30 dias (30 dias antes do vencimento) e a função de rotação alternaria a rotação entre key1 e key2.
Você pode verificar se as chaves de acesso foram regeneradas recuperando a chave da conta de armazenamento e o segredo do Cofre da Chave e compará-las.
Use este comando para obter as informações secretas:
- da CLI do Azure
- Azure PowerShell
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:
- da CLI do Azure
- Azure PowerShell
az storage account keys list -n vaultrotationstorage
Observe que value da chave é igual ao segredo no cofre de chaves.
Usar a função de rotação existente para várias contas de armazenamento
Você pode reutilizar o mesmo aplicativo de função para girar teclas para várias contas de armazenamento.
Para adicionar chaves de conta de armazenamento a uma função existente para rotação, você precisa:
- A função de Serviço de Operador de Chave de Conta de Armazenamento atribuída ao aplicativo de função para que ele possa acessar as chaves de acesso da conta de armazenamento.
- Uma subscrição de evento da Event Grid para o evento SecretNearExpiry.
Selecione o link de implantação do modelo do Azure:
Na lista Grupo de recursos , selecione vaultrotation.
Na caixa RG da Conta de Armazenamento , insira o nome do grupo de recursos no qual sua conta de armazenamento está localizada. Mantenha o valor padrão [resourceGroup().name] se sua conta de armazenamento já estiver localizada no mesmo grupo de recursos em que você implantará a função de rotação de chaves.
Na caixa Nome da Conta de Armazenamento , digite o nome da conta de armazenamento que contém as chaves de acesso a serem giradas.
Na caixa Key Vault RG , insira o nome do grupo de recursos no qual o cofre de chaves está localizado. Mantenha o valor padrão [resourceGroup().name] se o cofre de chaves já existir no mesmo grupo de recursos em que você implantará a função de rotação de chaves.
Na caixa Nome do Cofre da Chave , digite o nome do Cofre da Chave.
Na caixa Nome do aplicativo de função , digite o nome do aplicativo de função.
Na caixa Nome do Segredo , introduza o nome do segredo onde irá armazenar as chaves de acesso.
Selecione Verificar + criar.
Selecione Criar.
Adicionar chave de acesso da conta de armazenamento aos segredos do Cofre da Chave
Determine o identificador do recurso da conta de armazenamento. Você pode encontrar este valor na propriedade id.
- da CLI do Azure
- Azure PowerShell
az storage account show -n vaultrotationstorage2
Liste as chaves de acesso da conta de armazenamento para obter o valor key2:
- da CLI do Azure
- Azure PowerShell
az storage account keys list -n vaultrotationstorage2
Adicione o segredo ao cofre de chaves com um período de validade de 60 dias, ID de recurso da conta de armazenamento, e, para fins de demonstração, para acionar a rotação imediatamente, defina a data de expiração para amanhã. Execute este comando, usando os valores recuperados para key2Value e storageAccountResourceId:
- da CLI do Azure
- Azure PowerShell
tomorrowDate=$(date -u -d "+1 day" +"%Y-%m-%dT%H:%M:%SZ")
az keyvault secret set --name storageKey2 --vault-name vaultrotation-kv --value <key2Value> --tags "CredentialId=key2" "ProviderAddress=<storageAccountResourceId>" "ValidityPeriodDays=60" --expires $tomorrowDate
Use este comando para obter as informações secretas:
- da CLI do Azure
- Azure PowerShell
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:
- da CLI do Azure
- Azure PowerShell
az storage account keys list -n vaultrotationstorage
Observe que value da chave é igual ao segredo no cofre de chaves.
Desativar a rotação para segredo
Você pode desativar a rotação de um segredo simplesmente eliminando a assinatura do Event Grid desse segredo. Utilize o cmdlet Remove-AzEventGridSubscription do Azure PowerShell ou o comando az event grid event--subscription delete do Azure CLI.
Funções de rotação do Cofre de Chaves para dois conjuntos de credenciais
Modelo de funções de rotação para dois conjuntos de credenciais e várias funções prontas a utilizar:
Observação
Essas funções de rotação são criadas por um membro da comunidade e não pela Microsoft. As funções da comunidade não são suportadas em nenhum programa ou serviço de suporte da Microsoft e são disponibilizadas no estado em que se encontram sem qualquer tipo de garantia.
Próximos passos
- Rotação de segredos para um conjunto único de credenciais
- Noções básicas sobre rotação automática no Azure Key Vault
- Monitorizar o Azure Key Vault com o Azure Event Grid
- Create your first function in the Azure portal (Criar a sua primeira função no portal do Azure)
- Receber emails quando um segredo do Cofre de Chaves for alterado
- Esquema de eventos da Grade de Eventos do Azure para o Azure Key Vault