DEV Community

Lucas Pereira de Souza
Lucas Pereira de Souza

Posted on

Hashicorp Vault para gerenciamento de segredos

logotech

## Instalando e Integrando o Vault: Um Guia Prático

O HashiCorp Vault é uma ferramenta poderosa para gerenciamento de segredos, que oferece uma forma segura de armazenar e controlar o acesso a informações sensíveis, como senhas, chaves de API, certificados e tokens. Este artigo te guiará através do processo de instalação, inicialização, criação de segredos e políticas, e, finalmente, como integrar o Vault com uma aplicação Node.js.

1. Instalando o Vault

Primeiramente, você precisará instalar o Vault em seu sistema. As opções de instalação variam dependendo do seu sistema operacional. Abaixo, estão alguns exemplos:

  • Linux (apt): sudo apt-get update && sudo apt-get install vault
  • macOS (Homebrew): brew install vault
  • Windows (Chocolatey): choco install vault

Após a instalação, verifique se o Vault foi instalado corretamente executando o comando vault --version no seu terminal.

2. Inicializando o Vault

Após a instalação, o próximo passo é inicializar o Vault. Execute o comando vault operator init. Este comando irá gerar um conjunto de chaves de encriptação (unseal keys) e um valor de \"root token\". É crucial que você armazene as chaves de forma segura, pois elas são necessárias para desbloquear o Vault. O \"root token\" concede acesso administrativo total ao Vault; guarde-o com cuidado.

vault operator init
Enter fullscreen mode Exit fullscreen mode

O comando irá retornar algo parecido com isto:

Unseal Key 1: ...
Unseal Key 2: ...
Unseal Key 3: ...
Unseal Key 4: ...
Unseal Key 5: ...
Initial Root Token: ...
Enter fullscreen mode Exit fullscreen mode

3. Desbloqueando o Vault (Unsealing)

Antes de usar o Vault, ele precisa ser desbloqueado. Para isso, use o comando vault operator unseal. Você precisará fornecer um certo número de \"Unseal Keys\" (geralmente 3 ou mais) para desbloquear o Vault. Execute este comando repetidamente, fornecendo uma das chaves a cada vez.

vault operator unseal
Enter fullscreen mode Exit fullscreen mode

4. Autenticando no Vault

Agora que o Vault está desbloqueado, você precisa autenticar. Usaremos o token root inicialmente. Configure a variável de ambiente VAULT_TOKEN com o valor do \"Initial Root Token\" que foi gerado na inicialização.

export VAULT_TOKEN=SEU_ROOT_TOKEN
Enter fullscreen mode Exit fullscreen mode

Você pode verificar a autenticação com o comando vault status.

5. Criando Segredos

O Vault armazena segredos em um sistema de armazenamento hierárquico. Vamos criar um segredo simples.

  • Habilitando o Secrets Engine: Primeiro, precisamos habilitar o Secrets Engine \"kv\" (key-value), que é usado para armazenar dados arbitrários.

    vault secrets enable -path=secret kv
    
  • Salvando um Segredo: Agora, vamos salvar um segredo.

    vault kv put secret/my-app api_key=SUA_API_KEY db_password=SUA_SENHA_DO_BANCO
    

6. Criando Políticas (Policies)

Políticas no Vault definem o que os usuários podem acessar. Crie um arquivo chamado my-app-policy.hcl com o seguinte conteúdo:

path \"secret/my-app\" {
  capabilities = [\"read"]
}
Enter fullscreen mode Exit fullscreen mode

Este arquivo de política permite a leitura do segredo secret/my-app. Agora, carregue a política no Vault:

vault policy write my-app-policy my-app-policy.hcl
Enter fullscreen mode Exit fullscreen mode

7. Criando um Token com a Política

Crie um token que tenha a política recém-criada anexada.

vault token create -policy=my-app-policy
Enter fullscreen mode Exit fullscreen mode

Este comando irá gerar um token. Guarde este token.

8. Integrando com uma Aplicação Node.js

Agora, vamos integrar o Vault com uma aplicação Node.js.

  1. Instale as dependências:

    npm install vault-client
    
  2. Crie um arquivo index.js:

    const Vault = require('vault-client');
    
    async function getSecrets() {
      const vault = new Vault({
        url: 'http://127.0.0.1:8200', // Altere se o Vault estiver em outro endereço
        token: 'SEU_TOKEN_GERADO_ACIMA', // Use o token gerado pela política
      });
    
      try {
        const secret = await vault.read('secret/my-app');
        console.log('API Key:', secret.data.api_key);
        console.log('Database Password:', secret.data.db_password);
      } catch (error) {
        console.error('Error reading secret:', error.message);
      }
    }
    
    getSecrets();
    
  3. Execute o aplicativo:

    node index.js
    

Se tudo estiver configurado corretamente, o script Node.js irá recuperar e imprimir o api_key e db_password do Vault.

Conclusão

Este guia fornece uma introdução detalhada para instalar, configurar e integrar o Vault em sua aplicação. Lembre-se que segurança é fundamental. Sempre armazene as chaves e tokens de forma segura, e revise regularmente as políticas de acesso. Explore a documentação do Vault para descobrir recursos mais avançados e otimizar a segurança da sua infraestrutura.

Top comments (0)