DEV Community

Douglas SantAnna Figueredo
Douglas SantAnna Figueredo

Posted on

2 1

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.

Do your career a big favor. Join DEV. (The website you're on right now)

It takes one minute, it's free, and is worth it for your career.

Get started

Community matters

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Immerse yourself in a wealth of knowledge with this piece, supported by the inclusive DEV Community—every developer, no matter where they are in their journey, is invited to contribute to our collective wisdom.

A simple “thank you” goes a long way—express your gratitude below in the comments!

Gathering insights enriches our journey on DEV and fortifies our community ties. Did you find this article valuable? Taking a moment to thank the author can have a significant impact.

Okay