Share via


Tutorial: Usar referências do Key Vault em um aplicativo ASP.NET Core

Neste tutorial, você aprenderá a usar o serviço de Configuração de Aplicativos do Azure junto com o Azure Key Vault. A Configuração de Aplicativos e o Key Vault são serviços complementares usados lado a lado na maioria das implantações de aplicativo.

A Configuração de Aplicativos ajuda você a usar os serviços juntos por meio da criação de chaves que fazem referência a valores armazenados no Key Vault. Quando a Configuração de Aplicativos cria essas chaves, ela armazena os URIs de valores do Key Vault em vez dos valores propriamente ditos.

Seu aplicativo usa o provedor do cliente da Configuração de Aplicativos para recuperar referências do Key Vault, assim como faz para quaisquer outras chaves armazenadas na Configuração de Aplicativos. Nesse caso, os valores armazenados na Configuração de Aplicativos são URIs que fazem referência aos valores no Key Vault. Eles não são valores nem credenciais do Key Vault. Já que o provedor do cliente reconhece as chaves como referências do Key Vault, ele usa o Key Vault para recuperar os valores delas.

Seu aplicativo é responsável por autenticar corretamente, tanto na Configuração de Aplicativos quanto no Key Vault. Os dois serviços não se comunicam diretamente.

Este tutorial mostra a você como implementar referências do Key Vault em seu código. Ele se baseia no aplicativo Web introduzido nos Inícios Rápidos. Antes de continuar, conclua Criar um aplicativo ASP.NET Core com a Configuração de Aplicativo primeiro.

Você pode usar qualquer editor de código para executar as etapas deste tutorial. Por exemplo, o Visual Studio Code é um editor de código multiplataforma disponível para os sistemas operacionais Windows, macOS e Linux.

Neste tutorial, você aprenderá como:

  • Criar uma chave da Configuração de Aplicativos que referencia um valor armazenado no Key Vault.
  • Acessar o valor dessa chave por meio de um aplicativo Web ASP.NET Core.

Pré-requisitos

Antes de iniciar este tutorial, instale o SDK .NET 6.0 ou posterior.

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Criar um cofre

  1. Selecione a opção Criar um recurso no canto superior esquerdo do portal do Azure:

    A captura de tela mostra a opção Criar um recurso no portal do Azure.

  2. Na caixa de pesquisa, digite Key Vault e selecione Key Vault na lista suspensa.

  3. Na lista de resultados, selecione Cofres de chaves à esquerda.

  4. Em Cofres de chaves, selecione Adicionar.

  5. À direita, na seção Criar cofre de chaves, forneça as seguintes informações:

    • Selecione Assinatura para escolher uma assinatura.
    • Em Grupo de Recursos, insira um nome de grupo de recursos existente ou selecione Criar novo e insira um nome de grupo de recursos.
    • Em Nome do cofre de chaves, é necessário um nome exclusivo.
    • Na lista suspensa Região, escolha uma localização.
  6. Deixe as outras opções de Criar cofre de chaves com os valores padrão.

  7. Clique em Revisar + Criar.

  8. O sistema validará e exibirá os dados inseridos. Clique em Criar.

Nesse ponto, sua conta do Azure é a única autorizada a acessar esse novo cofre.

Adicionar um segredo ao Key Vault

Para adicionar um segredo ao cofre, basta executar algumas etapas adicionais. Nesse caso, adicione uma mensagem que você possa usar para testar a recuperação do Key Vault. A mensagem é chamada de Mensagem e você armazena nela o valor de "Olá do Key Vault".

  1. Na página de propriedades do Key Vault, selecione Segredos.
  2. Selecione Gerar/Importar.
  3. No painel Criar um segredo, insira os seguintes valores:
    • Opções de upload: insira Manual.
    • Name: insira Mensagem.
    • Valor: insira Olá do Key Vault.
  4. Deixe as outras propriedades de Criar um segredo com os valores padrão.
  5. Selecione Criar.

Adicionar uma referência do Key Vault à Configuração de Aplicativos

  1. Entre no portal do Azure. Escolha Todos os recursos e depois escolha a instância do repositório de Configurações de Aplicativos que você criou no início rápido.

  2. Selecione Gerenciador de Configurações.

  3. Clique em + Criar>Referência do Key Vault e especifique os seguintes valores:

    • Chave: selecione TestApp:Settings:KeyVaultMessage.
    • Rótulo: deixe esse valor em branco.
    • Assinatura, Grupo de recursos e Cofre de chaves: Insira os valores correspondentes àqueles no cofre de chaves que você criou na seção anterior.
    • Segredo: selecione o segredo chamado Mensagem criado na seção anterior.

Captura de tela da criação de um formulário de referência do Key Vault

Atualizar o código para usar uma referência do Key Vault

  1. Adicione uma referência aos pacotes NuGet necessários executando o seguinte comando:

    dotnet add package Azure.Identity
    
  2. Abra Program.cs e adicione referências aos seguintes pacotes necessários:

    using Azure.Identity;
    
  3. Use a Configuração de Aplicativos chamando o método AddAzureAppConfiguration. Inclua a opção ConfigureKeyVault e transmita as credenciais corretas para o Key Vault usando o método SetCredential.

    var builder = WebApplication.CreateBuilder(args);
    
    // Retrieve the connection string
    string connectionString = builder.Configuration.GetConnectionString("AppConfig");
    
    // Load configuration from Azure App Configuration
    builder.Configuration.AddAzureAppConfiguration(options =>
    {
        options.Connect(connectionString);
    
        options.ConfigureKeyVault(keyVaultOptions =>
        {
            keyVaultOptions.SetCredential(new DefaultAzureCredential());
        });
    });
    

    Dica

    Se você tiver vários Key Vaults, a mesma credencial será usada para todos eles. Se seus Key Vaults exigirem credenciais diferentes, você poderá defini-las usando os métodos Register ou SetSecretResolver da classe AzureAppConfigurationKeyVaultOptions.

  4. Ao inicializar a conexão com a Configuração de Aplicativos, você configura a conexão com o Key Vault chamando o método ConfigureKeyVault. Após a inicialização, você pode acessar os valores de referências do Key Vault da mesma maneira que acessa os valores de chaves comuns da Configuração de Aplicativos.

    Para ver esse processo em ação, abra Index.cshtml no diretório Exibições>Página Inicial. Substitua o conteúdo pelo código a seguir:

    @page
    @using Microsoft.Extensions.Configuration
    @inject IConfiguration Configuration
    
    <style>
        body {
            background-color: @Configuration["TestApp:Settings:BackgroundColor"]
        }
        h1 {
            color: @Configuration["TestApp:Settings:FontColor"];
            font-size: @Configuration["TestApp:Settings:FontSize"]px;
        }
    </style>
    
    <h1>@Configuration["TestApp:Settings:Message"]
        and @Configuration["TestApp:Settings:KeyVaultMessage"]</h1>
    

    Você acessa o valor da referência do Key Vault TestApp:Settings:KeyVaultMessage da mesma maneira que acessa o valor de configuração TestApp:Settings:Message.

Permitir ao aplicativo acesso ao Key Vault

A Configuração de Aplicativos do Azure não acessará seu cofre de chaves. Seu aplicativo fará a leitura diretamente do Key Vault, portanto, será necessário conceder ao aplicativo acesso aos segredos no cofre de chaves. Dessa forma, o segredo sempre permanece com o aplicativo. O acesso pode ser concedido usando uma política de acesso do Key Vault ou o controle de acesso baseado em função do Azure.

Use DefaultAzureCredential no código acima. É uma credencial de token agregada que automaticamente tenta vários tipos de credenciais, como EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredential e VisualStudioCredential. Para obter mais informações, consulte Classe DefaultAzureCredential. É possível substituir DefaultAzureCredential por qualquer tipo de credencial explicitamente. No entanto, usar DefaultAzureCredential permite ter o mesmo código que é executado em ambientes locais e no Azure. Por exemplo, você concede suas próprias credenciais de acesso ao cofre de chaves. DefaultAzureCredential volta automaticamente para SharedTokenCacheCredential ou VisualStudioCredential quando você usa o Visual Studio para desenvolvimento local.

Como alternativa, você pode definir as variáveis de ambiente AZURE_TENANT_ID, AZURE_CLIENT_ID e AZURE_CLIENT_SECRET e DefaultAzureCredential usará o segredo do cliente que você tem por meio do EnvironmentCredential para autenticar com o cofre de chaves. Depois que seu aplicativo for implantado em um serviço do Azure com identidade gerenciada habilitada, como Serviço de Aplicativo do Azure, Serviço de Kubernetes do Azure ou Instância de Contêiner do Azure, conceda à identidade gerenciada de serviço do Azure permissão para acessar o cofre de chaves. DefaultAzureCredential usa ManagedIdentityCredential automaticamente quando seu aplicativo está em execução no Azure. Você pode usar a mesma identidade gerenciada para autenticar com a Configuração de Aplicativos e Key Vault. Para obter mais informações, consulte Como usar identidades gerenciadas para acessar a Configuração de Aplicativos.

Compilar e executar o aplicativo localmente

  1. Para criar o aplicativo usando a CLI do .NET, execute o seguinte comando no shell de comando:

    dotnet build
    
  2. Depois que o build é concluído, use o comando a seguir para executar o aplicativo Web localmente:

    dotnet run
    
  3. Abra uma janela do navegador e vá para http://localhost:5000, que é a URL padrão do aplicativo Web hospedado localmente.

    Inicialização de aplicativo local de início rápido

Limpar recursos

Se não deseja continuar usando os recursos criados neste artigo, exclua o grupo de recursos que você criou aqui para evitar encargos.

Importante

A exclusão de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos contidos nele são excluídos permanentemente. Não exclua acidentalmente grupo de recursos ou recursos incorretos. Se tiver criado os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que você deseja manter, exclua cada um individualmente do respectivo painel em vez de excluir o grupo de recursos.

  1. Entre no portal do Azure e selecione Grupos de recursos.
  2. Na caixa Filtrar por nome..., digite o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para conferir uma visão geral.
  4. Selecione Excluir grupo de recursos.
  5. Você receberá uma solicitação para confirmar a exclusão do grupo de recursos. Insira o nome do grupo de recursos para confirmar e selecione Excluir.

Após alguns instantes, o grupo de recursos e todos os recursos dele são excluídos.

Próximas etapas

Neste tutorial, você criou uma chave na Configuração de Aplicativos que referencia um segredo armazenado no Key Vault. Para saber como recarregar automaticamente segredos e certificados Key Vault, continue para o próximo tutorial:

Para saber como usar a Identidade Gerenciada para simplificar o acesso à Configuração de Aplicativos e ao Key Vault, consulte o seguinte tutorial: