Manter logs de auditoria em nível de role e de objeto com pgaudit
PostgreSQLSegurançaComando
-- Prerequisite: shared_preload_libraries = 'pgaudit' + restart, then:
CREATE EXTENSION pgaudit;
-- Session auditing: server-wide, only DDL and role/privilege changes
ALTER SYSTEM SET pgaudit.log = 'ddl, role';
ALTER SYSTEM SET pgaudit.log_relation = on;
ALTER SYSTEM SET pgaudit.log_parameter = off;
SELECT pg_reload_conf();
-- All reads/writes of a specific application role
ALTER ROLE web_app SET pgaudit.log = 'read, write';
-- Object auditing: privileges granted to the auditor role = operations to log
CREATE ROLE auditor NOLOGIN;
ALTER SYSTEM SET pgaudit.role = 'auditor';
SELECT pg_reload_conf();
GRANT SELECT, DELETE ON customer TO auditor;
GRANT UPDATE (balance) ON customer TO auditor;O que faz
Registra, como linhas de log estruturadas com o prefixo 'AUDIT:', DDL e mudanças de privilégios em todo o servidor, todas as leituras/gravações de uma role específica e o acesso a tabelas/colunas sensíveis concedidas à role de auditor.
Quando usar
Para provar quem acessou dados sensíveis em auditorias de conformidade como GDPR, PCI-DSS ou SOX.
Atenção
Habilitar pgaudit.log = 'all' ou 'read' em todo o servidor aumenta muito o volume de log e o I/O; restrinja o escopo com auditoria por role ou por objeto. Um superusuário pode desligar a auditoria (ALTER SYSTEM/ALTER ROLE); envie os registros a um sistema central de logs (syslog/SIEM) e armazene-os independentemente do servidor de banco. log_parameter = on também registra os parâmetros de bind (dados pessoais). As configurações de role valem em novas sessões. A versão major do pgaudit deve coincidir com a versão major do PostgreSQL (pgaudit 17.x = PG17).
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
- Habilitar SSL/TLS e verificar conexões criptografadas (pg_stat_ssl)
- Migrar de senhas md5 para scram-sha-256