Audit-Logs auf Rollen- und Objektebene mit pgaudit führen
PostgreSQLSicherheitBefehl
-- 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;Was es tut
Protokolliert serverweit DDL und Rechteänderungen, alle Lese-/Schreibvorgänge einer bestimmten Rolle und Zugriffe auf sensible Tabellen/Spalten, die der Auditor-Rolle gewährt sind, als strukturierte Log-Zeilen mit dem Präfix 'AUDIT:'.
Wann einsetzen
Um bei Compliance-Audits wie DSGVO, PCI-DSS oder SOX nachzuweisen, wer auf sensible Daten zugegriffen hat.
Vorsicht
pgaudit.log = 'all' oder 'read' serverweit zu aktivieren, steigert Log-Volumen und I/O stark; grenze den Umfang mit Rollen- oder Objekt-Auditing ein. Ein Superuser kann das Auditing abschalten (ALTER SYSTEM/ALTER ROLE); leite die Einträge an ein zentrales Log-System (syslog/SIEM) und speichere sie unabhängig vom Datenbankserver. log_parameter = on protokolliert auch Bind-Parameter (personenbezogene Daten). Rolleneinstellungen wirken in neuen Sessions. Die Major-Version von pgaudit muss der Major-Version von PostgreSQL entsprechen (pgaudit 17.x = PG17).
Verwandte Einträge
- Rollenhierarchie nach Least Privilege aufbauen (GRANT + ALTER DEFAULT PRIVILEGES)
- Mandantentrennung mit Row-Level Security einrichten
- Regelreihenfolge in pg_hba.conf prüfen und sicher neu laden
- SSL/TLS aktivieren und verschlüsselte Verbindungen prüfen (pg_stat_ssl)
- Von md5-Passwörtern auf scram-sha-256 migrieren