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

Область применения: гибкий сервер Базы данных Azure для PostgreSQL

Ведение журнала действий базы данных в База данных Azure для PostgreSQL гибкий сервер доступен через расширение аудита PostgreSQL: pgAudit. pgAudit предоставляет подробные сведения о сеансе и (или) ведении журнала аудита объектов.

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

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

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

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

Установка pgAudit

Прежде чем установить расширение pgAudit в База данных Azure для PostgreSQL гибкий сервер, необходимо разрешить расширение pgAudit для использования.

В случае использования портала Azure выполните следующие действия:

  1. Выберите гибкий экземпляр сервера База данных Azure для PostgreSQL.
  2. На боковой панели выберите Параметры сервера.
  3. Найдите параметр azure.extensions.
  4. Выберите pgAudit в качестве расширения, которое вы хотите разрешить. Screenshot showing Azure Database for PostgreSQL - allow-listing extensions for installation.

В случае использования Azure CLI:

Расширения можно добавить в список разрешенных с помощью команды CLI parameter set.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value pgAudit

Чтобы установить pgAudit, необходимо включить его в общие библиотеки предварительной загрузки сервера. Чтобы изменение параметра shared_preload_libraries вступило в силу, перезапустите сервер. Параметры можно изменить с помощью портала Azure, Azure CLI или REST API.

В случае использования портала Azure выполните следующие действия:

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

  2. На боковой панели выберите Параметры сервера.

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

  4. Выберите pgAudit. Screenshot showing Azure Database for PostgreSQL flexible server enabling shared_preload_libraries for pgaudit.

  5. Вы можете проверить, загружен ли pgaudit в shared_preload_libraries, выполнив следующий запрос в PSQL:

    show shared_preload_libraries;
    

    В результате запроса появится pgaudit , возвращающий shared_preload_libraries.

  6. Подключение на сервер с помощью клиента (например, psql) и включите расширение pgAudit.

    CREATE EXTENSION pgaudit;
    

Совет

Если появится сообщение об ошибке, подтвердите перезапуск сервера после сохранения shared_preload_libraries.

Параметры pgAudit

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

После включения pgAudit можно настроить его параметры, чтобы начать ведение журнала. Чтобы настроить pgAudit, можно выполнить приведенные ниже инструкции. В случае использования портала Azure выполните следующие действия:

  1. Выберите сервер базы данных Azure для PostgreSQL.
  2. На боковой панели выберите Параметры сервера.
  3. Найдите параметры pgaudit.
  4. Выберите соответствующий параметр настроек, который следует изменить. Например, для запуска ведения журнала задано значение <a0//gt;.WRITEScreenshot showing Azure Database for PostgreSQL - configuring logging with pgaudit
  5. Щелкните Сохранить, чтобы сохранить изменения.

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

Примечание.

Если для параметра pgaudit.log_client задано значение "Включено", журналы будут перенаправлены в клиентский процесс (например, 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' на странице параметров сервера. При этом инструкции CREATE/ALTER ROLE не записываются в журнал Postgres в отличие от параметра log_statement='DDL' Postgres. Если требуется зарегистрировать эти инструкции, можно добавить pgaudit.log ='ROLE'. При этом 'CREATE/ALTER ROLE' ведения журнала скомпонует пароль из журналов.

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

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

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

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

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

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

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

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

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

AzureDiagnostics
| where Resource =~ "myservername"
| where Category == "PostgreSQLLogs"
| where TimeGenerated > ago(1d)
| where Message contains "AUDIT:"

Следующие шаги