Ведение журнала аудита в Базе данных Azure для PostgreSQL — отдельный сервер
Область применения: отдельный сервер Базы данных Azure для PostgreSQL
Внимание
База данных Azure для PostgreSQL — одиночный сервер находится на пути выхода на пенсию. Настоятельно рекомендуется выполнить обновление до База данных Azure для PostgreSQL — гибкий сервер. Дополнительные сведения о миграции на База данных 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, которая предлагает варианты долговременного хранения, а также функции анализа и оповещений. Отключите стандартное ведение журнала, чтобы уменьшить влияние дополнительного ведения журнала на производительность:
- Задайте для параметра
logging_collector
значение OFF (Отключено). - Перезапустите сервер, чтобы применить это изменение.
Чтобы узнать, как настроить ведение журнала для службы хранилища, Центров событий или журналов Monitor, см. раздел о журналах ресурсов в статье Журналы в Базе данных Azure для PostgreSQL. Отдельный сервер.
Установка pgAudit
Чтобы установить pgAudit, необходимо включить его в предварительно загруженные общие библиотеки сервера. Чтобы изменение параметра shared_preload_libraries
Postgres вступило в силу, перезапустите сервер. Параметры можно изменить с помощью портала, CLI или REST API.
Чтобы использовать портал, сделайте следующее:
Выберите сервер базы данных Azure для PostgreSQL.
В области слева в разделе Параметры выберите Параметры сервера.
Выполните поиск по запросу shared_preload_libraries.
Выберите PGAUDIT.
Перезагрузите сервер, чтобы это изменение вступило в силу.
Подключитесь к серверу с помощью клиента, такого как psql, и включите расширение pgAudit:
CREATE EXTENSION pgaudit;
Совет
Если появится сообщение об ошибке, подтвердите перезапуск сервера после сохранения shared_preload_libraries
.
Параметры pgAudit
С помощью pgAudit можно настроить ведение журнала аудита для сеанса или объекта. При ведении журнала аудита сеансов создаются подробные журналы выполненных инструкций. Ведение журнала аудита объектов — это аудит для конкретных связей. Можно выбрать один или оба типа ведения журнала.
Примечание.
Параметры pgAudit указываются глобально, и их невозможно указать на уровне базы данных или роли.
После установки расширения pgAudit можно настроить его параметры, чтобы начать ведение журнала.
Чтобы настроить pgAudit на портале, сделайте следующее:
Выберите сервер базы данных Azure для PostgreSQL.
В области слева в разделе Параметры выберите Параметры сервера.
Выполните поиск параметров pgaudit.
Выберите соответствующие параметры, которые следует изменить. Например, чтобы начать ведение журнала, задайте для pgaudit.log значение WRITE.
Выберите Сохранить, чтобы сохранить изменения.
В документации по 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:"
Следующие шаги
- Узнайте больше о ведении журнала в Базе данных Azure для PostgreSQL.
- Узнайте, как задать параметры с помощью портала Azure, Azure CLI или REST API.