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).
Voir aussi
- Construire une hiérarchie de rôles à moindre privilège (GRANT + ALTER DEFAULT PRIVILEGES)
- Mettre en place l'isolation des tenants avec la row-level security
- Valider l'ordre des règles de pg_hba.conf et recharger sans risque
- Activer SSL/TLS et vérifier les connexions chiffrées (pg_stat_ssl)
- Migrer des mots de passe md5 vers scram-sha-256