Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Key Vault fornece uma maneira de armazenar credenciais e outros segredos com maior segurança. Mas o seu código precisa se autenticar ao Key Vault para recuperá-las. Identidades gerenciadas para recursos Azure resolvem esse problema dando aos serviços de Azure uma identidade gerenciada automaticamente em Microsoft Entra ID. Seu código usa essa identidade para autenticar em qualquer serviço que dê suporte à autenticação Microsoft Entra, incluindo Key Vault, sem inserir credenciais no código.
Neste tutorial, você cria e implanta um aplicativo Web Azure para Serviço de Aplicativo do Azure e, em seguida, usa uma identidade gerenciada para autenticar o aplicativo em um cofre de chaves usando a biblioteca de clientes Azure Key Vault secreta para .NET e o CLI do Azure. Os mesmos princípios se aplicam se você usar outro idioma, Azure PowerShell ou o portal Azure.
Para obter mais informações sobre aplicativos Web e implantação do Serviço de Aplicativo, consulte:
- Visão geral do Serviço de Aplicativo
- Criar um aplicativo Web ASP.NET Core no Serviço de Aplicativo do Azure
- Implantar arquivos no Serviço de Aplicativo
Pré-requisitos
Para concluir este tutorial, você precisará:
- Uma assinatura Azure. Crie uma gratuitamente.
- O SDK .NET 8.0 ou posterior.
- O CLI do Azure ou Azure PowerShell.
- Azure Key Vault. Você pode criar um cofre de chaves usando o Azure portal, o CLI do Azure ou Azure PowerShell.
- Um "Key Vault" segredo. Você pode criar um segredo usando o Azure portal, PowerShell ou o CLI do Azure.
Se você já tiver um aplicativo web implantado no Serviço de Aplicativo do Azure, vá para Configurar o aplicativo web para se conectar ao Key Vault e Modificar o aplicativo para acessar o Key Vault.
Criar um aplicativo .NET Core
Nesta etapa, configure o projeto de .NET local.
Em uma janela de terminal, crie um diretório nomeado akvwebapp e alterne para ele:
mkdir akvwebapp
cd akvwebapp
Crie um aplicativo Web .NET usando o novo comando Web dotnet:
dotnet new web
Execute o aplicativo localmente para ver a aparência dele antes de implantá-lo no Azure:
dotnet run
Em um navegador da Web, abra o aplicativo em http://localhost:5000. Você verá a mensagem "Olá, Mundo!" do aplicativo de exemplo.
Para obter mais informações sobre como criar aplicativos Web, consulte Criar um aplicativo Web ASP.NET Core no Serviço de Aplicativo do Azure.
Implantar o aplicativo no Azure
Nesta etapa, implante o aplicativo .NET no Serviço de Aplicativo do Azure usando a implantação por ZIP. A implantação por ZIP é o mecanismo de implantação baseado em pacotes recomendado para o App Service. Para entrega contínua do controle do código-fonte, use GitHub Actions ou Azure DevOps Pipelines.
Criar um grupo de recursos
Crie um grupo de recursos para conter o cofre de chaves e o aplicativo Web usando az group create:
az group create --name "<resource-group>" --location "EastUS"
Criar um plano do Serviço de Aplicativo
Crie um plano do Serviço de Aplicativo usando az appservice plan create. O exemplo a seguir cria um plano nomeado myAppServicePlan na camada gratuita (FREE):
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Criar um aplicativo Web
Crie um aplicativo Web do Azure no plano myAppServicePlan.
Importante
Como um cofre de chaves, um aplicativo Web Azure deve ter um nome globalmente exclusivo. Substitua <webapp-name> pelo nome do aplicativo Web.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>"
Vá para o novo aplicativo para confirmar se ele está em execução:
https://<webapp-name>.azurewebsites.net
Você verá a página padrão de um novo aplicativo Web Azure.
Implante seu aplicativo local com implantação por ZIP
No diretório do projeto akvwebapp, compile o projeto e crie um arquivo ZIP de implantação:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
Tip
Em Windows semzip, use o PowerShell: Compress-Archive -Path .\publish\* -DestinationPath .\akvwebapp.zip.
Implante o zip em seu aplicativo Web usando az webapp deploy:
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Atualize o aplicativo implantado no navegador da Web:
https://<webapp-name>.azurewebsites.net
Você vê a mesma mensagem "Olá, Mundo!" que viu em http://localhost:5000.
Configurar o aplicativo Web para se conectar ao Key Vault
Nesta seção, você permitirá que o aplicativo Web acesse Key Vault e atualize o código do aplicativo para recuperar um segredo.
Criar e atribuir acesso a uma identidade gerenciada
Use uma identidade gerenciada para autenticar o aplicativo Web para Key Vault. Uma identidade gerenciada remove a necessidade de você gerenciar credenciais no código.
Crie a identidade do aplicativo usando az webapp identity assign:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
O comando retorna um snippet JSON semelhante a este:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Para obter permissões para o cofre de chaves por meio do RBAC (controle de acesso baseado em função), atribua uma função ao seu UPN (nome principal do usuário) usando o comando da CLI do Azure az role assignment create.
az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
Substitua <upn>, <subscription-id>e <vault-name> com seus valores reais. Se você usou um nome de grupo de recursos diferente, substitua "myResourceGroup" também. Seu UPN normalmente estará no formato de um endereço de email (por exemplo, username@domain.com).
Modificar o aplicativo para acessar o cofre de chaves
Este tutorial usa a biblioteca de cliente de segredos do Azure Key Vault. Você também pode usar a biblioteca de clientes de certificado Azure Key Vault ou a biblioteca de clientes de chave Azure Key Vault.
Instalar os pacotes
Na janela do terminal, instale a biblioteca de clientes de segredos do Azure Key Vault e a biblioteca de clientes do Azure Identity:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Atualizar o código
Abra Program.cs em seu projeto akvwebapp.
Adicione estas using diretivas na parte superior do arquivo:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Adicione as linhas a seguir antes da chamada app.MapGet, atualizando <vault-name> para o nome do seu cofre de chaves. Esse código usa DefaultAzureCredential para autenticar para Key Vault por meio da identidade gerenciada do aplicativo Web. Para obter mais informações, consulte o guia do desenvolvedor. O código também configura a retirada exponencial para repetições, caso o Key Vault seja limitado. Para obter detalhes sobre limites de transação, confira Orientação sobre limites do Azure Key Vault.
SecretClientOptions options = new SecretClientOptions()
{
Retry =
{
Delay= TimeSpan.FromSeconds(2),
MaxDelay = TimeSpan.FromSeconds(16),
MaxRetries = 5,
Mode = RetryMode.Exponential
}
};
var client = new SecretClient(new Uri("https://<vault-name>.vault.azure.net/"), new DefaultAzureCredential(), options);
KeyVaultSecret secret = client.GetSecret("<secret-name>");
string secretValue = secret.Value;
Atualize a linha app.MapGet("/", () => "Olá, Mundo!"); para:
app.MapGet("/", () => secretValue);
Salve as alterações.
Reimplantar seu aplicativo Web
Reconstrua o pacote de implantação e implante-o novamente:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Acesse o seu aplicativo Web concluído
https://<webapp-name>.azurewebsites.net
Onde você viu anteriormente "Olá, Mundo!", agora você vê o valor do seu segredo.