Melhores Práticas de Logging
O logging do PostgreSQL suporta segurança, ajuste de performance e resposta a incidentes. Estas regras equilibram o valor forense contra o custo de disco e SIEM para PostgreSQL 18.4 em ambientes cloud e auto-hospedados.
Como Usar Esta Lista
- Aplique no provisionamento do cluster e após qualquer incidente de volume de logs
- Combine com Noções Básicas de Logging para nomes de GUC
- Revise a retenção contra requisitos de legal hold anualmente
A - Estrutura e Envio
- csvlog ou jsonlog com logging_collector ativado. Não apenas stderr bruto em produção.
- log_line_prefix inclui usuário, db, app, IP do cliente, ID da sessão. Timestamps UTC.
- Logs enviados para fora do host em até 5 minutos. Filebeat, Fluent Bit, Vector, ou exportação cloud.
- Atraso do shipper monitorado. Alerte se o backlog > 15 minutos.
- Índice ou bucket separado para auditoria vs debug. Retenção e RBAC diferentes.
B - O Que Registrar
- log_connections e log_disconnections ativados. Auditoria de sessão base.
- log_statement = ddl. Todas as alterações de esquema capturadas.
- log_min_duration_statement ajustado (500-1000ms OLTP). Não log_statement=all.
- log_lock_waits ativado durante janelas de migração. Opcional sempre ativo para sistemas críticos.
- pgaudit com escopo para tabelas regulamentadas. Não leitura global em todas as tabelas.
- Duração de checkpoints e autovacuum registrada em um limite razoável.
C - Disciplina da Aplicação
- application_name definido por serviço e pool. Identifica o proprietário em cada linha.
- Apenas queries parametrizadas. Previne PII literal em logs de erro.
- Logs de aplicativo nunca duplicam SQL completo com segredos. Referencie queryid ou trace id.
- GUC de sessão para ator humano em triggers de auditoria. Imposto pelo middleware.
- Redacione senhas DSN em manifestos orquestradores. Segredos apenas do vault.
D - Retenção e Conformidade
- Retenção quente de 30-90 dias no mínimo. Morna/fria conforme regulamentação.
- Procedimento de legal hold documentado. Pause TTL na tag de incidente.
- Simulação trimestral de busca de logs. Prove que a query para usuário/tabela de amostra funciona.
- WORM ou Object Lock no bucket de arquivo. Resistência à adulteração.
- Acesso ao SIEM restrito e auditado. Não toda a organização de engenharia.
E - Volume e Segurança
- Alerta de disco em volume de logs separado do PGDATA. Limite de 85%.
- Sem log_statement=all sem aprovação de execução. Apenas debug com tempo limitado.
- Rotacione e comprima arquivos locais. Limites de tamanho/idade do logging_collector definidos.
- Exportação pós-incidente antes que a rotação delete evidências.
- Versão do parser jsonlog fixada em CI. Testes de drift de esquema em linha de amostra.
FAQs
Logging mínimo para inicialização?
csvlog, conexões, ddl, consultas lentas de 1s, envio central, retenção de 30 dias.
Registrar conexões de replicação?
Eventos de conexão sim; não cada linha replicada. Use métricas de replicação para lag.
Postgres gerenciado ainda precisa de configuração?
Sim - grupo de parâmetros para durações e classes de declaração; habilite a exportação de logs.
Como cortar custos?
Aumente o limite de lentidão, reduza o escopo do pgaudit, remova índices de debug, encurte a retenção quente.
queryid nos logs?
Útil para correlacionar com pg_stat_statements - inclua no prefixo quando suportado.
Logging apenas de erros?
Insuficiente para conformidade e ajuste de consultas lentas. Apenas erros perdem a auditoria de DDL.
Bancos de dados de desenvolvimento?
stderr localmente ok; sem roteamento de shipper de produção.
Quem é o dono do mapeamento do parser?
SRE da Plataforma com entrada de DBA sobre os requisitos de campo.
Logging de "break-glass"?
pgaudit elevado na role de administrador durante incidente; reverter depois.
GDPR nos logs?
Minimização de dados no campo de mensagem; DPIA documenta interesse legítimo para logs de segurança.
Relacionados
- Noções Básicas de Logging - Starter de GUC
- csvlog e Logs JSON - Pipeline SIEM
- pgaudit e Logging de Conformidade - escopo de auditoria
- Consultas Forenses - investigação
- Melhores Práticas de Monitoramento - pareamento de métricas
Versões de Stack: Esta página foi escrita para PostgreSQL 18.4 (stable 18, maintenance 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x, e PostGIS 3.5+.