Вести журналы аудита на уровне ролей и объектов через pgaudit
PostgreSQLБезопасностьКоманда
-- 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;Что делает
Записывает DDL и изменения привилегий по всему серверу, все чтения/записи определённой роли и доступ к чувствительным таблицам/столбцам, выданным роли аудитора, в виде структурированных строк журнала с префиксом 'AUDIT:'.
Когда использовать
Чтобы доказать, кто обращался к чувствительным данным, при аудитах соответствия, таких как GDPR, PCI-DSS или SOX.
Внимание
Включение pgaudit.log = 'all' или 'read' на весь сервер резко увеличивает объём журналов и I/O; сужайте область через аудит ролей или объектов. Суперпользователь может отключить аудит (ALTER SYSTEM/ALTER ROLE); отправляйте записи в центральную систему журналов (syslog/SIEM) и храните их независимо от сервера базы данных. log_parameter = on также журналирует bind-параметры (персональные данные). Настройки ролей вступают в силу в новых сессиях. Мажорная версия pgaudit должна совпадать с мажорной версией PostgreSQL (pgaudit 17.x = PG17).
Связанные материалы
- Построить иерархию ролей с минимальными привилегиями (GRANT + ALTER DEFAULT PRIVILEGES)
- Настроить изоляцию арендаторов (tenant) через row-level security
- Проверить порядок правил pg_hba.conf и безопасно перечитать конфигурацию
- Включить SSL/TLS и проверить шифрование подключений (pg_stat_ssl)
- Перейти с паролей md5 на scram-sha-256