Habilitar SSL/TLS e verificar conexões criptografadas (pg_stat_ssl)
PostgreSQLSegurançaComando
# Server certificate (self-signed for testing; use a corporate CA in production)
openssl req -new -x509 -days 365 -nodes -subj "/CN=db.example.com" -keyout server.key -out server.crt
chmod 600 server.key # in the data directory, owned by postgres
-- Enable SSL (a reload is enough)
ALTER SYSTEM SET ssl = on;
ALTER SYSTEM SET ssl_cert_file = 'server.crt';
ALTER SYSTEM SET ssl_key_file = 'server.key';
ALTER SYSTEM SET ssl_min_protocol_version = 'TLSv1.2';
SELECT pg_reload_conf();
-- Which connections are encrypted?
SELECT a.pid, a.usename, a.client_addr, a.application_name,
s.ssl, s.version, s.cipher, s.bits
FROM pg_stat_ssl s
JOIN pg_stat_activity a USING (pid)
WHERE a.backend_type = 'client backend'
ORDER BY s.ssl, a.usename;
# On the client, verify the server identity as well
psql "host=db.example.com dbname=postgres user=postgres sslmode=verify-full sslrootcert=root.crt"O que faz
Habilita TLS com um certificado de servidor sem restart, define a versão mínima do protocolo e lista se as conexões atuais estão criptografadas, com a versão de TLS e o cipher.
Quando usar
Para requisitos de auditoria de segurança/conformidade (PCI, GDPR), para proteger senhas e dados em trânsito na rede.
Atenção
ssl = on sozinho não impõe criptografia; os clientes ainda podem conectar sem criptografia com sslmode=prefer/disable. Para impor, use hostssl em vez de host no pg_hba.conf (e adicione hostnossl ... reject). sslmode=require não verifica a identidade do servidor (aberto a MITM); use verify-full para verificação do certificado. O arquivo de chave deve pertencer ao usuário postgres com modo 0600 (ou ao root com 0640); senão o SSL não é carregado, então verifique o log e SHOW ssl após o reload. Renovações de certificado também são aplicadas com reload.
Relacionados
- Montar uma hierarquia de roles com privilégio mínimo (GRANT + ALTER DEFAULT PRIVILEGES)
- Configurar isolamento de tenants com row-level security
- Validar a ordem das regras do pg_hba.conf e recarregar com segurança
- Migrar de senhas md5 para scram-sha-256
- Manter logs de auditoria em nível de role e de objeto com pgaudit