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

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

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

Примечание

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

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

Особенности использования

По умолчанию выписки из журналов pgAudit создаются вместе с регулярными выписками с использованием стандартного средства ведения журнала Postgres. В Базе данных Azure для PostgreSQL эти файлы журнала можно скачать на портале Azure или с помощью Azure CLI. Максимальный объем хранилища для сбора файлов равен 1 ГБ. Каждый файл хранится не более семи дней. Значение по умолчанию — три дня. Эта служба является вариантом краткосрочного хранилища.

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

Включение pgAudit приводит к созданию большого объема журналов на сервере, что негативно влияет на производительность и хранение журналов. Рекомендуем использовать журналы службы Monitor, которая предлагает варианты долговременного хранения, а также функции анализа и оповещений. Отключите стандартное ведение журнала, чтобы уменьшить влияние дополнительного ведения журнала на производительность:

  1. Задайте для параметра logging_collector значение OFF (Отключено).
  2. Перезапустите сервер, чтобы применить это изменение.

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

Установка pgAudit

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

Чтобы использовать портал, сделайте следующее:

  1. Выберите сервер базы данных Azure для PostgreSQL.

  2. В области слева в разделе Параметры выберите Параметры сервера.

  3. Выполните поиск по запросу shared_preload_libraries.

  4. Выберите PGAUDIT.

    Снимок экрана: База данных Azure для PostgreSQL включение shared_preload_libraries для PGAUDIT.

  5. Перезагрузите сервер, чтобы это изменение вступило в силу.

  6. Убедитесь, что pgaudit загружен в shared_preload_libraries, выполнив следующий запрос в psql:

    show shared_preload_libraries;
    

    Вы увидите в результатах запроса pgaudit, который возвратит shared_preload_libraries.

  7. Подключитесь к серверу с помощью клиента, такого как psql, и включите расширение pgAudit:

    CREATE EXTENSION pgaudit;
    

Совет

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

Параметры pgAudit

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

Примечание

Параметры pgAudit указываются глобально, и их невозможно указать на уровне базы данных или роли.

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

Чтобы настроить pgAudit на портале, сделайте следующее:

  1. Выберите сервер базы данных Azure для PostgreSQL.

  2. В области слева в разделе Параметры выберите Параметры сервера.

  3. Выполните поиск параметров pgaudit.

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

    Снимок экрана: База данных Azure для PostgreSQL настройки ведения журнала с помощью pgAudit.

  5. Выберите Сохранить, чтобы сохранить изменения.

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

  • Если параметр pgaudit.log_client включен, журналы перенаправляются в клиентский процесс, такой как psql, а не записываются в файл. В общем случае оставьте этот параметр отключенным.
  • Параметр pgaudit.log_level включен, только если включен параметр pgaudit.log_client.

Примечание

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

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

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

Если вам нужны другие поля для удовлетворения требований к аудиту, используйте параметр Postgres log_line_prefix. Строк log_line_prefix выводится в начале каждой строки журнала Postgres. Например, следующий параметр log_line_prefix предоставляет такие сведения, как метку времени, имя пользователя, имя базы данных и идентификатор процесса:

t=%m u=%u db=%d pid=[%p]:

Дополнительные сведения о log_line_prefix см. в документации по PostgreSQL.

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

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

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

Если вы используете файлы журналов, то ваши журналы аудита включаются в тот же файл, что и журналы ошибок PostgreSQL. Файлы журналов можно скачать с портала или с помощью CLI.

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

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

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

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

AzureDiagnostics
| where LogicalServerName_s == "myservername"
| where TimeGenerated > ago(1d) 
| where Message contains "AUDIT:"

Дальнейшие действия