Tutorial: Usar referências do Cofre da Chave em um aplicativo ASP.NET Core

Neste tutorial, você aprenderá a usar o serviço de Configuração de Aplicativo do Azure junto com o Cofre da Chave do Azure. A Configuração do Aplicativo e o Cofre da Chave são serviços complementares usados lado a lado na maioria das implantações de aplicativos.

A Configuração do Aplicativo ajuda você a usar os serviços juntos criando chaves que fazem referência a valores armazenados no Cofre de Chaves. Quando a Configuração do Aplicativo cria essas chaves, ela armazena os URIs dos valores do Cofre de Chaves em vez dos valores em si.

Seu aplicativo usa o provedor de cliente de Configuração de Aplicativo para recuperar referências do Cofre de Chaves, assim como faz para quaisquer outras chaves armazenadas na Configuração do Aplicativo. Nesse caso, os valores armazenados na Configuração do Aplicativo são URIs que fazem referência aos valores no Cofre da Chave. Não são valores ou credenciais do Cofre de Chaves. Como o provedor do cliente reconhece as chaves como referências do Cofre da Chave, ele usa o Cofre da Chave para recuperar seus valores.

Seu aplicativo é responsável por autenticar corretamente na Configuração do Aplicativo e no Cofre da Chave. Os dois serviços não se comunicam diretamente.

Este tutorial mostra 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 primeiro Criar um aplicativo ASP.NET Core com a Configuração do Aplicativo.

Você pode usar qualquer editor de código para executar as etapas neste 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, irá aprender a:

  • Crie uma chave de Configuração do Aplicativo que faça referência a um valor armazenado no Cofre da Chave.
  • Aceda ao valor desta chave a partir de uma aplicação Web ASP.NET Core.

Pré-requisitos

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

Se não tiver uma subscrição 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 Cofre da Chave e selecione Cofre da Chave na lista suspensa.

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

  4. Em Cofres de chaves, selecione Adicionar.

  5. À direita, em 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.
    • No Nome do cofre de chaves, é necessário um nome exclusivo.
    • Na lista suspensa Região, escolha um local.
  6. Deixe as outras opções Criar cofre de chaves com seus valores padrão.

  7. Clique em Rever + Criar.

  8. O sistema irá validar e exibir os dados que você inseriu. Clique em Criar.

Neste 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, você precisa executar apenas algumas etapas adicionais. Nesse caso, adicione uma mensagem que você possa usar para testar a recuperação do Cofre da Chave. A mensagem é chamada de Mensagem e você armazena o valor "Olá do Cofre da Chave" nela.

  1. Nas páginas de propriedades do Cofre da Chave, selecione Segredos.
  2. Selecione Gerar/Importar.
  3. No painel Criar um segredo, insira os seguintes valores:
    • Opções de upload: Entre no Manual.
    • Nome: Digite a mensagem.
    • Valor: Digite Hello do Cofre da Chave.
  4. Deixe o outro Crie propriedades secretas com seus valores padrão.
  5. Selecione Criar.

Adicionar uma referência do Cofre da Chave à Configuração do Aplicativo

  1. Inicie sessão no portal do Azure. Selecione Todos os recursos e, em seguida, selecione a instância da App Configuration Store que criou no início rápido.

  2. Selecione Configuration Explorer.

  3. Selecione + Criar>referência do cofre da chave e especifique os seguintes valores:

    • Chave: Selecione TestApp:Settings:KeyVaultMessage.
    • Label: Deixe este valor em branco.
    • Subscrição, Grupo de recursos e Cofre de chaves: introduza os valores correspondentes aos do cofre de chaves que criou na secção anterior.
    • Segredo: Selecione o segredo chamado Mensagem que você criou na seção anterior.

Captura de ecrã do formulário de referência para criar um novo Cofre da Chave

Atualize seu código para usar uma referência do Cofre da Chave

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

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

    using Azure.Identity;
    
  3. Use a Configuração do Aplicativo chamando o AddAzureAppConfiguration método. Inclua a ConfigureKeyVault opção e passe a credencial correta para o Cofre da Chave usando o SetCredential método.

    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());
        });
    });
    

    Gorjeta

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

  4. Ao inicializar a conexão com a Configuração do Aplicativo, você configura a conexão com o Cofre da Chave chamando o ConfigureKeyVault método. Após a inicialização, você pode acessar os valores das referências do Cofre da Chave da mesma forma que acessa os valores das chaves normais de Configuração do Aplicativo.

    Para ver esse processo em ação, abra Index.cshtml na pasta Views>Home. Substitua os respetivos conteúdos pelo seguinte código:

    @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 Cofre da Chave TestApp:Settings:KeyVaultMessage da mesma forma que para o valor de configuração de TestApp:Settings:Message.

Conceda ao seu aplicativo acesso ao Cofre da Chave

A Configuração de Aplicativo do Azure não acessará seu cofre de chaves. Seu aplicativo será lido diretamente do Cofre da Chave, portanto, você precisa conceder ao seu aplicativo acesso aos segredos do cofre de chaves. Dessa forma, o segredo sempre fica com o seu aplicativo. O acesso pode ser concedido usando uma política de acesso do Cofre da Chave ou um controle de acesso baseado em função do Azure.

Você usa DefaultAzureCredential no seu código acima. É uma credencial de token agregada que tenta automaticamente vários tipos de credenciais, como EnvironmentCredential, ManagedIdentityCredential, SharedTokenCacheCredentiale VisualStudioCredential. Para obter mais informações, consulte DefaultAzureCredential Class. Você pode substituir DefaultAzureCredential por qualquer tipo de credencial explicitamente. No entanto, o uso DefaultAzureCredential permite que você tenha o mesmo código que é executado em ambientes locais e do Azure. Por exemplo, você concede a sua própria credencial acesso ao cofre de chaves. DefaultAzureCredentialautomaticamente retorna para ou VisualStudioCredential quando você usa o SharedTokenCacheCredential 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 através do EnvironmentCredential para autenticar com seu cofre de chaves. Depois que seu aplicativo é implantado em um serviço do Azure com identidade gerenciada habilitada, como o Serviço de Aplicativo do Azure, o Serviço Kubernetes do Azure ou a Instância de Contêiner do Azure, você concede a identidade gerenciada do serviço do Azure permissão para acessar seu cofre de chaves. DefaultAzureCredential usa ManagedIdentityCredential automaticamente quando seu aplicativo está sendo executado no Azure. Você pode usar a mesma identidade gerenciada para autenticar com a Configuração do Aplicativo e o Cofre da Chave. Para obter mais informações, consulte Como usar identidades gerenciadas para acessar a Configuração do Aplicativo.

Crie e execute o aplicativo localmente

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

    dotnet build
    
  2. Após a conclusão da compilação, use o seguinte comando 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 para o aplicativo Web hospedado localmente.

    Início rápido do aplicativo local

Clean up resources (Limpar recursos)

Se não quiser continuar a utilizar os recursos criados neste artigo, elimine o grupo de recursos que criou aqui para evitar cobranças.

Importante

A eliminação de um grupo de recursos é irreversível. O grupo de recursos e todos os recursos nele contidos são excluídos permanentemente. Certifique-se de não excluir acidentalmente o grupo de recursos ou recursos errados. Se você criou os recursos para este artigo dentro de um grupo de recursos que contém outros recursos que deseja manter, exclua cada recurso individualmente de seu respetivo 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, introduza o nome do seu grupo de recursos.
  3. Na lista de resultados, selecione o nome do grupo de recursos para ver uma visão geral.
  4. Selecione Eliminar grupo de recursos.
  5. É-lhe pedido que confirme a eliminação do grupo de recursos. Insira o nome do grupo de recursos a ser confirmado e selecione Excluir.

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

Próximos passos

Neste tutorial, você criou uma chave na Configuração do Aplicativo que faz referência a um segredo armazenado no Cofre da Chave. Para saber como recarregar automaticamente segredos e certificados do Cofre de Chaves, continue para o próximo tutorial:

Para saber como usar a Identidade Gerenciada para simplificar o acesso à Configuração do Aplicativo e ao Cofre da Chave, consulte o seguinte tutorial: