Штатный log_statement = all пишет все запросы плоским текстом без структуры — для аудита по требованиям безопасности (кто читал таблицу с ПДн, кто менял схему) этого недостаточно. pgAudit добавляет классифицированный лог, который проще парсить и фильтровать.
Подключение:
shared_preload_libraries = 'pgaudit'
(требует перезапуска инстанса, не reload). Дальше в postgresql.conf или на уровне роли:
ALTER SYSTEM SET pgaudit.log = 'read, write, ddl';
SELECT pg_reload_conf();
Классы read/write логируют SELECT и модифицирующие запросы отдельно от ddl (CREATE/ALTER/DROP) — можно включить только то, что реально нужно для аудита, не заливая лог избыточным SELECT-шумом на нагруженной базе.
#postgresql #security #dba
