Исходная страница в нативном Markdown: Безопасность / Аудит
Примечание
Эта страница извлечена из официального PDF в нативный Markdown. Текст слайдов, код и комментарии сохранены в порядке чтения; исходные PDF и HTML остаются эталоном макета.
HTML source:pgpro_15_audit.htmlArchive:PGPRO-handouts-16.zipСтраниц PDF: 21
Некоммерческое использование материалов курса (презентации, демонстрации) разрешается без ограничений. Коммерческое использование возможно только с письменного разрешения компании Postgres Professional. Запрещается внесение изменений в материалы курса.
Обратная связь
Отзывы, замечания и предложения направляйте по адресу: edu@postgrespro.ru
Отказ от ответственности
Компания Postgres Professional не несет никакой ответственности за любые повреждения и убытки, включая потерю дохода, нанесенные прямым или непрямым, специальным или случайным использованием материалов курса. Компания Postgres Professional не предоставляет каких-либо гарантий на материалы курса. Материалы курса предоставляются на основе принципа «как есть» и компания Postgres Professional не обязана предоставлять сопровождение, поддержку, обновления, расширения и изменения.
Page 2: Темы
Расширение pg_proaudit
Возможности pg_proaudit
Аудит ролей и объектов
Сохранение настроек
Запись событий аудита
Page 3: Расширение pg_proaudit
Аудит — средство сбора событий безопасности
не отладка (поиск ошибок и неисправностей)
не мониторинг (выявление аномалий и проблем)
Не зависит от обычного журнала сообщений
отдельный фоновый процесс
отдельный журнал событий безопасности
Доступ к расширению и журналу событий безопасности должен быть предоставлен только уполномоченным ролям
Комментарии преподавателя
Аудит регистрирует действия, связанные с объектами кластера баз данных. При этом поток регистрируемых событий может быть очень велик, что затрудняет анализ инцидентов и увеличивает нагрузку на систему. Поэтому требуется точный выбор объектов наблюдения.
Расширение pg_proaudit разработано в Postgres Professional для регистрации событий, связанных с безопасностью. Оно реализует концепцию независимости подсистемы аудита. Для этого запускается отдельный фоновый процесс pg_proaudit logging worker, который регистрирует события безопасности независимо от записи в обычный журнал сообщений сервера.
Место размещения журнала событий безопасности (журнал аудита) в файловой системе и настройки для передачи сообщений в syslog или во внешнюю систему определяются параметрами конфигурации расширения pg_proaudit. Каждое событие описывается фиксированным набором полей, для него формируется отдельная строка журнала или отдельное сообщение.
Доступ к расширению pg_proaudit и журналам аудита следует предоставлять только пользователям, исполняющим роль администратора информационной безопасности (например, администратору безопасности; см. тему «Защищенная схема»).
{#source-figure-005 caption=“Source slide page 5: Возможности pg_proaudit”}
Классы фиксируемых событий
команды DDL — создание, изменение и удаление объектов баз данных
команды DCL — управление доступом к объектам баз данных
команды DML — обращение к объектам баз данных
подключения и отключения
действия, выполняемые заданной ролью
Комментарии преподавателя
Расширение pg_proaudit позволяет отслеживать действия заданных ролей, а также следить за операциями с заданными объектами (например, конкретными таблицами) или с определенными классами объектов и событий:
● команды создания, изменения и удаления объектов СУБД;
● команды управления доступом к объектам баз данных;
● команды обращения к объектам баз данных;
● события аутентификации или отключения от баз данных;
● любые команды, выполняемые заданным пользователем.
В том числе можно регистрировать в журнале аудита обращения к системному каталогу и отслеживать работу с профилями. Есть возможность исключить аудит временных объектов.
Управление аудитом ролей, объектов или типов объектов
pg_proaudit_set_rule()
pg_proaudit_remove_rule()
Отключение аудита всех событий
pg_proaudit_reset()
Текущие настройки
представление pg_proaudit_settings
Комментарии преподавателя
Для отслеживания событий или классов событий, выполняемых ролями (в том числе групповыми), а также событий, связанных с определенным объектом или типом объектов базы данных, создаются соответствующие правила. Для работы с правилами используются функции:
● pg_proaudit_set_rule — создание правила регистрации;
● pg_proaudit_remove_rule — удаление правила регистрации.
Функция pg_proaudit_reset отключает регистрацию всех событий.
Регистрация событий аудита запускается и останавливается немедленно при вызове этих функций.
Текущие настройки аудита (список правил) можно получить с помощью представления pg_proaudit_settings.
Page 7: Аудит ролей и объектов
Включим аудит всех событий, связанных с управлением ролями — для текущей базы, для всех объектов и всех ролей:
Зарегистрируем нового пользователя и отдельной командой дадим право начинать сеанс.
=>CREATEROLEalice;
CREATEROLE
=>ALTERROLEaliceLOGIN;
ALTERROLE
Теперь назначим пользователю пароль:
=>ALTERROLEalicePASSWORD'alice';
ALTERROLE
Ожидаем, что в журнал аудита попали три записи, по числу выполненных команд. Выведем последние строки из журнала аудита, имеющего самую свежую дату модификации:
2026-07-2723:43:49.533MSK,"student","pgpro_audit",829006,INFO,1,1,"CREATE
ROLE","ROLE","alice",SUCCESS,"","CREATE ROLE
alice;",,"student",019FA551-CD9D-7F02-B259-AD66B00330DB,964,4/9,,[local]2026-07-2723:43:49.583MSK,"student","pgpro_audit",829006,INFO,2,1,"ALTER
ROLE","ROLE","alice",SUCCESS,"","ALTER ROLE alice
LOGIN;",,"student",019FA551-CDCF-7465-91E4-C9A68E5391D5,965,4/10,,[local]2026-07-2723:43:49.728MSK,"student","pgpro_audit",829006,INFO,3,1,"ALTER
ROLE","ROLE","alice",SUCCESS,"","ALTER ROLE alice password
<REDACTED>",,"student",019FA551-CE60-734F-A2B0-C02883666153,966,4/11,,[local]
Обратите внимание, что конфиденциальная информация (в данном случае — пароли) скрыта за пометкой .
Текстовый CSV-файл удобен для автоматизированной обработки, но для ручного анализа может быть удобнее обращаться к журналу с помощью SQL, используя обертку сторонних данных. Установим расширение file_fdw и определим сторонний сервер.
Настройки, сделанные функциями, необходимо сохранить в файле PGDATA/pg\_proaudit.conf
pg_proaudit_save()
Файл настроек аудита можно отредактировать напрямую, но после этого надо перечитать
pg_proaudit_reload()
Комментарии преподавателя
Настройки аудита, произведенные вызовами функций расширения pg_proaudit, будут потеряны после перезагрузки сервера, если не сохранить их в файле настроек pg_proaudit.conf.
Файл pg_proaudit.conf размещается в каталоге кластера данных (PGDATA), изменить его расположение нельзя.
Для сохранения текущих настроек в этот файл предназначена функция pg_proaudit_save. Аудит можно настраивать и непосредственным редактированием файла pg_proaudit.conf, но это не так удобно, как вызов функций расширения.
Если изменить настройки непосредственно в файле pg_proaudit.conf, их нужно прочитать и применить функцией pg_proaudit_reload.
При запуске сервера настройки из файла считываются автоматически.
Page 13: Настройки
Функция pg_proaudit_save записывает настройки аудита в файл pg_proaudit.conf. Если не сохранить настройки, они будут потеряны при остановке сервера.
Можно (хотя это не очень удобно) изменять файл pg_proaudit.conf любыми средствами редактирования текста. Например, удалим строку конфигурации аудита событий подключения:
Настройки аудита восстановлены, за исключением регистрации подключений.
Page 14: Запись событий аудита
{#source-figure-014 caption=“Source slide page 14: Запись событий аудита”}
Комментарии преподавателя
Параметр расширения pg_proaudit.log_destination определяет способ регистрации (один или несколько) событий безопасности:
● csvlog — записывать события в файл CSV.
Параметр pg_proaudit.log_filename задает шаблон имен файлов CSV, а параметр pg_proaudit.log_rotation_size — максимальный размер файла в килобайтах. Другой способ настройки ротации файлов журнала — по времени — устанавливается параметром pg_proaudit.log_rotation_age.
● ceflog — передавать события в SIEM-систему в формате CEF.
Поддержка открытого формата событий CEF (Common Event Format) позволяет отправлять собранные данные различным системам управления информацией и событиями безопасности (SIEM, Security Information and Event Management).
● syslog и cefsyslog — передавать события в службу syslog в формате syslog или CEF.
Передача сообщений в системную службу регистрации событий и хранения журналов (syslog) удобна при нескольких источниках событий. Популярные реализации службы позволяют фильтровать журнальные сообщения и передавать их по сети другим серверам.
-[RECORD1]----+------------------------------------------------------------------
log_time|2026-07-2723:43:53.391+03current_usr_name|aliceevent_type|INSERTstatus|SUCCESSquery_text|INSERTINTOtab1VALUES(1984,'Big brother is watching you...');rows|-[RECORD2]----+------------------------------------------------------------------
log_time|2026-07-2723:43:54.98+03current_usr_name|aliceevent_type|DELETEstatus|SUCCESSquery_text|DELETEFROMtab1;rows|1
Page 16: Итоги
Расширение pg\_proaudit регистрирует события аудита независимо от обычного журнала сообщений
Аудиту подлежат подключения и отключения, операции с объектами баз данных и действия ролей
Журнал аудита может сохраняться как в формате CSV, так и передаваться службам SIEM или syslog
Page 17: Практика
Настройте аудит для записи в CSV и syslog одновременно. Включите аудит регистрации ролей и создания таблиц. В следующих заданиях сравните сообщения, попадающие в CVS и в syslog. 2. Зарегистрируйте новую роль observed1 и настройте аудит подключений и отключений для этой роли. 3. Создайте таблицу tab1 так, чтобы роль observed1 могла выполнять команды DML с этой таблицей; владельцем таблицы должен быть другой пользователь. 4. Настройте регистрацию команд DML, выполненных любым пользователем, для таблицы tab1.
Для настройки аудита используйте функцию pg_proaudit_set_rule.
В заданиях с 2 по 4 просматривать сообщения аудита в файле CSV нужно в каталоге /var/lib/pgpro/ent-16/pg_proaudit.
Идентификатор, заранее записанный в параметр сервера syslog_ident, поможет отфильтровать необходимые строки журнала сообщений syslog, который находится в файле /var/log/syslog. Воспользуйтесь следующей командой:
Установим имя программы — идентификатор в записях syslog:
=>ALTERSYSTEMSETsyslog_ident='MY_audit';
ALTERSYSTEM
=>SELECTpg_reload_conf();
pg_reload_conf
----------------
t
(1 row)
Наличие идентификатора облегчит поиск записей аудита в журнале сообщений.
Настроим аудит регистрации пользователей и создания новых таблиц.
Аудит всех событий, связанных с управлением ролями:
2026-07-2800:16:10.719MSK,"observed1","pgpro_audit",887533,INFO,2,1,"SELECT","TABLE","public.tab1",SUCCESS,"","S
ELECT * FROM tab1;",,"observed1",019FA56F-6C5F-7365-AE2B-B6716031846C,,5/5,,[local]
student$ sudo grep -a MY_audit /var/log/syslog | tail -2
2026-07-2800:16:11.970MSK,"observed1","pgpro_audit",887533,INFO,3,1,"UPDATE","TABLE","public.tab1",SUCCESS,"","U
PDATE tab1 SET n=2;",,"observed1",019FA56F-7142-743C-9EF1-92E5AA3AED8A,,5/6,,[local]
student$ sudo grep -a MY_audit /var/log/syslog | tail -2
MSK,"observed1","pgpro_audit",887533,INFO,4,1,"DELETE","TABLE","public.tab1",SUCCESS,"","D
ELETE FROM tab1;",,"observed1",019FA56F-7611-7DC3-BBA7-6D315A10132C,,5/7,,[local]
student$ sudo grep -a MY_audit /var/log/syslog | tail -2