Utilizando o Azure Key Vault em aplicações .NET

O Azure Key Vault é um serviço de nuvem que fornece um armazenamento seguro de informações confidenciais do seu ambiente. Você pode armazenar com segurança chaves, senhas, certificados e outros segredos. Para obter mais informações sobre o Azure Key Vault, consulte sua documentação.

O Key Vault é adequado para uso em produção, mas em alguns casos, os desenvolvedores podem querer acessar os segredos do ambiente de desenvolvimento. 

Neste artigo, apresentarei como configurar e acessar o Azure Key Vault de uma aplicação .NET.

Pré-requisitos

Web API

O primeiro passo é criar o recurso Key Vault na conta Azure. Em seguida, crie a estrutura abaixo no seu appsettings.json:

  • Endpoint é o Vault URI informado na tela principal do Key Vault criado:
  • Client ID e Tenant ID é o código da sua tenant do Azure, para obter esse valor é necessário criar um App Registration conforme a tela de cadastro abaixo:

Depois de criado você será redirecionado para a tela principal do App Registration, onde é necessário copiar o código do client ID e tenant ID:

  • Client Secret é a chave de acesso ao Key Vault. Para criar, clique em Certificates & secrets e crie um secret com a expiração de um ano, em seguida copie o valor do campo Value:

Em seguida, configure o Access policies para obter permissões de acesso ao cofre. Clique em Create e selecione o template Key & Secret Management:

E na guia Principal, escolha o App Registration criado:

E por fim, crie um segredo no Key Vault. Clique em Secrets e insira uma nova chave com o nome de chave-teste, por exemplo e em Secret value insira um valor qualquer:

Na classe Program.cs, configure conforme o código abaixo:

O método de extensão AddKeyVault() contém a configuração de acesso às chaves do Key Vault:

Ao iniciar a aplicação, são carregadas todas as chaves do Key Vault no arquivo IConfiguration, ou seja, caso você tenha variáveis configuradas no arquivo appsettings.json e Key Vault, todas elas serão carregadas no arquivo IConfiguration para acesso estático.

A injeção de dependência ISecretsService é responsável por obter, criar e deletar as chaves no Key Vault. Já a IKeyVaultService é responsável apenas por obter os valores carregados no appsettings.json (IConfiguration).

Repare que em ClientSecretCredential é configurado o acesso ao Key Vault de acordo com as chaves de acesso inseridas no appsettings.json.

E por fim, crie um controller injetando as duas interfaces de dependência para acessar às chaves do seu cofre.

Testando

Para realizar os testes, execute o endpoint POST /secrets no Swagger para criação de chaves no Key Vault. Em seguida execute o endpoint GET /secrets/key-vault para obter o valor da chave inserida, e depois execute o endpoint GET /secrets/configuration para obter os valores das chaves carregadas no IConfiguration.

Finalizando

O Azure Key Vault ajuda você a manter os segredos das suas aplicações de forma segura, confidencial e fora de acessos de pessoas não autorizadas. Esses segredos incluem: ConnectionString, chaves de API e variáveis ​​de ambiente. Você também pode aproveitar o Key Vault para manter os segredos fora do controle do código-fonte em um local de armazenamento centralizado, deixando suas aplicações com mais segurança.

Os detalhes completo desta série você encontra no meu GitHub: https://github.com/hgmauri/sample-key-vault

Deixe uma resposta