Entrar ou criar conta

ULC Lab · implementação reproduzível

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 e rotação automatizada com HashiCorp Vault
Ligado ao treinamento Gerenciamento de segredos e rotação automatizada com HashiCorp Vault
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.