Ведение журнала аудита в Базе данных Azure для PostgreSQL

Аудит действий в базе данных в Azure Database для PostgreSQL доступен с помощью расширения pgaudit. pgaudit предоставляет подробное журналирование аудита сеансов и/или объектов.

Если вам нужны журналы на уровне ресурсов Azure для таких операций, как вычисление и масштабирование хранилища, см. Журнал действий Azure.

Рекомендации по использованию

По умолчанию pgaudit протоколирует операторы, а ваши обычные сообщения журнала выводятся с помощью стандартного механизма журналирования Postgres. В базе данных Azure для PostgreSQL можно настроить отправку всех журналов в хранилище журналов Azure Monitor для последующего анализа в Log Analytics. Если включить ведение журнала ресурсов Azure Monitor, журналы автоматически отправляются (в формате JSON) в службу хранилища Azure, Центры событий и (или) журналы Azure Monitor в зависимости от выбранного варианта.

Чтобы узнать, как настроить ведение журналов в служба хранилища Azure, Центрах событий или журналах Azure Monitor, см. раздел о журналах ресурсов в статье о журналах сервера.

Установка расширения

Чтобы использовать расширение pgaudit, необходимо добавить его в список разрешённых, загрузить и создать это расширение в базе данных, где вы планируете его использовать.

Настройка параметров расширения

pgaudit позволяет настроить ведение журнала аудита сеансов или объектов. При ведении журнала аудита сеансов создаются подробные журналы выполненных инструкций. Ведение журнала аудита объектов связано с аудитом, охватывающим конкретные связи. Можно выбрать один или оба типа ведения журнала.

После включения pgauditего параметры можно настроить для запуска ведения журнала.

Чтобы настроить pgaudit, выполните следующие инструкции:

Использование портала Azure:

  1. Выберите экземпляр Базы данных Azure для PostgreSQL.

  2. В меню ресурсов в разделе Настройки выберите Параметры.

  3. Найдите параметры pgaudit.

  4. Выберите соответствующий параметр для редактирования. Например, чтобы начать регистрировать операторы INSERT, UPDATE, DELETE, TRUNCATE и COPY, задайте для pgaudit.log значение WRITE.

  5. Нажмите кнопку "Сохранить" , чтобы сохранить изменения.

Официальная документацияpgaudit содержит определение каждого параметра. Сначала проверьте параметры и убедитесь, что вы получаете ожидаемое поведение.

Например, установка pgaudit.log_client в значение ON не только записывает события аудита в журнал сервера, но и отправляет их клиентским приложениям (например, psql). Этот параметр обычно следует отключать.

Параметр pgaudit.log_level будет включен, только если включен pgaudit.log_client.

В База данных Azure для PostgreSQL значение pgaudit.log нельзя задать с помощью сокращённой записи со знаком - (минус), как описано в документации pgaudit. Все обязательные классы инструкций (READ, WRITE и т. д.) должны быть указаны по отдельности.

Если задать для параметра log_statement значение DDL или ALL и выполнить команду CREATE ROLE/USER ... WITH PASSWORD ... ; или ALTER ROLE/USER ... WITH PASSWORD ... ;, PostgreSQL создаст запись в журналах PostgreSQL, в которой пароль записывается в открытом виде, что может представлять потенциальный риск безопасности. Это ожидаемое поведение для структуры ядра PostgreSQL.

Однако вы можете использовать расширение pgaudit и установить pgaudit.log в значение DDL, при котором в журнале сервера Postgres не записывается ни один оператор CREATE/ALTER ROLE, в отличие от случая, когда log_statement устанавливается в значение DDL. Если вам нужно записать эти инструкции, можно также задать значение pgaudit.logROLE, которое редактирует пароль из журналов во время ведения журналаCREATE/ALTER ROLE.

Формат журналов аудита

Каждая запись аудита начинается с AUDIT:. Формат остальной части записи подробно описан в документацииpgaudit.

Начало работы

Чтобы быстро начать, задайте значение pgaudit.logALLи откройте журналы сервера, чтобы просмотреть выходные данные.

Просмотр журналов аудита

Способ доступа к журналам зависит от выбранной конечной точки. См. статью об учетной записи хранения журналов в служба хранилища Azure. См. статью Потоковая передача журналов Azure для Центров событий.

Журналы Azure Monitor отправляются в выбранную рабочую область. Журналы Postgres используют режим сбора данных AzureDiagnostics, поэтому их можно запрашивать из таблицы AzureDiagnostics. Дополнительные сведения о запросах и оповещениях см. в обзоре Запросы журналов Azure Monitor.

Чтобы начать работу, можно использовать этот запрос. Вы можете использовать запросы для настройки оповещений.

Поиск всех pgaudit записей в журналах Postgres для определенного сервера в последний день

AzureDiagnostics
| where Resource =~ "<flexible-server-name>"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

Обновление до новой основной версии с установленным расширением pgaudit

Во время обновления основной версии расширение pgaudit автоматически удаляется, а затем повторно создается после завершения обновления. При восстановлении расширения все пользовательские конфигурации, заданные в pgaudit.log или других связанных параметрах, не сохраняются автоматически.