Usar o Azure Key Vault para proteger os segredos no tempo de produção
Dica
Esse conteúdo é um trecho do eBook da Arquitetura de Microsserviços do .NET para os Aplicativos .NET em Contêineres, disponível no .NET Docs ou como um PDF para download gratuito que pode ser lido offline.
Os segredos armazenados como variáveis de ambiente ou armazenados pela ferramenta Secret Manager ainda são armazenados localmente e descriptografados no computador. Uma opção mais segura para armazenar segredos é o Azure Key Vault, que oferece um local seguro e central para armazenar chaves e segredos.
O pacote Azure.Extensions.AspNetCore.Configuration.Secrets permite que um aplicativo do ASP.NET Core leia informações de configuração do Azure Key Vault. Para começar a usar os segredos de um Azure Key Vault, siga estas etapas:
Registre seu aplicativo como um aplicativo do Azure AD. (O acesso aos cofres de chaves é gerenciado pelo Azure AD.) Isso pode ser feito por meio do portal de gerenciamento do Azure.\
Ou, se você desejar que seu aplicativo seja autenticado usando um certificado em vez de um segredo do cliente ou senha, use o cmdlet do PowerShell New-AzADApplication. O certificado que você registrar com o Azure Key Vault precisa apenas de sua chave pública. O aplicativo usará a chave privada.
Permita que o aplicativo registrado acesse o Key Vault criando uma entidade de serviço. É possível fazer isso usando os seguintes comandos do PowerShell:
$sp = New-AzADServicePrincipal -ApplicationId "<Application ID guid>" Set-AzKeyVaultAccessPolicy -VaultName "<VaultName>" -ServicePrincipalName $sp.ServicePrincipalNames[0] -PermissionsToSecrets all -ResourceGroupName "<KeyVault Resource Group>"
Inclua o cofre de chaves como uma fonte de configuração em seu aplicativo chamando o método de extensão AzureKeyVaultConfigurationExtensions.AddAzureKeyVault ao criar uma instância IConfigurationRoot.
Observe que a chamada de AddAzureKeyVault
requer a ID do aplicativo que foi registrada e permitiu acesso ao Key Vault nas etapas anteriores. Ou primeiro você pode executar o comando da CLI do Azure: az login
, usando uma sobrecarga de AddAzureKeyVault
que usa um DefaultAzureCredential no lugar do cliente.
Importante
É recomendável que você registre o Azure Key Vault como o último provedor de configuração, para que ele possa substituir os valores de configuração dos provedores anteriores.
Recursos adicionais
Como usar o Cofre da Chave para proteger segredos do aplicativo
https://learn.microsoft.com/azure/architecture/multitenant-identityArmazenamento seguro dos segredos do aplicativo durante o desenvolvimento
https://learn.microsoft.com/aspnet/core/security/app-secretsConfigurando a proteção de dados
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/overviewGerenciamento e tempo de vida de chaves da proteção de dados no ASP.NET Core
https://learn.microsoft.com/aspnet/core/security/data-protection/configuration/default-settings