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.
Azure Key Vault fornece uma forma de armazenar credenciais e outros segredos com maior segurança. Mas o seu código precisa de autenticar no Key Vault para os recuperar. As identidades geridas para recursos do Azure resolvem este problema ao dar aos serviços do Azure uma identidade gerida automaticamente no Microsoft Entra ID. O seu código usa esta identidade para autenticar em qualquer serviço que suporte autenticação Microsoft Entra, incluindo o Key Vault, sem incorporar credenciais no código.
Neste tutorial, cria e implementa uma aplicação web do Azure para o Serviço de Aplicações do Azure, depois usa uma identidade gerida para autenticar a aplicação num cofre de chaves, utilizando a biblioteca cliente secreta do Azure Key Vault para .NET e o CLI do Azure. Os mesmos princípios aplicam-se se usar outra linguagem, Azure PowerShell ou o portal Azure.
Para mais informações sobre aplicações web e implementação de Serviços de Aplicações, consulte:
- Visão geral do Serviço de Aplicativo
- Criar uma aplicação web ASP.NET Core em Serviço de Aplicações do Azure
- Implantar arquivos no Serviço de Aplicativo
Pré-requisitos
Para concluir este tutorial, você precisa:
- Uma subscrição do Azure. Crie um gratuitamente.
- O SDK .NET 8.0 ou posterior.
- O CLI do Azure ou Azure PowerShell.
- Azure Key Vault. Pode criar um cofre de chaves usando o portal Azure, o CLI do Azure ou Azure PowerShell.
- Um Key Vault segredo. Pode criar um segredo usando o portal Azure, PowerShell ou o CLI do Azure.
Se já tem uma aplicação web implementada no Serviço de Aplicações do Azure, salte para Configurar a aplicação web para se ligar ao Key Vault e Modificar a aplicação para aceder ao seu Key Vault.
Crie uma aplicação .NET Core
Neste passo, configure o projeto local .NET.
Numa janela de terminal, crie um diretório com nome akvwebapp e mude para ele:
mkdir akvwebapp
cd akvwebapp
Crie uma aplicação web .NET usando o novo comando web dotnet:
dotnet new web
Executa a aplicação localmente para veres como fica antes de a implementares no Azure:
dotnet run
Num navegador web, abra a aplicação em http://localhost:5000. Vês a mensagem "Hello World!" da aplicação de exemplo.
Para mais informações sobre a criação de aplicações web, consulte Criar uma aplicação web ASP.NET Core no Serviço de Aplicações do Azure.
Implementar a aplicação no Azure
Neste passo, implemente a aplicação .NET para o Serviço de Aplicações do Azure usando zip deploy. O Zip Deploy é o mecanismo recomendado de implementação baseada em pacotes para App Service. Para entrega contínua a partir do controlo de versão, use GitHub Actions ou Azure DevOps Pipelines em vez disso.
Criar um grupo de recursos
Crie um grupo de recursos para conter o cofre de chaves e a aplicação web usando o 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 Aplicações ao utilizar az appservice plan create. O exemplo seguinte cria um plano nomeado myAppServicePlan no nível livre (FREE):
az appservice plan create --name myAppServicePlan --resource-group <resource-group> --sku FREE
Criar um aplicativo Web
Crie uma aplicação web do Azure no myAppServicePlan plano.
Importante
Tal como um cofre de chaves, uma aplicação web do Azure deve ter um nome globalmente único. Substitua <webapp-name> pelo nome da sua aplicação web.
az webapp create --resource-group "<resource-group>" --plan "myAppServicePlan" --name "<webapp-name>"
Vá à nova aplicação para confirmar que está a funcionar:
https://<webapp-name>.azurewebsites.net
Vê a página padrão de uma nova aplicação web do Azure.
Implemente a sua aplicação local com o zip deploy
A partir do akvwebapp diretório do projeto, constrói o projeto e cria um deployment zip:
dotnet publish -c Release -o ./publish
cd publish
zip -r ../akvwebapp.zip .
cd ..
Sugestão
Em Windows sem zip, utilize o PowerShell: Compress-Archive -Path .\publish\* -DestinationPath .\akvwebapp.zip.
Implemente o ficheiro ZIP na sua aplicação web com az webapp deploy:
az webapp deploy --resource-group "<resource-group>" --name "<webapp-name>" --src-path ./akvwebapp.zip --type zip
Atualize a aplicação implementada no seu navegador web:
https://<webapp-name>.azurewebsites.net
Vês a mesma mensagem "Hello World!" que viste em http://localhost:5000.
Configure a aplicação web para se ligar ao Key Vault
Nesta secção, pode ativar a aplicação web para aceder ao Key Vault e atualizar o código da sua aplicação para recuperar um segredo.
Criar e atribuir acesso a uma identidade gerenciada
Use uma identidade gerida para autenticar a aplicação web no Key Vault. Uma identidade gerida elimina a necessidade de gerir credenciais em código.
Crie a identidade para a aplicação com az webapp identity assign:
az webapp identity assign --name "<webapp-name>" --resource-group "<resource-group>"
O comando devolve um excerto JSON semelhante a este:
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
Para obter permissões para o seu cofre de chaves através de Role-Based Controlo de Acesso (RBAC), atribua uma função ao seu "Nome Principal do Utilizador" (UPN) usando o comando 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> pelos seus valores reais. Se usaste um nome diferente de grupo de recursos, substitui também "myResourceGroup". Seu UPN normalmente estará no formato de um endereço de e-mail (por exemplo, username@domain.com).
Modificar o aplicativo para acessar seu cofre de chaves
Este tutorial utiliza a biblioteca secreta do cliente Azure Key Vault. Também pode usar a biblioteca cliente de certificados Azure Key Vault ou a biblioteca cliente de chaves Azure Key Vault.
Instalar os pacotes
A partir da janela do terminal, instale a biblioteca cliente secreta Azure Key Vault e a biblioteca cliente Azure Identity:
dotnet add package Azure.Identity
dotnet add package Azure.Security.KeyVault.Secrets
Atualizar o código
Abra Program.cs no projeto akvwebapp.
Adicione estas using diretivas no topo do ficheiro:
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;
Adicione as linhas seguintes antes da chamada app.MapGet, substituindo <vault-name> pelo nome do seu cofre de chaves. Este código utiliza DefaultAzureCredential para se autenticar no Key Vault através da identidade gerida da aplicação Web. Para mais informações, consulte o guia do programador. O código também configura o backoff exponencial para retentativas caso o Key Vault seja limitado. Para obter detalhes sobre os limites de transação, consulte as orientações sobre limitação 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("/", () => "Hello World!"); para:
app.MapGet("/", () => secretValue);
Guarde as alterações.
Reimplantar seu aplicativo Web
Reconstrua o pacote de implementação e volte a implementar:
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
Aceda à aplicação Web concluída
https://<webapp-name>.azurewebsites.net
Onde antes vias "Hello World!", agora vês o valor do teu segredo.