8.4.5.5 Настройка характеристик логирования аудита
В этом разделе описывается, как настроить характеристики логирования аудита, такие как файл, в который плагин аудита записывает события, формат записываемых событий, включение сжатия и шифрования файлов журнала и управление дисковым пространством.
Для получения дополнительной информации о функциях и системных переменных, влияющих на логирование аудита, см. Функции журнала аудита и Параметры и переменные журнала аудита.
Плагин журнала аудита также может контролировать, какие прослеживаемые события записываются в файл журнала аудита, на основе содержимого события или учетной записи, из которой исходят события. См. Раздел 8.4.5.7 «Фильтрация журнала аудита».
Правила именования файлов журнала аудита
Для настройки имени файла журнала аудита установите системную переменную audit_log_file при запуске сервера. Имя по умолчанию — audit.log в каталоге данных сервера. Для повышения безопасности записывайте журнал аудита в каталог, доступный только серверу MySQL и пользователям, имеющим право на просмотр журнала.
Плагин интерпретирует значение audit_log_file как состоящее из необязательного ведущего имени каталога, базового имени и необязательного суффикса. Если сжатие или шифрование включены, фактическое имя файла (имя, фактически используемое для создания файла журнала) отличается от настроенного имени файла, так как оно содержит дополнительные суффиксы:
Если сжатие включено, плагин добавляет суффикс
.gz.Если шифрование включено, плагин добавляет суффикс
., гдеpwd_id.encpwd_idуказывает, какой пароль шифрования использовать для операций с файлом журнала. Плагин журнала аудита хранит пароли шифрования в хранилище ключей; см. Шифрование файлов журнала аудита.
Фактическое имя файла журнала аудита — это имя, полученное путем добавления соответствующих суффиксов сжатия и шифрования к настроенному имени файла. Например, если настроенное значение audit_log_file равно audit.log, фактическое имя файла — одно из значений, приведенных в следующей таблице.
| Включенные функции | Фактическое имя файла |
|---|---|
| Без сжатия или шифрования | audit.log |
| Сжатие | audit.log.gz |
| Шифрование | audit.log. |
| Сжатие, шифрование | audit.log.gz. |
pwd_id указывает идентификатор пароля, используемого для шифрования или расшифровки файла. Формат pwd_id — pwd_timestamp-seq, где:
pwd_timestamp— значение UTC в формате, указывающее время создания пароля.YYYYMMDDThhmmssseq— порядковый номер. Порядковые номера начинаются с 1 и увеличиваются для паролей, имеющих одинаковое значениеpwd_timestamp.
Вот пример значений идентификатора пароля pwd_id:
20190403T142359-1
20190403T142400-1
20190403T142400-2
Для построения соответствующих идентификаторов хранилища ключей для хранения паролей в хранилище ключей плагин журнала аудита добавляет префикс audit_log- к значениям pwd_id. Для приведенных выше примеров идентификаторов паролей соответствующие идентификаторы хранилища ключей:
audit_log-20190403T142359-1
audit_log-20190403T142400-1
audit_log-20190403T142400-2
Идентификатор пароля, текущего используемого для шифрования плагином журнала аудита, — это тот, у которого наибольшее значение pwd_timestamp. Если несколько паролей имеют это значение pwd_timestamp, текущий идентификатор пароля — тот, у которого наибольший порядковый номер. Например, в приведенном выше наборе идентификаторов паролей два из них имеют наибольшую метку времени, 20190403T142400, поэтому текущий идентификатор пароля — тот, у которого наибольший порядковый номер (2).
Плагин журнала аудита выполняет определенные действия во время инициализации и завершения работы на основе фактического имени файла журнала аудита:
Во время инициализации плагин проверяет, существует ли файл с именем файла журнала аудита, и переименовывает его, если да. (В этом случае плагин предполагает, что предыдущий вызов сервера завершился неожиданно с работающим плагином журнала аудита.) Затем плагин записывает в новый пустой файл журнала аудита.
Во время завершения работы плагин переименовывает файл журнала аудита.
Переименование файлов (как во время инициализации плагина, так и во время завершения) происходит в соответствии с обычными правилами автоматической ротации файлов журнала на основе размера; см. Ручная ротация файла журнала аудита.
Выбор формата файла журнала аудита
Для настройки формата файла журнала аудита установите системную переменную audit_log_format при запуске сервера. Доступны следующие форматы:
NEW: Новый формат XML. Это значение по умолчанию.OLD: Старый формат XML.JSON: Формат JSON. Записывает журнал аудита в виде массива JSON. Только этот формат поддерживает необязательную статистику времени и размера запросов.
Подробная информация о каждом формате приведена в разделе 8.4.5.4 «Форматы файлов журнала аудита».
Включение задачи сброса журнала аудита
MySQL Enterprise Audit предоставляет возможность устанавливать интервал обновления для автоматического удаления кеша в оперативной памяти. Задача сброса, настроенная с помощью системной переменной audit_log_flush_interval_seconds, по умолчанию имеет значение ноль, что означает, что задача не запланирована для выполнения.
Когда задача настроена на выполнение (значение не равно нулю), MySQL Enterprise Audit пытается вызвать компонент планировщика при его инициализации и настроить регулярный, повторяющийся сброс своего кеша в памяти:
Если журнал аудита не может найти реализацию службы регистрации планировщика, он не планирует сброс и продолжает загрузку.
Журнал аудита реализует службу
dynamic_loader_services_loaded_notificationи слушает новые регистрацииmysql_scheduler, чтобы журнал аудита мог зарегистрировать свою запланированную задачу в загруженном планировщике.Журнал аудита регистрирует себя только в первой загруженной реализации планировщика.
Аналогично, MySQL Enterprise Audit вызывает компонент scheduler при завершении инициализации и отменяет повторяющийся сброс, который он запланировал. Он сохраняет активную ссылку на службу регистрации планировщика до тех пор, пока запланированная задача не будет отменена, гарантируя, что компонент scheduler не может быть загружен, пока существуют активные запланированные задачи. Все результаты выполнения планировщика и его задач записываются в журнал ошибок сервера.
Чтобы запланировать задачу сброса журнала аудита:
-
Убедитесь, что компонент
schedulerзагружен и активирован. Компонент активирован (ON) по умолчанию (см.component_scheduler.enabled).SELECT * FROM mysql.components; +--------------+--------------------+----------------------------+ | component_id | component_group_id | component_urn | +--------------+--------------------+----------------------------+ | 1 | 1 | file://component_scheduler | +--------------+--------------------+----------------------------+
Установите плагин
audit_log, если он еще не установлен (см. Раздел 8.4.5.2, «Установка или удаление MySQL Enterprise Audit»).-
Запустите сервер с использованием
audit_log_flush_interval_secondsи установите значение больше 59. Верхний предел значения зависит от платформы. Например, чтобы настроить задачу сброса для повторения каждые две минуты:$>
mysqld --audit_log_flush_interval_seconds=120Дополнительную информацию см. в системной переменной
audit_log_flush_interval_seconds.
Добавление статистики запросов для обнаружения выбросов
В MySQL 8.4 вы можете расширить файлы журналов в формате JSON дополнительными полями данных, чтобы отобразить время выполнения запроса, количество отправленных и полученных байтов, количество строк, возвращенных клиенту, и количество обработанных строк. Эти данные доступны в журнале медленных запросов для соответствующих запросов, и в контексте журнала аудита они аналогичным образом помогают обнаруживать выбросы для анализа активности. Расширенные поля данных могут быть добавлены только тогда, когда журнал аудита находится в формате JSON (audit_log_format=JSON), что не является значением по умолчанию.
Статистика запросов передается в журнал аудита через сервисы компонентов, которые вы настраиваете как функцию фильтрации журнала аудита. Эти сервисы называются mysql_audit_print_service_longlong_data_source и mysql_audit_print_service_double_data_source. Вы можете выбрать любой тип данных для каждого выходного элемента. Для времени выполнения запроса longlong выводит значение в микросекундах, а double выводит значение в секундах.
Вы добавляете статистику запросов, используя функцию журнала аудита audit_log_filter_set_filter(), как элемент service синтаксиса фильтрации JSON, следующим образом:
SELECT audit_log_filter_set_filter('QueryStatistics',
'{ "filter": { "class": { "name": "general", "event": { "name": "status", "print" : '
'{ "service": { "implementation": "mysql_server", "tag": "query_statistics", "element": [ '
'{ "name": "query_time", "type": "double" }, '
'{ "name": "bytes_sent", "type": "longlong" }, '
'{ "name": "bytes_received", "type": "longlong" }, '
'{ "name": "rows_sent", "type": "longlong" }, '
'{ "name": "rows_examined", "type": "longlong" } ] } } } } } }');
Для того, чтобы поля bytes_sent и bytes_received были заполнены, системная переменная log_slow_extra должна быть установлена на ON. Если значение системной переменной равно OFF, в файл журнала записывается нулевое значение для этих полей.
Если вы хотите прекратить сбор статистики запросов, используйте функцию журнала аудита audit_log_filter_set_filter() для удаления фильтра, например:
SELECT audit_log_filter_remove_filter('QueryStatistics');
Сжатие файлов журнала аудита
Сжатие файлов журнала аудита может быть включено для любого формата ведения журнала.
Чтобы настроить сжатие файлов журнала аудита, установите системную переменную audit_log_compression при запуске сервера. Разрешенные значения — NONE (без сжатия; значение по умолчанию) и GZIP (сжатие GNU Zip).
Если включены и сжатие, и шифрование, сжатие происходит до шифрования. Чтобы вручную восстановить исходный файл, сначала расшифруйте его, затем распакуйте. См. Вручную распаковывание и расшифрование файлов журнала аудита.
Шифрование файлов журнала аудита
Шифрование файлов журнала аудита можно включить для любого формата ведения журнала. Шифрование основано на паролях, заданных пользователем (за исключением исходного пароля, который генерирует плагин аудита). Для использования этой функции необходимо включить хранилище ключей MySQL, поскольку для хранения паролей используется журнал аудита. Можно использовать любой компонент или плагин хранилища ключей; инструкции см. в Раздел 8.4.4, «Хранилище ключей MySQL».
Чтобы настроить шифрование файлов журнала аудита, установите системную переменную audit_log_encryption при запуске сервера. Разрешенные значения — NONE (без шифрования; значение по умолчанию) и AES (шифрование шифром AES-256-CBC).
Чтобы установить или получить пароль шифрования во время выполнения, используйте эти функции журнала аудита:
-
Чтобы установить текущий пароль шифрования, вызовите
audit_log_encryption_password_set(). Эта функция сохраняет новый пароль в хранилище ключей. Если шифрование включено, она также выполняет операцию вращения файла журнала, которая переименовывает текущий файл журнала и начинает новый файл журнала, зашифрованный с помощью пароля. Переименование файла происходит в соответствии с обычными правилами автоматического вращения файла журнала на основе размера; см. Вручную вращение файлов журнала аудита.Если системная переменная
audit_log_password_history_keep_daysимеет ненулевое значение, вызовaudit_log_encryption_password_set()также приводит к истечению срока действия старых архивированных паролей шифрования журнала аудита. Дополнительную информацию о истории паролей журнала аудита, включая архивирование и истечение срока действия паролей, см. в описании этой переменной. -
Чтобы получить текущий пароль шифрования, вызовите
audit_log_encryption_password_get()без аргументов. Чтобы получить пароль по идентификатору, передайте аргумент, который указывает идентификатор хранилища ключей текущего пароля или архивированного пароля.Чтобы определить существующие идентификаторы хранилища ключей журнала аудита, запросите таблицу Performance Schema
keyring_keys:mysql>
SELECT KEY_ID FROM performance_schema.keyring_keysWHERE KEY_ID LIKE 'audit_log%'ORDER BY KEY_ID;+-----------------------------+ | KEY_ID | +-----------------------------+ | audit_log-20190415T152248-1 | | audit_log-20190415T153507-1 | | audit_log-20190416T125122-1 | | audit_log-20190416T141608-1 | +-----------------------------+
Дополнительную информацию о функциях шифрования журнала аудита см. в Функции журнала аудита.
При инициализации плагина журнала аудита, если он обнаруживает, что включено шифрование файла журнала, он проверяет, содержит ли хранилище ключей пароль шифрования журнала аудита. Если нет, плагин автоматически генерирует случайный начальный пароль шифрования и сохраняет его в хранилище ключей. Чтобы получить этот пароль, вызовите audit_log_encryption_password_get().
Если включены и сжатие, и шифрование, сжатие происходит до шифрования. Чтобы вручную восстановить исходный файл, сначала расшифруйте его, затем распакуйте. См. Вручную распаковывание и расшифрование файлов журнала аудита.
Ручное распаковки и расшифровки файлов аудита
Файлы аудита можно распаковать и расшифровать с помощью стандартных инструментов. Это следует делать только для закрытых (архивированных) файлов аудита, которые больше не используются, а не для файла, в который в настоящее время записывает плагин аудита. Вы можете распознать архивированные файлы аудита по тому, что плагин аудита переименовал их, добавив отметку времени в имя файла сразу после базового имени.
Для этого обсуждения предположим, что audit_log_file установлено в значение audit.log. В этом случае, архивированный файл аудита имеет одно из имен, показанных в следующей таблице.
| Включенные функции | Имя архивированного файла |
|---|---|
| Без сжатия или шифрования | audit. |
| Сжатие | audit. |
| Шифрование | audit. |
| Сжатие и шифрование | audit. |
Как обсуждалось в Конвенциях именования файлов аудита, формат pwd_id имеет формат pwd_timestamp-seq. Таким образом, имена архивированных зашифрованных файлов аудита фактически содержат две отметки времени. Первая указывает время вращения файла, а вторая указывает время создания пароля шифрования.
Рассмотрим следующий набор имен архивированных зашифрованных файлов аудита:
audit.20190410T205827.log.20190403T185337-1.enc
audit.20190410T210243.log.20190403T185337-1.enc
audit.20190415T145309.log.20190414T223342-1.enc
audit.20190415T151322.log.20190414T223342-2.enc
Каждое имя файла имеет уникальную отметку времени вращения. Напротив, отметки времени пароля не уникальны:
Первые два файла имеют одинаковый идентификатор пароля и номер последовательности (
20190403T185337-1). У них одинаковый пароль шифрования.Вторые два файла имеют одинаковый идентификатор пароля (
20190414T223342), но разные номера последовательности (1,2). Эти файлы имеют разные пароли шифрования.
Чтобы вручную распаковать сжатый файл аудита, используйте команду gunzip, gzip -d или аналогичную команду. Например:
gunzip -c audit.timestamp.log.gz > audit.timestamp.log
Чтобы вручную расшифровать зашифрованный файл аудита, используйте команду openssl. Например:
openssl enc -d -aes-256-cbc -pass pass:password -md sha256
-in audit.timestamp.log.pwd_id.enc
-out audit.timestamp.log
Для выполнения этой команды вам необходимо получить password, пароль шифрования. Для этого используйте audit_log_encryption_password_get(). Например, если имя файла аудита - audit.20190415T151322.log.20190414T223342-2.enc, идентификатор пароля - 20190414T223342-2, а идентификатор хранилища ключей - audit-log-20190414T223342-2. Восстановите пароль хранилища ключей следующим образом:
SELECT audit_log_encryption_password_get('audit-log-20190414T223342-2');
Если для аудита включены и сжатие, и шифрование, то сжатие выполняется перед шифрованием. В этом случае к имени файла добавляются суффиксы .gz и ., соответствующие порядку выполнения этих операций. Для восстановления исходного файла вручную выполните операции в обратном порядке. То есть, сначала расшифруйте файл, затем распакуйте его: pwd_id.enc
openssl enc -d -aes-256-cbc -pass pass:password -md sha256
-in audit.timestamp.log.gz.pwd_id.enc
-out audit.timestamp.log.gz
gunzip -c audit.timestamp.log.gz > audit.timestamp.log
Управление размером файлов журнала аудита
Файл журнала аудита может значительно увеличиться и потребовать много места на диске. Если включена сборка необязательных статистических данных о времени и объеме запросов, это увеличивает потребности в пространстве. Статистические данные о запросах поддерживаются только в формате JSON.
Для управления используемым пространством применяйте следующие методы:
Вращение файла журнала. Это подразумевает переименование текущего файла журнала, а затем открытие нового текущего файла журнала с использованием исходного имени. Вращение можно выполнить вручную или настроить для автоматического выполнения.
Обрезка переименованных файлов журнала в формате JSON, если включено автоматическое вращение. Обрезка может выполняться на основе возраста файла журнала или совокупного размера файлов журнала.
Для настройки управления размером файла журнала аудита используйте следующие системные переменные:
-
Если
audit_log_rotate_on_sizeравно 0 (по умолчанию), автоматическое вращение файла журнала отключено.Вращение не происходит, пока не выполнено вручную.
-
Чтобы выполнить вращение текущего файла, используйте один из следующих методов:
-
Запустите
SELECT audit_log_rotate();для переименования файла и открытия нового файла журнала аудита с использованием исходного имени.При этом методе вращения файлов происходит обрезка переименованных файлов журнала в формате JSON, если
audit_log_max_sizeилиaudit_log_prune_secondsимеют значение больше 0. -
Вручную переименуйте файл, затем включите
audit_log_flushдля его закрытия и открытия нового текущего файла журнала с использованием исходного имени. Этот метод вращения файлов и переменнаяaudit_log_flushустарели.С этим методом вращения файлов обрезка переименованных файлов журнала в формате JSON не выполняется;
audit_log_max_sizeиaudit_log_prune_secondsне влияют на процесс.
Дополнительную информацию см. в разделе Вручную вращение файлов журнала аудита.
-
-
Если
audit_log_rotate_on_sizeбольше 0, автоматическое вращение файла журнала аудита включено:Автоматическое вращение происходит, когда запись в текущий файл журнала приводит к превышению его размера значения
audit_log_rotate_on_size, а также при определенных других условиях; см. Автоматическое вращение файлов журнала аудита. При автоматическом вращении плагин журнала аудита переименовывает текущий файл журнала и открывает новый текущий файл журнала с использованием исходного имени.Обрезка переименованных файлов журнала в формате JSON происходит, если
audit_log_max_sizeилиaudit_log_prune_secondsимеют значение больше 0.audit_log_flushне оказывает никакого влияния.
Для файлов журналов в формате JSON вращение также происходит, когда значение системной переменной audit_log_format_unix_timestamp изменяется во время выполнения. Однако это не делается для целей управления размером, а для того, чтобы для каждого файла журнала в формате JSON все записи в файле либо содержали, либо не содержали поле time.
Переименованные (архивированные) файлы журналов не удаляются автоматически. Например, при вращении файла журнала на основе размера переименованные файлы журналов имеют уникальные имена и накапливаются неограниченно. Они не переходят на конец последовательности имён. Чтобы избежать чрезмерного использования пространства:
Для файлов журналов в формате JSON: Включите обрезку файлов журналов, как описано в разделе Обрезка файлов журнала аудита.
В противном случае: Периодически удаляйте старые файлы, предварительно создав их резервные копии, если необходимо. Если резервные копии файлов журналов зашифрованы, также сохраните соответствующие пароли шифрования в безопасном месте, если вам понадобится расшифровать файлы позже.
Следующие разделы описывают вращение и обрезку файлов журналов более подробно.
Вручную вращение файлов журнала аудита
Если audit_log_rotate_on_size равно 0 (по умолчанию), вращение журнала не происходит, если не выполнено вручную.
Чтобы выполнить вращение файла журнала аудита вручную, запустите SELECT
audit_log_rotate(); для переименования текущего файла журнала аудита и открытия нового файла журнала аудита. Файлы переименовываются в соответствии с соглашениями об именовании, описанными в Соглашения об именовании файлов журнала аудита.
Для использования функции audit_log_rotate() требуется привилегия AUDIT_ADMIN.
Управление количеством архивированных файлов журналов (файлов, которые были переименованы) и занимаемым ими пространством является ручным заданием, которое включает удаление из вашей файловой системы архивированных файлов журналов аудита, которые больше не нужны.
Содержимое файлов журналов аудита, которые переименованы с помощью функции audit_log_rotate(), можно прочитать с помощью функции audit_log_read().
Вручную вращение файлов журнала аудита (старый метод)
Переменная audit_log_flush и этот метод вращения файлов журнала аудита устарели; ожидается удаление поддержки в будущих версиях MySQL.
Если audit_log_rotate_on_size равно 0 (по умолчанию), вращение журнала не происходит, если не выполнено вручную. В этом случае плагин журнала аудита закрывает и снова открывает файл журнала, когда значение audit_log_flush изменяется с отключенного на включенное. Переименование файла журнала должно выполняться вне сервера. Предположим, что имя файла журнала — audit.log, и вы хотите сохранить три последних файла журнала, циклически переходя по именам audit.log.1 до audit.log.3. В Unix вращение выполните вручную так:
-
Из командной строки переименуйте текущие файлы журналов:
mv audit.log.2 audit.log.3 mv audit.log.1 audit.log.2 mv audit.log audit.log.1
Эта стратегия перезаписывает содержимое текущего
audit.log.3, ограничивая количество архивированных файлов журналов и занимаемое ими пространство. -
В этот момент плагин продолжает запись в текущий файл журнала, который был переименован в
audit.log.1. Подключитесь к серверу и очистите файл журнала, чтобы плагин закрыл его и открыл новый файлaudit.log:SET GLOBAL audit_log_flush = ON;
audit_log_flushотличается тем, что его значение остаетсяOFF, поэтому вам не нужно явно отключать его перед повторным включением, чтобы выполнить другую очистку.
Если включены сжатие или шифрование, имена файлов журналов содержат суффиксы, указывающие на включенные функции, а также идентификатор пароля, если включено шифрование. Если имена файлов содержат идентификатор пароля, убедитесь, что вы сохраняете идентификатор в имени любых вручную переименованных файлов, чтобы можно было определить пароль, используемый для операций расшифровки.
При журнале в формате JSON переименование файлов журналов аудита вручную делает их недоступными для функций чтения журналов, поскольку плагин журнала аудита больше не может определить, что они являются частью последовательности файлов журнала (см. Раздел 8.4.5.6, «Чтение файлов журнала аудита»). Рассмотрите возможность установки audit_log_rotate_on_size больше 0, чтобы использовать вращение на основе размера вместо этого.
Автоматическое вращение файлов журнала аудита
Если значение audit_log_rotate_on_size больше 0, установка audit_log_flush не имеет эффекта. Вместо этого, каждый раз, когда запись в текущий лог-файл приводит к превышению его размера значения audit_log_rotate_on_size, плагин аудита автоматически переименовывает текущий лог-файл и открывает новый текущий лог-файл с использованием исходного имени.
Автоматическое вращение на основе размера также происходит в следующих условиях:
Во время инициализации плагина, если файл с именем файла аудита уже существует (см. Конвенции именования файлов аудита).
Во время завершения работы плагина.
При вызове функции
audit_log_encryption_password_set()для установки пароля шифрования, если шифрование включено. (Вращение не происходит, если шифрование отключено.)
Плагин переименовывает исходный файл, вставляя отметку времени сразу после его базового имени. Например, если имя файла — audit.log, плагин переименовывает его на значение, такое как audit.20210115T140633.log. Отметка времени — это значение UTC в формате . Для XML-логирования отметка времени указывает время вращения. Для JSON-логирования отметка времени соответствует последнему событию, записанному в файл. YYYYMMDDThhmmss
Если лог-файлы зашифрованы, исходное имя файла уже содержит отметку времени, указывающую время создания пароля шифрования (см. Конвенции именования файлов аудита). В этом случае имя файла после вращения содержит две отметки времени. Например, зашифрованный лог-файл с именем audit.log.20210110T130749-1.enc переименовывается на значение, такое как audit.20210115T140633.log.20210110T130749-1.enc.
Обрезка файлов аудита
Плагин аудита поддерживает обрезку повернутых лог-файлов аудита в формате JSON, если автоматическое вращение лог-файлов включено. Для использования этой возможности:
Установите
audit_log_formatв значениеJSON. (Кроме того, рассмотрите возможность измененияaudit_log_file; см. Выбор формата файла лога аудита.)Установите
audit_log_rotate_on_sizeбольше 0, чтобы указать размер в байтах, при достижении которого происходит автоматическое вращение лог-файла.-
По умолчанию обрезка автоматически повернутых лог-файлов в формате JSON не выполняется. Чтобы включить обрезку, установите одно из этих системных переменных значением больше 0:
Установите
audit_log_max_sizeбольше 0, чтобы указать предел в байтах на совокупный размер повернутых лог-файлов, превышение которого приводит к их обрезке.Установите
audit_log_prune_secondsбольше 0, чтобы указать количество секунд, по истечении которых повернутые лог-файлы подлежат обрезке.
Значения
audit_log_max_size, отличные от нуля, имеют приоритет перед значениямиaudit_log_prune_seconds, отличными от нуля. Если оба установлены значением больше 0 во время инициализации плагина, в лог-файл сервера записывается предупреждение. Если клиент устанавливает оба значения больше 0 во время выполнения, клиенту возвращается предупреждение.ПримечаниеПредупреждения в лог-файл ошибок записываются как заметки, являющиеся информационными сообщениями. Чтобы убедиться, что такие сообщения появляются в лог-файле ошибок и не отбрасываются, убедитесь, что уровень подробности логирования ошибок достаточен для включения информационных сообщений. Например, если вы используете фильтрацию логов на основе приоритетов, как описано в разделе 7.4.2.5 «Фильтрация логов ошибок на основе приоритетов (log_filter_internal)», установите системную переменную
log_error_verbosityв значение 3.
Обрезка лог-файлов в формате JSON, если включена, выполняется следующим образом:
При автоматическом вращении; условия, при которых это происходит, см. в Автоматическое вращение файлов аудита.
При установке глобальной системной переменной
audit_log_max_sizeилиaudit_log_prune_secondsво время выполнения.
Для обрезки на основе совокупного размера повернутых лог-файлов, если совокупный размер превышает предел, указанный в audit_log_max_size, плагин аудита удаляет самые старые файлы до тех пор, пока их совокупный размер не превысит предел.
Для обрезки на основе возраста повернутых лог-файлов, точкой обрезки является текущее время минус значение audit_log_prune_seconds. В повернутых лог-файлах в формате JSON часть имени файла, содержащая отметку времени, указывает отметку времени последнего записанного события. Плагин аудита использует отметки времени в именах файлов, чтобы определить, какие файлы содержат только события, предшествующие точке обрезки, и удаляет их.
Стратегии записи для логирования аудита
Плагин аудита может использовать различные стратегии для записи логов. Независимо от стратегии, логирование происходит по принципу наилучшего усилия, без гарантии согласованности.
Для задания стратегии записи установите системную переменную audit_log_strategy при запуске сервера. По умолчанию значение стратегии — ASYNCHRONOUS, и плагин записывает в буфер асинхронно, ожидая, если буфер заполнен. Вы можете указать плагину не ожидать (PERFORMANCE) или записывать синхронно, используя кэширование файловой системы (SEMISYNCHRONOUS) или принудительно выводя результат с помощью вызова sync() после каждого запроса записи (SYNCHRONOUS).
Во многих случаях плагин записывает напрямую в лог-файл аудита в формате JSON, если текущий запрос слишком велик для буфера. Стратегия записи определяет, как плагин увеличивает счётчик прямых записей. Вы можете отслеживать количество прямых записей с помощью системной переменной статуса Audit_log_direct_writes.
Для асинхронной стратегии записи системная переменная audit_log_buffer_size — размер буфера в байтах. Установите эту переменную при запуске сервера, чтобы изменить размер буфера. Плагин использует единственный буфер, который выделяется при инициализации и удаляется при завершении работы. Плагин не выделяет этот буфер для стратегий записи, не являющихся асинхронными.
Асинхронная стратегия логирования обладает следующими характеристиками:
Минимальное влияние на производительность и масштабируемость сервера.
Блокировка потоков, генерирующих события аудита, на кратчайшее возможное время; то есть время выделения буфера плюс время копирования события в буфер.
Вывод происходит в буфер. Отдельный поток обрабатывает записи из буфера в лог-файл.
При асинхронном логировании целостность лог-файла может быть нарушена, если возникнет проблема во время записи в файл или если плагин не завершается корректно (например, если хост сервера неожиданно выходит из строя). Для снижения этого риска установите audit_log_strategy для использования синхронного логирования.
Недостатком стратегии PERFORMANCE является то, что она пропускает события, когда буфер заполнен. На сильно загруженном сервере в логе аудита могут отсутствовать события.
© 2025 Oracle
Licensed under the GPLv2 License.