DBAtlas · Atlas d'exploitation des bases de données

Conserver des journaux d'audit par rôle et par objet avec pgaudit

PostgreSQLSécurité

Commande

-- 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;

Ce que fait la commande

Enregistre, sous forme de lignes de journal structurées préfixées par 'AUDIT:', les DDL et changements de privilèges à l'échelle du serveur, toutes les lectures/écritures d'un rôle donné, et les accès aux tables/colonnes sensibles accordées au rôle auditeur.

Quand l'utiliser

Pour prouver qui a accédé à des données sensibles lors d'audits de conformité tels que RGPD, PCI-DSS ou SOX.

Attention

Activer pgaudit.log = 'all' ou 'read' à l'échelle du serveur augmente fortement le volume de journaux et les E/S ; restreignez la portée par audit de rôle ou d'objet. Un superutilisateur peut désactiver l'audit (ALTER SYSTEM/ALTER ROLE) ; envoyez les enregistrements vers un système de journalisation central (syslog/SIEM) et stockez-les indépendamment du serveur de base. log_parameter = on journalise aussi les paramètres de bind (données personnelles). Les réglages de rôle prennent effet dans les nouvelles sessions. La version majeure de pgaudit doit correspondre à la version majeure de PostgreSQL (pgaudit 17.x = PG17).

Ouvrir dans DBAtlas →

Voir aussi