Штатный 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