Entrar ou criar conta

Laboratório: Gerenciamento e Rotação Automatizada de Segredos com HashiCorp Vault e PostgreSQL

Você implementará um ambiente funcional com HashiCorp Vault gerenciando e rotacionando credenciais dinâmicas de um banco PostgreSQL. O laboratório pode ser concluído em cerca de 2 horas.

Gerenciamento de segredos automatizado com HashiCorp Vault
Ligado ao treinamento Gerenciamento de segredos automatizado com HashiCorp Vault

Roteiro para estudo em ambiente de laboratório ou de teste. Execute apenas em equipamentos, redes e contas que você tenha autorização para usar, com backup e homologação próprios. Comandos podem causar indisponibilidade ou perda de dados. Software e marcas citados pertencem aos seus titulares. Termos de Uso.

ULC-LAB-SEGU-0002 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
12
Validações
5
Versões da documentação consultada
HashiCorp Vault a versão estável atual · PostgreSQL a versão estável atual · psql (cliente PostgreSQL) a versão estável atual
Objetivo

Demonstrar, na prática, como proteger credenciais de banco de dados utilizando o HashiCorp Vault em modo dev, integrando-o a um PostgreSQL local. Você aprenderá a emitir, revogar e rotacionar segredos automaticamente, além de validar o acesso e entender pontos críticos de troubleshooting.

Topologia

Uma máquina virtual ou host físico executando três serviços: Vault (porta 8200), PostgreSQL (porta 5432) e um cliente de linha de comando. O Vault conecta-se localmente ao PostgreSQL para criar e gerenciar usuários dinâmicos. O usuário interage via CLI do Vault.

┌────────────┐        ┌──────────────┐
│  Cliente   │──────▶│   Vault      │
│ (CLI/API)  │       │ (localhost)  │
└────────────┘        │ 8200         │
                     │              │
                     ▼              │
                ┌──────────────┐    │
                │ PostgreSQL   │◀───┘
                │ (localhost)  │
                │ 5432         │
                └──────────────┘

Equipamentos e software

ItemRequisito, licença ou versão
Máquina virtual ou host físico2 vCPUs, 2 GB RAM, 10 GB disco, portas 8200 e 5432 livres, Ubuntu 22.04 ou equivalente
HashiCorp VaultMPL 2.0 · a versão estável atual
PostgreSQLPostgreSQL License · a versão estável atual
psql (cliente PostgreSQL)PostgreSQL License · a versão estável atual

Roteiro

  1. Instalar o Vault

    Você precisa do Vault instalado para gerenciar segredos. Use o repositório oficial para garantir a versão estável.

    curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
    sudo apt-add-repository "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
    sudo apt update && sudo apt install vault

    O que você deve ver: Vault instalado e disponível no PATH. 'vault --version' retorna a versão.

  2. Instalar o PostgreSQL

    O PostgreSQL será o banco de dados alvo para rotação de segredos. Instale a versão estável do repositório padrão.

    sudo apt update && sudo apt install postgresql postgresql-contrib

    O que você deve ver: Serviço 'postgresql' ativo. 'psql --version' retorna a versão.

  3. Configurar usuário administrador no PostgreSQL

    O Vault precisa de um usuário com permissão para criar e revogar usuários. Crie um usuário 'vaultadmin' com senha forte.

    sudo -u postgres psql -c "CREATE ROLE vaultadmin WITH LOGIN PASSWORD 'SenhaForte123' SUPERUSER;"

    O que você deve ver: CREATE ROLE

  4. Iniciar o Vault em modo dev

    O modo dev é prático para laboratório, mas não use em produção. Ele roda em memória e facilita testes rápidos.

    vault server -dev -dev-root-token-id=root &
    export VAULT_ADDR='http://127.0.0.1:8200'

    O que você deve ver: Vault server started! Root Token: root

  5. Exportar variável de ambiente do token

    Facilita o uso do CLI sem passar token em cada comando.

    export VAULT_TOKEN=root

    O que você deve ver: Variável VAULT_TOKEN definida

  6. Habilitar o secrets engine de banco de dados

    O Vault precisa do engine 'database' para gerenciar credenciais dinâmicas.

    vault secrets enable database

    O que você deve ver: Success! Enabled the database secrets engine

  7. Configurar a conexão do Vault com o PostgreSQL

    O Vault precisa saber como conectar ao PostgreSQL usando o usuário 'vaultadmin'.

    vault write database/config/postgresql \
        plugin_name=postgresql-database-plugin \
        allowed_roles="readonly" \
        connection_url="postgresql://vaultadmin:SenhaForte123@localhost:5432/postgres?sslmode=disable"

    O que você deve ver: Success! Data written to: database/config/postgresql

  8. Criar uma role dinâmica para usuários de leitura

    Defina como o Vault criará e revogará usuários temporários no PostgreSQL.

    vault write database/roles/readonly \
        db_name=postgresql \
        creation_statements="CREATE ROLE \"{{name}}\" WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}'; GRANT SELECT ON ALL TABLES IN SCHEMA public TO \"{{name}}\";" \
        default_ttl="1h" \
        max_ttl="24h"

    O que você deve ver: Success! Data written to: database/roles/readonly

  9. Gerar credencial dinâmica de leitura

    Peça ao Vault para criar um usuário temporário no PostgreSQL.

    vault read database/creds/readonly

    O que você deve ver: Retorna username, password e lease_duration

  10. Testar acesso ao PostgreSQL usando a credencial dinâmica

    Garanta que a credencial criada realmente acessa o banco.

    psql -h localhost -U <username> -d postgres -W

    O que você deve ver: Acesso concedido com permissão de leitura

  11. Revogar manualmente a credencial dinâmica

    Simule a rotação ou expiração manual revogando o lease.

    vault lease revoke <lease_id>

    O que você deve ver: Lease revoked

  12. Verificar que o usuário foi removido do PostgreSQL

    Confirme que o usuário dinâmico não existe mais.

    sudo -u postgres psql -c "\du"

    O que você deve ver: Usuário dinâmico não listado

Como saber que funcionou

TesteComandoCritério
Verificar se o Vault está rodandovault statusStatus: active
Verificar se o PostgreSQL aceita conexõespsql -h localhost -U vaultadmin -d postgresPrompt do psql aberto
Emitir credencial dinâmicavault read database/creds/readonlyRetorno de username e password temporários
Acessar PostgreSQL com credencial dinâmicapsql -h localhost -U <username> -d postgres -WAcesso permitido
Revogar lease e tentar acessar novamentepsql -h localhost -U <username> -d postgres -WAcesso negado após revogação

Troubleshooting

SintomaCausa provávelCorreção
vault read database/creds/readonly retorna erro de conexãoConfiguração incorreta da connection_url ou PostgreSQL não está aceitando conexões locaisVerifique se o PostgreSQL está rodando e se a connection_url está correta
psql não conecta com usuário dinâmicoUsuário expirado ou lease revogadoGere uma nova credencial dinâmica e tente novamente
vault lease revoke retorna erro de lease não encontradoLease_id informado está incorreto ou já expirouListe leases ativos e confirme o lease_id
Vault não inicia na porta 8200Porta já em uso ou permissão insuficienteLibere a porta ou altere a configuração de bind

Segurança e hardening

  • Nunca use modo dev do Vault em produção
  • Use senhas fortes e únicas para o usuário administrador
  • Restrinja o acesso de rede às portas 8200 e 5432 apenas para hosts autorizados
  • Revogue credenciais dinâmicas imediatamente após o uso em ambientes sensíveis
  • Audite logs de acesso ao Vault e ao PostgreSQL

Checklist final

Referências

  1. HashiCorp Vault - Database Secrets Engine · HashiCorp (developer.hashicorp.com)
  2. HashiCorp Vault CLI · HashiCorp (developer.hashicorp.com)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
2 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.