Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

PGAUDIT_CONFIG_ERROR 1С:Предприятие и СУБД

Аудит действий пользователей в PostgreSQL с расширением pgaudit: Настройка

Обновлено: 26.08.2026 · Официальная документация ↗
  • Требования регуляторов и ИБ по детальному логированию операций доступа к персональным данным (ФЗ-152, PCI-DSS).
  • Невозможность определить, кто именно удалил или модифицировал критические системные таблицы.
  • Стандартный параметр log_statement = 'all' генерирует неструктурированный шум и забивает дисковые массивы.

1. Установка пакета pgaudit

# Debian/Ubuntu
apt-get install -y postgresql-16-pgaudit

# RHEL/Rocky Linux
dnf install -y pgaudit16

2. Конфигурация в postgresql.conf

Добавьте pgaudit в предзагружаемые библиотеки:

shared_preload_libraries = 'pgaudit'

# Классы логируемых событий (READ, WRITE, FUNCTION, ROLE, DDL, MISC)
pgaudit.log = 'ddl, role, write'

# Логировать параметры параметризованных запросов
pgaudit.log_parameter = on

# Раздельное логирование команд внутри сессии
pgaudit.log_relation = on

# Логирование системных служебных запросов (отключено для снижения шума)
pgaudit.log_catalog = off

Перезапустите СУБД:

systemctl restart postgresql

3. Активация расширения в целевой БД

CREATE EXTENSION pgaudit;

4. Точечный аудит доступа к конфиденциальной таблице (Object Auditing)

Создайте выделенную роль для селективного аудита чтения таблицы зарплат:

CREATE ROLE auditor_role NOINHERIT;
GRANT SELECT ON confidential_payroll TO auditor_role;

-- Включение аудита только для объектов, к которым имеет доступ auditor_role
SET pgaudit.role = 'auditor_role';
💡 Практика специалистов: Не включайте класс pgaudit.log = 'read' глобально на всем сервере — это приведет к фиксации каждого SELECT запроса и мгновенно переполнит хранилище логов.

Частые вопросы (FAQ)

Чем pgaudit лучше стандартного параметра log_statement = all?

pgaudit формирует структурированные записи логов с разделением на классы операций, позволяет разделять аудит DDL, чтение и запись, а также поддерживает объектный аудит отдельных таблиц.

Логирует ли pgaudit пароли при выполнении CREATE/ALTER USER?

Нет. pgaudit автоматически маскирует пароли в теле запросов (заменяет на <unlogged>), предотвращая утечку секретов в файлы логов.

Как собирать логи pgaudit в централизованные SIEM/ELK системы?

Записи pgaudit имеют фиксированный тег AUDIT: SESSION,... в системном выводе syslog/journald, что позволяет легко фильтровать их с помощью Filebeat, Vector или Rsyslog.

Можно ли включить логирование SELECT только для определенных пользователей?

Да, через механизм pgaudit.role: аудит чтения сработает только тогда, когда пользователь обращается к таблице, права на которую выданы роли аудитора.

Полезные материалы
Рекомендуем