Hashicorp Vault

Cap 2 • Aula 4 ~5 min leitura

HashiCorp Vault

O HashiCorp Vault é uma ferramenta para gerenciar segredos e proteger dados sensíveis de forma centralizada. Para engenheiros que lidam constantemente com credenciais de dispositivos, chaves de API e certificados, o Vault se torna um componente para aumentar a segurança e a eficiência da automação.

Por que é Importante para a Automação de Rede?

  • Centralização de Segredos: Chega de senhas e chaves de API espalhadas em scripts, playbooks ou arquivos de configuração. O Vault oferece um local único e seguro para armazenar todas as credenciais (senhas, chaves SSH, certificados, tokens de API).
  • Credenciais Dinâmicas: Em vez de usar credenciais estáticas e de longa duração, o Vault pode gerar segredos sob demanda com tempo de vida limitado (TTL). Imagine um script que precisa acessar um roteador: ele solicita uma credencial temporária ao Vault, a utiliza e, ao final, a credencial é revogada automaticamente. Isso reduz drasticamente a janela de oportunidade para um ataque em caso de vazamento.
  • Rotação Automática de Senhas: O Vault pode gerenciar o ciclo de vida das credenciais de dispositivos de rede, rotacionando-as automaticamente de acordo com políticas predefinidas. Isso melhora a postura de segurança e atende a requisitos de conformidade (compliance).
  • Auditoria e Controle de Acesso: Todas as interações com o Vault são registradas, fornecendo uma trilha de auditoria clara sobre quem acessou qual segredo e quando. É possível criar políticas granulares (ACLs) para definir exatamente qual script, serviço ou usuário tem permissão para acessar determinadas credenciais.
  • Integração com o Ecossistema de Automação: O Vault se integra facilmente com ferramentas como Ansible, Terraform, Python e pipelines de CI/CD, permitindo que suas automações acessem credenciais de forma segura e programática.

Como Funciona: Visão Geral

O Vault opera como um serviço central. Aplicações e usuários se autenticam no Vault usando um dos vários métodos disponíveis (ex: token, AppRole, LDAP) e, se autorizados por políticas, recebem acesso aos segredos. Todos os dados armazenados pelo Vault são criptografados.

Fluxo de Recuperação de Segredo para um Script de Automação

O diagrama de sequência abaixo ilustra como um script de automação (por exemplo, um playbook Ansible ou um script Python) obtém uma credencial de um dispositivo de rede de forma segura usando o Vault.

sequenceDiagram participant Script as Script de Automação participant Vault as Servidor Vault participant Roteador as Dispositivo de Rede Script->>+Vault: Autenticação (ex: AppRole, Token) Note right of Script: O script se autentica no Vault
para provar sua identidade. Vault-->>-Script: Retorna Token de Cliente com Políticas Script->>+Vault: Solicita credencial para o Roteador Note right of Script: Com o token, o script pede uma
credencial dinâmica ou estática. Vault-->>-Script: Entrega a credencial (usuário/senha) Script->>+Roteador: Acessa o dispositivo com a credencial Note right of Script: O script agora pode configurar
ou monitorar o roteador. Roteador-->>-Script: Resposta da Operação Note over Script,Vault: Ao final, a credencial pode ser
revogada ou expirar automaticamente.

Cheatsheet de Conceitos Essenciais

Conceito Descrição
Secrets Engine Componente do Vault responsável por armazenar, gerar ou criptografar segredos. Existem engines para KV (Key-Value), bancos de dados, SSH, AWS
Auth Method Método pelo qual um cliente (usuário ou máquina) se autentica no Vault para provar sua identidade. Exemplos: Token, AppRole, JWT, LDAP, GitHub.
Policies Regras que definem quais caminhos (paths) um cliente autenticado tem permissão para acessar e quais operações (leitura, escrita) pode realizar.
Token "Passaporte" para o Vault. Após a autenticação, o cliente recebe um token associado a políticas que determinam suas permissões.
Dynamic Secrets Segredos gerados sob demanda que não existiam previamente. São ideais para acesso a sistemas, pois possuem tempo de vida limitado e são únicos por requisição.
Seal / Unseal O Vault inicia em um estado "selado" (sealed), o que significa que ele sabe onde os dados estão, mas não como descriptografá-los. O processo de "unseal" consiste em fornecer as chaves de descriptografia para que o Vault se torne operacional.

Exercicio

Laboratorio

Neste laboratorio, vamos instalar, adicionar senha e utilizar o sdk para obter as credeciais para logar em nossos roteadores.