DEV Community

Douglas SantAnna Figueredo
Douglas SantAnna Figueredo

Posted on

Aumente a segurança da sua aplicação com Azure Key Vault

Nesse artigo vamos aprender, de forma simples e objetiva, a criar um segredo no serviço Key Vault, oferecido pelo Microsoft Azure.

Antes, uma breve explicação sobre o Azure Key Vault:

Azure Key Vault, em português Azure cofre de chaves, é um serviço em núvem do Microsoft Azure usado para centralizar o armazenamento e gerenciamento de chaves de API, chaves criptográficas, segredos e certificados que precisam ser controlados de forma simples e rígida.

Ao criar o serviço temos duas opções de armazenamento, sendo a camada standard e a premium. Na primeira camada, todo e qualquer segredo/chave/certificado será protegido por um software de segurança. A segunda camada, além de trazer a mesma segurança da primeira, da a opção de proteger chaves por módulo de segurança de hardware (Hardware Security Module).

O (Hardware Security Module) oferecido pela camada premium é responsável por trazer uma camada extra de segurança criptográfica para as chaves

Sobre chaves – Azure Key Vault | Microsoft Learn

Visão geral dos detalhes da interface REST e do desenvolvedor do Azure Key Vault para as chaves.

learn.microsoft.com

O administrador ou proprietário do Key Vault tem controle absoluto sobre o cofre. É possível criar novas chaves, altera-las, definir uma data de ativação e/ou expiração, monitorar os logs via gráficos através do Metrics, definir qual usuário ou aplicativo poderá acessar/administrar determinada chave, dentre outras funções.

Mão na massa

Temos uma aplicação (Azure Function) implantada no Azure que faz consultas a uma base de dados. Atualmente, no arquivo de configuração da aplicação, temos a string de conexão em seu valor original.
Vamos criar um serviço Azure Key Vault, gerar um segredo contendo o valor original da string de conexão e, no arquivo de configuração da aplicação, vamos substituir o valor original da string de conexão pelo segredo gerado no Key Vault.

  • Para este exemplo, você deve possuir
    • uma aplicação no ar
    • uma assinatura no Azure

1 - Ao acessar o menú Configuration do nosso app, podemos ver nossa string de conexão com seu valor original.

Image description

1.1 - Ao acessar nosso Key Vault, a opção Objects nos mostra nossas chaves, segredos e certificados. Como ainda não possuimos nenhum segredo gerado, vamos gerar um indo em + Generate/Import

Para criar o seu Azure Key Vault, selecione um grupo de recurso, procure por Key Vault e defina um nome, escolha uma região e selecione a camada que lhe atende.

Image description

1.2 - Defina um nome para sua string de conexão e cole em Secret value o valor original da sua string de conexão. Repare que é nesse momento que optamos ou não por uma data de ativação/expiração.

Image description

1.3 - Após termos nosso segredo gerado e clicarmos sobre ele, vamos notar que é possível gerarmos outras versões do mesmo segredo porém com valores e datas de ativação/expiração diferentes.

Image description

1.4 - Ao clicarmos sobre a versão do nosso segredo, podemos visualizar informações importantes, porém a mais relevante é a Secret identifier. Veja que é com essa URL que teremos acesso ao nosso segredo.

Formato da URL gerada pelo Key Vault: https://{nome-cofre}.vault.azure.net/segredo/nome-segredo/versão

Image description

Nesse momento temos nosso segredo gerado. O próximo passo é darmos permissão ao nosso app para que ele tenha permissão para acessar o valor do segredo.
Veja que interessante e o quão seguro é usar o Key Vault! Além de não mostrarmos o valor original da nossa string de conexão, ainda devemos dar permissão para que o app que vai consumir o segredo possar ler seu real valor!

Então vamos dar permissão ao app.

2 - Para que o nosso Key Vault consiga 'enxergar' a nossa aplicação, a mesma deve estar visível a outros serviços internos do Azure. Para isso confirme que este detalhe esteja habilitado.
No menu esquerdo da sua aplicação procure por Identity. Certifique-se que o seu Status seja On.

Image description

2.1 - Ainda no nosso Key Vault, no menú esquerdo, vá em Access policies. Podemos ver que o administrador/criador do serviço possui permissão geral sobre o segredo. Agora vamos criar uma nova permissão. Clique em Create.

Image description

2.2 - Na aba Permissions podemos configurar qual tipo de permissão queremos. Se tratando de uma string de conexão, optei por liberar apenas permissão de leitura.

Image description

2.3 - Na aba Principal podemos procurar pelo app que terá permissão de leitura do nosso segredo. Veja que nessa aba podemos procurar por um usuário para ter acesso ao segredo, e na aba seguinte Application (optional) podemos procurar por um app desse usuário.

Image description

2.4 - Após finalizado o processo de permissão, voltamos a página do Access policies e vemos que nosso app teve sua permissão criada com sucesso.

Image description

Substituindo nosso valor original da string de conexão pela URL do nosso segredo.

3 - Após ter copiado a URL do nosso segredo, volte ao seu app e acesse Configuration. Clique sobre a opção Advanced edit e substitua o valor original da string de conexão pela URL gerada pelo segredo.

Image description

 {
    "name": "ConnectionString",
    "value": "@Microsoft.KeyVault(SecretUri=https://authappkeyvault.vault.azure.net/secrets/ConnectionString/74oi52a2c95f4a87e4d9ee15d4e95aa0a82cc9f4)",
    "slotSetting": false
  }
Enter fullscreen mode Exit fullscreen mode

Perceba que além da URL gerada pelo segredo, a Microsoft exige que seja incluído uma sintaxe de referência @Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/).

Usar referências de Key Vault - Azure App Service | Microsoft Learn

Saiba como configurar o Serviço de Aplicativo do Azure e o Azure Functions para usar referências do Azure Key Vault. Torne os segredos do Key Vault disponíveis para o código do aplicativo.

learn.microsoft.com

Após concluídos esses passos, o processo está completo.
Observe que é um processo muito simples e que entrega uma segurança gigantesca. Mais um ponto pro Microsoft Azure.

Top comments (0)