Ведение журнала аудита на гибком сервере База данных Azure для PostgreSQL

Вы можете проверять действия базы данных в База данных Azure для 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 Logs.

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

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

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

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

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