8.4.5.11 Журнал аудита: Справочная информация
В следующих разделах приведена справочная информация по элементам MySQL Enterprise Audit:
Для установки таблиц и функций журнала аудита используйте инструкции, приведенные в разделе 8.4.5.2 «Установка или удаление MySQL Enterprise Audit». Если эти объекты не установлены, плагин audit_log работает в режиме (устаревшего) обратного совместимого режима. См. раздел 8.4.5.10 «Обратный совместимый режим фильтрации журнала аудита».
Таблицы журнала аудита
MySQL Enterprise Audit использует таблицы в базе данных mysql системы для постоянного хранения данных о фильтрах и учетных записях пользователей. Доступ к таблицам имеют только пользователи с привилегиями для этой базы данных. Чтобы использовать другую базу данных, задайте системную переменную audit_log_database при запуске сервера. Таблицы используют движок хранения InnoDB.
Если эти таблицы отсутствуют, плагин audit_log работает в режиме (устаревшего) обратного совместимого режима. См. раздел 8.4.5.10 «Обратный совместимый режим фильтрации журнала аудита».
Таблица audit_log_filter хранит определения фильтров. Таблица имеет следующие столбцы:
-
NAMEИмя фильтра.
-
FILTERОпределение фильтра, связанное с именем фильтра. Определения хранятся как значения
JSON.
Таблица audit_log_user хранит информацию об учетных записях пользователей. Таблица имеет следующие столбцы:
-
USERЧасть имени пользователя в учетной записи. Для учетной записи
user1@localhost, частьUSERравнаuser1. -
HOSTЧасть имени хоста в учетной записи. Для учетной записи
user1@localhost, частьHOSTравнаlocalhost. -
FILTERNAMEИмя фильтра, назначенного учетной записи. Имя фильтра связывает учетную запись с фильтром, определенным в таблице
audit_log_filter.
Функции журнала аудита
В этом разделе описываются назначение, последовательность вызова и возвращаемое значение каждой функции журнала аудита. Сведения об условиях вызова этих функций см. в разделе 8.4.5.7 «Фильтрация журнала аудита».
Каждая функция журнала аудита возвращает строку, указывающую, выполнена ли операция успешно. OK указывает на успех. ERROR:
указывает на неудачу. message
Функции журнала аудита преобразуют строковые аргументы в utf8mb4, а строковые возвращаемые значения являются строками utf8mb4. Ранее функции журнала аудита обрабатывали строковые аргументы как двоичные строки (т. е. не различали регистр букв), а строковые возвращаемые значения были двоичными строками.
Если функция журнала аудита вызывается из клиента mysql, результаты двоичных строк отображаются в шестнадцатеричном формате, в зависимости от значения --binary-as-hex. Дополнительные сведения об этом параметре см. в разделе 6.5.1 «mysql — Клиент командной строки MySQL».
Доступны следующие функции журнала аудита:
-
audit_log_encryption_password_get([keyring_id])Эта функция извлекает пароль шифрования журнала аудита из хранилища ключей MySQL, которое должно быть включено, иначе произойдёт ошибка. Можно использовать любой компонент или плагин хранилища ключей; инструкции см. в разделе 8.4.4, «Хранилище ключей MySQL».
Без аргументов функция извлекает текущий пароль шифрования в виде двоичной строки. Можно указать аргумент, чтобы получить определённый пароль шифрования журнала аудита. Аргумент должен быть идентификатором хранилища ключей текущего или архивированного пароля.
Дополнительную информацию о шифровании журнала аудита см. в разделе «Шифрование файлов журнала аудита».
Аргументы:
keyring_id: Этот необязательный аргумент указывает идентификатор хранилища ключей пароля для извлечения. Максимальная допустимая длина составляет 766 байт. Если аргумент опущен, функция извлекает текущий пароль.Возвращаемое значение:
Строка пароля при успехе (до 766 байт) или
NULLи сообщение об ошибке при неудаче.Пример:
Извлечение текущего пароля:
mysql>
SELECT audit_log_encryption_password_get();+-------------------------------------+ | audit_log_encryption_password_get() | +-------------------------------------+ | secret | +-------------------------------------+Чтобы извлечь пароль по идентификатору, вы можете определить существующие идентификаторы хранилища ключей журнала аудита, запросив таблицу 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 | +-----------------------------+ mysql>SELECT audit_log_encryption_password_get('audit_log-20190416T125122-1');+------------------------------------------------------------------+ | audit_log_encryption_password_get('audit_log-20190416T125122-1') | +------------------------------------------------------------------+ | segreto | +------------------------------------------------------------------+ -
audit_log_encryption_password_set(password)Устанавливает текущий пароль шифрования журнала аудита в качестве аргумента и сохраняет пароль в хранилище ключей MySQL. Пароль сохраняется как
utf8mb4строка. Раньше пароль хранился в двоичном формате.При включённом шифровании эта функция выполняет операцию вращения файла журнала, переименовывая текущий файл журнала и создавая новый зашифрованный файл с указанным паролем. Хранилище ключей должно быть включено, иначе произойдёт ошибка. Можно использовать любой компонент или плагин хранилища ключей; инструкции см. в разделе 8.4.4, «Хранилище ключей MySQL».
Дополнительную информацию о шифровании журнала аудита см. в разделе «Шифрование файлов журнала аудита».
Аргументы:
password: Строка пароля. Максимальная допустимая длина составляет 766 байт.Возвращаемое значение:
1 при успехе, 0 при неудаче.
Пример:
mysql>
SELECT audit_log_encryption_password_set(+---------------------------------------------+ | audit_log_encryption_password_set(password);password) | +---------------------------------------------+ | 1 | +---------------------------------------------+ -
Вызов любой из других функций фильтрации немедленно влияет на фильтрацию журнала аудита и обновляет таблицы журнала аудита. Если вы изменяете содержимое этих таблиц напрямую, используя операторы, такие как
INSERT,UPDATEиDELETE, изменения не влияют на фильтрацию немедленно. Чтобы зафиксировать изменения и сделать их действующими, вызовитеaudit_log_filter_flush().Предупреждениеaudit_log_filter_flush()следует использовать только после непосредственного изменения таблиц аудита, чтобы принудительно перезагрузить все фильтры. В противном случае следует избегать использования этой функции. По сути, это упрощённая версия выгрузки и загрузки плагинаaudit_logс помощьюUNINSTALL PLUGINиINSTALL PLUGIN.audit_log_filter_flush()влияет на все текущие сессии и отсоединяет их от предыдущих фильтров. Текущие сессии больше не регистрируются, пока не отключатся и не подключатся снова или не выполнят операцию смены пользователя.В случае неудачи функции возвращается сообщение об ошибке, и журнал аудита отключается до следующего успешного вызова
audit_log_filter_flush().Аргументы:
Нет.
Возвращаемое значение:
Строка, указывающая, удалось ли выполнить операцию.
OKуказывает успех.ERROR:указывает неудачу.messageПример:
mysql>
SELECT audit_log_filter_flush();+--------------------------+ | audit_log_filter_flush() | +--------------------------+ | OK | +--------------------------+ -
audit_log_filter_remove_filter(filter_name)Удаляет фильтр из текущего набора фильтров по заданному имени. Отсутствие фильтра не является ошибкой.
Если удалённый фильтр назначен каким-либо учётным записям пользователей, эти пользователи перестают быть отфильтрованными (они удаляются из таблицы
audit_log_user). Прекращение фильтрации включает все текущие сессии для этих пользователей: они отсоединяются от фильтра и больше не регистрируются.Аргументы:
filter_name: Строка, задающая имя фильтра.
Возвращаемое значение:
Строка, указывающая, удалось ли выполнить операцию.
OKуказывает успех.ERROR:указывает неудачу.messageПример:
mysql>
SELECT audit_log_filter_remove_filter('SomeFilter');+----------------------------------------------+ | audit_log_filter_remove_filter('SomeFilter') | +----------------------------------------------+ | OK | +----------------------------------------------+ -
audit_log_filter_remove_user(user_name)Удаляет назначение пользователя фильтру по имени учётной записи пользователя. Отсутствие назначенного фильтра для пользователя не является ошибкой. Фильтрация текущих сессий пользователя не изменяется. Новые подключения пользователя фильтруются по умолчанию, если таковой задан, иначе не регистрируются.
Если имя равно
%, функция удаляет фильтр по умолчанию для любой учётной записи пользователя, которой не назначен явный фильтр.Аргументы:
user_name: Имя учётной записи пользователя в форматеилиuser_name@host_name%для представления учётной записи по умолчанию.
Возвращаемое значение:
Строка, указывающая, удалось ли выполнить операцию.
OKуказывает успех.ERROR:указывает неудачу.messageПример:
mysql>
SELECT audit_log_filter_remove_user('user1@localhost');+-------------------------------------------------+ | audit_log_filter_remove_user('user1@localhost') | +-------------------------------------------------+ | OK | +-------------------------------------------------+ -
audit_log_filter_set_filter(filter_name,definition)Добавляет фильтр в текущий набор фильтров по имени фильтра и определению. Если фильтр уже существует и используется текущими сессиями, эти сессии отсоединяются от фильтра и больше не регистрируются. Это происходит, потому что у нового определения фильтра новый идентификатор, отличающийся от предыдущего.
Аргументы:
filter_name: Строка, задающая имя фильтра.definition: ЗначениеJSON, задающее определение фильтра.
Возвращаемое значение:
Строка, указывающая, удалось ли выполнить операцию.
OKуказывает успех.ERROR:указывает неудачу.messageПример:
mysql>
SET @f = '{ "filter": { "log": false } }';mysql>SELECT audit_log_filter_set_filter('SomeFilter', @f);+-----------------------------------------------+ | audit_log_filter_set_filter('SomeFilter', @f) | +-----------------------------------------------+ | OK | +-----------------------------------------------+ -
audit_log_filter_set_user(user_name,filter_name)Назначает пользователю фильтр по имени учётной записи пользователя и имени фильтра. Пользователю может быть назначен только один фильтр, поэтому если пользователю уже назначен фильтр, назначение заменяется. Фильтрация текущих сессий пользователя не изменяется. Новые подключения фильтруются с помощью нового фильтра.
В качестве специального случая, имя
%представляет учётную запись по умолчанию. Этот фильтр применяется к подключениям от любых учётных записей пользователей, которым не назначен явный фильтр.Аргументы:
user_name: Имя учётной записи пользователя в форматеилиuser_name@host_name%для представления учётной записи по умолчанию.filter_name: Строка, задающая имя фильтра.
Возвращаемое значение:
Строка, указывающая, удалось ли выполнить операцию.
OKуказывает успех.ERROR:указывает неудачу.messageПример:
mysql>
SELECT audit_log_filter_set_user('user1@localhost', 'SomeFilter');+------------------------------------------------------------+ | audit_log_filter_set_user('user1@localhost', 'SomeFilter') | +------------------------------------------------------------+ | OK | +------------------------------------------------------------+
-
Читает журнал аудита и возвращает результат в виде строки
JSON. Если формат журнала аудита неJSON, возникает ошибка.Без аргументов или с аргументом в виде хеша
JSON, функцияaudit_log_read()считывает события из журнала аудита и возвращает строкуJSONсодержащую массив событий аудита. Элементы в аргументе хеша влияют на процесс чтения, как описано ниже. Каждый элемент в возвращаемом массиве — событие, представленное в виде хешаJSON, за исключением последнего элемента, который может быть значениемJSONnull, чтобы указать, что больше событий для чтения недоступно.С аргументом, содержащим значение
JSONnull, функцияaudit_log_read()закрывает текущую последовательность чтения.Дополнительные сведения о процессе чтения журнала аудита см. в разделе 8.4.5.6 «Чтение файлов журнала аудита».
Аргументы:
Для получения отметки для последнего записанного события, вызовите
audit_log_read_bookmark().arg: Аргумент необязателен. Если он опущен, функция считывает события с текущей позиции. Если он присутствует, он может быть значениемJSONnullдля закрытия последовательности чтения или хешемJSON. Элементы внутри хеша аргумента являются необязательными и управляют аспектами операции чтения, такими как позиция начала чтения или количество считываемых событий. Следующие элементы важны (другие игнорируются):-
start: Позиция в журнале аудита первого события для чтения. Позиция задаётся как метка времени, и чтение начинается с первого события, произошедшего в или после указанного значения метки времени. Элементstartимеет такой формат, гдеvalue— это значение метки времени:"start": { "timestamp": "value" } timestamp,id: Позиция в журнале аудита первого события для чтения. Элементыtimestampиidвместе образуют отметку, уникально идентифицирующую конкретное событие. Если аргументaudit_log_read()содержит любой из этих элементов, он должен содержать оба для полного задания позиции, иначе произойдёт ошибка.max_array_length: Максимальное количество событий для чтения из журнала. Если этот элемент опущен, по умолчанию читаются все события до конца журнала или пока не заполнится буфер чтения, в зависимости от того, что произойдёт раньше.
Для задания начальной позиции для
audit_log_read(), передайте хеш-аргумент, содержащий либо элементstart, либо отметку, состоящую из элементовtimestampиid. Если хеш-аргумент содержит и элементstart, и отметку, произойдёт ошибка.Если хеш-аргумент не задаёт начальную позицию, чтение продолжается с текущей позиции.
Если значение метки времени не содержит части времени, предполагается часть времени
00:00:00.Значение результата:
При успешном вызове возвращается строка
JSONсодержащая массив событий аудита, или значениеJSONnull, если оно было передано в качестве аргумента для закрытия последовательности чтения. В случае неудачи возвращаетсяNULLи происходит ошибка.Пример:
mysql>
SELECT audit_log_read(audit_log_read_bookmark());+-----------------------------------------------------------------------+ | audit_log_read(audit_log_read_bookmark()) | +-----------------------------------------------------------------------+ | [ {"timestamp":"2020-05-18 22:41:24","id":0,"class":"connection", ... | +-----------------------------------------------------------------------+ mysql>SELECT audit_log_read('null');+------------------------+ | audit_log_read('null') | +------------------------+ | null | +------------------------+Примечания:
До MySQL 9.2 значения строк результата могли быть двоичными строками
JSON. Сведения о преобразовании таких значений в недвоичные строки см. в разделе 8.4.5.6 «Чтение файлов журнала аудита». -
-
Возвращает строку
JSON, представляющую отметку для последнего записанного события журнала аудита. Если формат журнала аудита неJSON, возникает ошибка.Отметка — это хеш
JSONс элементамиtimestampиid, уникально идентифицирующими позицию события в журнале аудита. Она подходит для передачи функцииaudit_log_read()для указания позиции начала чтения.Дополнительные сведения о процессе чтения журнала аудита см. в разделе 8.4.5.6 «Чтение файлов журнала аудита».
Аргументы:
Нет.
Возвращаемое значение:
Строка
JSONсодержащая отметку в случае успеха илиNULLи ошибка в случае неудачи.Пример:
mysql>
SELECT audit_log_read_bookmark();+-------------------------------------------------+ | audit_log_read_bookmark() | +-------------------------------------------------+ | { "timestamp": "2019-10-03 21:03:44", "id": 0 } | +-------------------------------------------------+Примечания:
До MySQL 9.2 значения строк результата могли быть двоичными строками
JSON. Сведения о преобразовании таких значений в недвоичные строки см. в разделе 8.4.5.6 «Чтение файлов журнала аудита». -
Аргументы:
Нет.
Возвращаемое значение:
Переименованное имя файла.
Пример:
mysql> SELECT audit_log_rotate();
Использование
audit_log_rotate()требует привилегииAUDIT_ADMIN.
Справочник по параметрам и переменным журнала аудита
Таблица 8.44 Справочник по параметрам и переменным журнала аудита
| Имя | Командная строка | Файл параметров | Системная переменная | Переменная состояния | Область действия переменной | Динамическая |
|---|---|---|---|---|---|---|
| audit-log | Yes | Yes | ||||
| audit_log_buffer_size | Yes | Yes | Yes | Global | No | |
| audit_log_compression | Yes | Yes | Yes | Global | No | |
| audit_log_connection_policy | Yes | Yes | Yes | Global | Yes | |
| audit_log_current_session | Yes | Both | No | |||
| Audit_log_current_size | Yes | Global | No | |||
| audit_log_database | Yes | Yes | Yes | Global | No | |
| Audit_log_direct_writes | Yes | Global | No | |||
| audit_log_encryption | Yes | Yes | Yes | Global | No | |
| Audit_log_event_max_drop_size | Yes | Global | No | |||
| Audit_log_events | Yes | Global | No | |||
| Audit_log_events_filtered | Yes | Global | No | |||
| Audit_log_events_lost | Yes | Global | No | |||
| Audit_log_events_written | Yes | Global | No | |||
| audit_log_exclude_accounts | Yes | Yes | Yes | Global | Yes | |
| audit_log_file | Yes | Yes | Yes | Global | No | |
| audit_log_filter_id | Yes | Both | No | |||
| audit_log_flush | Yes | Global | Yes | |||
| audit_log_flush_interval_seconds | Yes | Yes | Global | No | ||
| audit_log_format | Yes | Yes | Yes | Global | No | |
| audit_log_include_accounts | Yes | Yes | Yes | Global | Yes | |
| audit_log_max_size | Yes | Yes | Yes | Global | Yes | |
| audit_log_password_history_keep_days | Yes | Yes | Yes | Global | Yes | |
| audit_log_policy | Yes | Yes | Yes | Global | No | |
| audit_log_prune_seconds | Yes | Yes | Yes | Global | Yes | |
| audit_log_read_buffer_size | Yes | Yes | Yes | Both | Yes | |
| audit_log_rotate_on_size | Yes | Yes | Yes | Global | Yes | |
| audit_log_statement_policy | Yes | Yes | Yes | Global | Yes | |
| audit_log_strategy | Yes | Yes | Yes | Global | No | |
| Audit_log_total_size | Yes | Global | No | |||
| Audit_log_write_waits | Yes | Global | No |
Параметры и переменные журнала аудита
В этом разделе описываются параметры командной строки и системные переменные, которые настраивают работу MySQL Enterprise Audit. Если значения, указанные при запуске, неверны, плагин audit_log может не инициализироваться должным образом, и сервер не загрузит его. В этом случае сервер может также выдать сообщения об ошибках для других параметров журнала аудита, поскольку он не распознает их.
Для настройки активации плагина журнала аудита используйте этот параметр:
-
Формат командной строки --audit-log[=value]Тип Enumeration Значение по умолчанию ONДопустимые значения ONOFFFORCEFORCE_PLUS_PERMANENTЭтот параметр управляет тем, как сервер загружает плагин
audit_logпри запуске. Он доступен только в том случае, если плагин был предварительно зарегистрирован с помощьюINSTALL PLUGINили загружен с помощью--plugin-loadили--plugin-load-add. См. Раздел 8.4.5.2, «Установка или удаление MySQL Enterprise Audit».Значение параметра должно быть одним из тех, которые доступны для параметров загрузки плагинов, как описано в Разделе 7.6.1, «Установка и удаление плагинов». Например,
--audit-log=FORCE_PLUS_PERMANENTуказывает серверу загрузить плагин и предотвратить его удаление во время работы сервера.
Если плагин журнала аудита включен, он предоставляет несколько системных переменных, которые позволяют управлять ведением журнала:
mysql> SHOW VARIABLES LIKE 'audit_log%';
+--------------------------------------+--------------+
| Variable_name | Value |
+--------------------------------------+--------------+
| audit_log_buffer_size | 1048576 |
| audit_log_compression | NONE |
| audit_log_connection_policy | ALL |
| audit_log_current_session | OFF |
| audit_log_database | mysql |
| audit_log_disable | OFF |
| audit_log_encryption | NONE |
| audit_log_exclude_accounts | |
| audit_log_file | audit.log |
| audit_log_filter_id | 0 |
| audit_log_flush | OFF |
| audit_log_flush_interval_seconds | 0 |
| audit_log_format | NEW |
| audit_log_format_unix_timestamp | OFF |
| audit_log_include_accounts | |
| audit_log_max_size | 0 |
| audit_log_password_history_keep_days | 0 |
| audit_log_policy | ALL |
| audit_log_prune_seconds | 0 |
| audit_log_read_buffer_size | 32768 |
| audit_log_rotate_on_size | 0 |
| audit_log_statement_policy | ALL |
| audit_log_strategy | ASYNCHRONOUS |
+--------------------------------------+--------------+
Вы можете установить любую из этих переменных при запуске сервера, а некоторые из них — во время выполнения. Те, которые доступны только для фильтрации журнала аудита в режиме обратной совместимости, отмечены соответствующим образом.
-
Формат командной строки --audit-log-buffer-size=#Системная переменная audit_log_buffer_sizeОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1048576Минимальное значение 4096Максимальное значение (64-разрядные платформы) 18446744073709547520Максимальное значение (32-разрядные платформы) 4294967295Единица измерения байты Размер блока 4096Когда плагин журнала аудита асинхронно записывает события в журнал, он использует буфер для хранения содержимого событий перед их записью. Эта переменная управляет размером этого буфера в байтах. Сервер корректирует значение до кратного 4096. Плагин использует один буфер, который он выделяет при инициализации и удаляет при завершении работы. Плагин выделяет этот буфер только если ведение журнала является асинхронным.
-
Формат командной строки --audit-log-compression=valueСистемная переменная audit_log_compressionОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию NONEДопустимые значения NONEGZIPТип сжатия для файла журнала аудита. Допустимые значения:
NONE(без сжатия; значение по умолчанию) иGZIP(сжатие GNU Zip). Для получения дополнительной информации см. Сжатие файлов журнала аудита. -
Формат командной строки --audit-log-connection-policy=valueУстаревшая Да Системная переменная audit_log_connection_policyОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию ALLДопустимые значения ALLERRORSNONEПримечаниеЭта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. Раздел 8.4.5.10, «Фильтрация журнала аудита в режиме обратной совместимости»).
Политика, контролирующая способ записи плагином журнала аудита событий подключения в его файл журнала. В следующей таблице показаны допустимые значения.
Значение Описание ALLЗаписывать все события подключения ERRORSЗаписывать только события неудачного подключения NONEНе записывать события подключения ПримечаниеПри запуске сервера любое заданное явное значение для
audit_log_connection_policyможет быть переопределено, если также указаноaudit_log_policy, как описано в Разделе 8.4.5.5, «Настройка характеристик аудита ведения журнала». -
Системная переменная audit_log_current_sessionОбласть видимости Глобальная, сеанса Динамическая Нет SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию depends on filtering policyВключено ли ведение журнала аудита для текущего сеанса. Значение сеанса этой переменной доступно только для чтения. Оно устанавливается при начале сеанса на основе значений системных переменных
audit_log_include_accountsиaudit_log_exclude_accounts. Плагин журнала аудита использует значение сеанса для определения того, следует ли аудировать события для сеанса. (Существует глобальное значение, но плагин его не использует.) -
Формат командной строки --audit-log-database=valueСистемная переменная audit_log_databaseОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию mysqlУказывает, какую базу данных плагин
audit_logиспользует для поиска своих таблиц. Эта переменная доступна только для чтения. Для получения дополнительной информации см. Раздел 8.4.5.2, «Установка или удаление MySQL Enterprise Audit»). -
Формат командной строки --audit-log-disable[={OFF|ON}]Системная переменная audit_log_disableОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFПозволяет отключить ведение журнала аудита для всех подключающихся и подключенных сеансов. Помимо привилегии
SYSTEM_VARIABLES_ADMIN, для отключения ведения журнала аудита требуется привилегияAUDIT_ADMIN. См. Раздел 8.4.5.9, «Отключение ведения журнала аудита». -
Формат командной строки --audit-log-encryption=valueСистемная переменная audit_log_encryptionОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию NONEДопустимые значения NONEAESТип шифрования для файла журнала аудита. Допустимые значения:
NONE(без шифрования; значение по умолчанию) иAES(шифрование с помощью шифра AES-256-CBC). Для получения дополнительной информации см. Шифрование файлов журнала аудита.
-
Формат командной строки --audit-log-exclude-accounts=valueУстарело Да Системная переменная audit_log_exclude_accountsОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию NULLПримечаниеЭта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. Раздел 8.4.5.10, «Legacy Mode Audit Log Filtering»).
Учетные записи, для которых события не должны регистрироваться. Значение должно быть
NULLили строкой, содержащей список из одного или нескольких имен учетных записей, разделенных запятыми. Для получения дополнительной информации см. Раздел 8.4.5.7, «Audit Log Filtering».Изменения в
audit_log_exclude_accountsвлияют только на соединения, созданные после внесения изменений, а не на существующие соединения. -
Формат командной строки --audit-log-file=file_nameСистемная переменная audit_log_fileОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Имя файла Значение по умолчанию audit.logБазовое имя и суффикс файла, в который плагин журнала аудита записывает события. Значение по умолчанию —
audit.log, независимо от формата регистрации. Чтобы суффикс имени соответствовал формату, задайте имя явно, выбрав другой суффикс (например,audit.xmlдля формата XML,audit.jsonдля формата JSON).Если значение
audit_log_fileявляется относительным именем пути, плагин интерпретирует его относительно каталога данных. Если значение является полным именем пути, плагин использует значение как есть. Полное имя пути может быть полезно, если желательно разместить файлы аудита в отдельной файловой системе или каталоге. В целях безопасности записывайте файл журнала аудита в каталог, доступный только для сервера MySQL и для пользователей, имеющих законное основание для просмотра журнала.Для получения подробной информации о том, как плагин журнала аудита интерпретирует значение
audit_log_fileи правила переименования файлов, которые происходят при инициализации и завершении работы плагина, см. Соглашения об именовании файлов журнала аудита.Плагин журнала аудита использует каталог, содержащий файл журнала аудита (определяется по значению
audit_log_file), как место для поиска читаемых файлов журнала аудита. Из этих файлов журнала и текущего файла плагин создает список тех из них, которые подлежат использованию с функциями закладок и чтения журнала аудита. См. Раздел 8.4.5.6, «Reading Audit Log Files». -
Системная переменная audit_log_filter_idОбласть видимости Глобальная, Сессия Динамическая Нет SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 1Минимальное значение 0Максимальное значение 4294967295Сессионное значение этой переменной указывает на внутренне поддерживаемый идентификатор фильтра аудита для текущей сессии. Значение 0 означает, что для сессии не назначен фильтр.
-
Системная переменная audit_log_flushОбласть видимости Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Логическое Значение по умолчанию OFFПримечаниеПеременная
audit_log_flushустарела; ожидается, что поддержка ее будет удалена в будущей версии MySQL. Она заменена функциейaudit_log_rotate().Если
audit_log_rotate_on_sizeравно 0, автоматическое вращение файла журнала аудита отключено, и вращение происходит только при ручном выполнении. В этом случае включениеaudit_log_flush, установив его в 1 илиON, заставляет плагин журнала аудита закрыть и снова открыть свой файл журнала, чтобы очистить его. (Значение переменной остаетсяOFF, поэтому вам не нужно явно отключать ее, прежде чем снова включать ее для выполнения другой очистки.) Для получения дополнительной информации см. Раздел 8.4.5.5, «Configuring Audit Logging Characteristics». -
audit_log_flush_interval_secondsФормат командной строки --audit-log-flush-interval-seconds[=value]Системная переменная audit_log_flush_interval_secondsОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Беззнаковое длинное Значение по умолчанию 0Максимальное значение (Windows) 4294967295Максимальное значение (Другие) 18446744073709551615Единица измерения секунды Эта системная переменная зависит от компонента
scheduler, который должен быть установлен и включен (см. Раздел 7.5.5, «Scheduler Component»). Чтобы проверить состояние компонента:SHOW VARIABLES LIKE 'component_scheduler%'; +-----------------------------+-------+ | Variable_name | Value | +-----------------------------+-------| | component_scheduler.enabled | On | +-----------------------------+-------+
Когда
audit_log_flush_interval_secondsимеет значение ноль (по умолчанию), автоматическое обновление привилегий не происходит, даже если компонентschedulerвключен (ON).Значения от
0до60(1 до 59) не распознаются; вместо этого эти значения автоматически корректируются до60, и сервер выдает предупреждение. Значения, большие60, определяют количество секунд, которые компонентschedulerожидает с момента запуска или с момента начала предыдущего выполнения, прежде чем он попытается запланировать следующее выполнение.Чтобы сохранить эту глобальную системную переменную в файл
mysqld-auto.cnf, не устанавливая значение глобальной переменной во время выполнения, поставьте перед именем переменной ключевое словоPERSIST_ONLYили квалификатор@@PERSIST_ONLY.. -
Формат командной строки --audit-log-format=valueСистемная переменная audit_log_formatОбласть видимости Глобальная Динамическая Нет SET_VARПодсказка применяетсяНет Тип Перечисление Значение по умолчанию NEWДопустимые значения OLDNEWJSONФормат файла журнала аудита. Допустимые значения:
OLD(XML старого стиля),NEW(XML нового стиля; значение по умолчанию) иJSON. Подробная информация о каждом формате приведена в Разделе 8.4.5.4, «Audit Log File Formats».
-
audit_log_format_unix_timestampФормат командной строки --audit-log-format-unix-timestamp[={OFF|ON}]Системная переменная audit_log_format_unix_timestampОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Булево Значение по умолчанию OFFЭта переменная применяется только для вывода аудиторного журнала в формате JSON. Если это значение истинно, включение этой переменной приводит к добавлению в каждый записной файл журнала поля
time. Значение поля — целое число, представляющее значение временной метки UNIX, указывающее дату и время создания аудиторного события.Изменение значения этой переменной во время выполнения приводит к вращению файлов журнала, поэтому для данного файла журнала в формате JSON все записи в файле либо включают, либо не включают поле
time.Для изменения значения
audit_log_format_unix_timestampво время выполнения требуется привилегияAUDIT_ADMINв дополнение к привилегииSYSTEM_VARIABLES_ADMIN(или устаревшей привилегииSUPER), обычно необходимой для изменения значения глобальной системной переменной во время выполнения. -
Формат командной строки --audit-log-include-accounts=valueУстаревшая Да Системная переменная audit_log_include_accountsОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Строка Значение по умолчанию NULLПримечаниеЭта устаревшая переменная применяется только к фильтрации аудиторного журнала в устаревшем режиме (см. Раздел 8.4.5.10, “Фильтрация аудиторного журнала в устаревшем режиме”).
Учетные записи, для которых должны регистрироваться события. Значение должно быть
NULLили строкой, содержащей список одной или нескольких имен учетных записей, разделенных запятыми. Дополнительную информацию см. в Раздел 8.4.5.7, “Фильтрация аудиторного журнала”.Изменения в
audit_log_include_accountsвлияют только на подключения, созданные после внесения изменения, а не на существующие подключения. -
Формат командной строки --audit-log-max-size=#Системная переменная audit_log_max_sizeОбласть действия Глобальная Динамическая Да SET_VARПодсказка применяетсяНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение (Windows) 4294967295Максимальное значение (Другие) 18446744073709551615Единицы измерения байты Размер блока 4096audit_log_max_sizeотносится к обрезке файлов журнала аудита, которая поддерживается только для файлов журналов в формате JSON. Она контролирует обрезку на основе общего размера файла журнала:Значение 0 (по умолчанию) отключает обрезку на основе размера. Ограничений по размеру нет.
Значение больше 0 включает обрезку на основе размера. Значение — это общий размер, превысив который файлы аудиторного журнала подлежат обрезке.
Если вы установили
audit_log_max_sizeна значение, которое не является кратным 4096, оно усекается до ближайшего кратного. В частности, установка значения меньше 4096 устанавливает его в 0, и обрезка на основе размера не происходит.Если и
audit_log_max_size, иaudit_log_rotate_on_sizeбольше 0,audit_log_max_sizeдолжно быть больше, чем в 7 раз значениеaudit_log_rotate_on_size. В противном случае в журнале ошибок сервера записывается сообщение об ошибке, так как в этом случае «гранулярность» обрезки на основе размера может оказаться недостаточной для предотвращения удаления всех или большинства файлов ротируемых логов каждый раз, когда это происходит.ПримечаниеПростое изменение
audit_log_max_sizeнедостаточно для запуска обрезки файлов журналов, потому что алгоритм обрезки используетaudit_log_rotate_on_size,audit_log_max_sizeиaudit_log_prune_secondsсовместно. Подробности см. в Разделе “Управление дисковым пространством для файлов журналов аудита”.
-
audit_log_password_history_keep_daysФормат командной строки --audit-log-password-history-keep-days=#Системная переменная audit_log_password_history_keep_daysОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Единица измерения дней Плагин журнала аудита реализует шифрование файлов журналов с использованием паролей шифрования, хранящихся в хранилище ключей MySQL (см. Шифрование файлов журнала аудита). Плагин также реализует историю паролей, которая включает в себя архивирование и истечение срока действия паролей (удаление).
Когда плагин журнала аудита создает новый пароль шифрования, он архивирует предыдущий пароль, если он существует, для последующего использования. Переменная
audit_log_password_history_keep_daysуправляет автоматическим удалением истекших архивированных паролей. Ее значение указывает количество дней, по истечении которых архивированные пароли шифрования журнала аудита удаляются. Значение по умолчанию 0 отключает истечение срока действия пароля: срок хранения пароля — навсегда.Новые пароли шифрования журнала аудита создаются в следующих случаях:
Во время инициализации плагина, если плагин обнаруживает, что шифрование файлов журналов включено, он проверяет, содержит ли хранилище ключей пароль шифрования журнала аудита. Если нет, плагин автоматически генерирует случайный начальный пароль шифрования.
Когда вызывается функция
audit_log_encryption_password_set()для установки определенного пароля.
В каждом случае плагин сохраняет новый пароль в хранилище ключей и использует его для шифрования новых файлов журнала.
Удаление истекших паролей шифрования журнала аудита происходит в следующих случаях:
Во время инициализации плагина.
При вызове функции
audit_log_encryption_password_set().-
Когда текущее значение
audit_log_password_history_keep_daysизменяется с его текущего значения на значение, большее 0. Изменения текущего значения происходят для операторовSET, которые используют ключевые словаGLOBALилиPERSIST, но не ключевое словоPERSIST_ONLY.PERSIST_ONLYзаписывает настройку переменной вmysqld-auto.cnf, но не влияет на текущее значение.
При удалении паролей текущее значение
audit_log_password_history_keep_daysопределяет, какие пароли удалить:Если значение равно 0, плагин не удаляет пароли.
Если значение равно
N> 0, плагин удаляет пароли, которым болееNдней.
ПримечаниеСледите за тем, чтобы не истекали старые пароли, которые все еще необходимы для чтения архивированных зашифрованных файлов журналов.
Если вы обычно отключаете истечение срока действия паролей (то есть
audit_log_password_history_keep_daysимеет значение 0), можно выполнить операцию очистки по требованию, временно присвоив переменной значение, большее нуля. Например, чтобы истекли пароли, которым более 365 дней, сделайте следующее:SET GLOBAL audit_log_password_history_keep_days = 365; SET GLOBAL audit_log_password_history_keep_days = 0;
Для установки текущего значения
audit_log_password_history_keep_daysтребуется привилегияAUDIT_ADMIN, в дополнение к привилегииSYSTEM_VARIABLES_ADMIN(или устаревшей привилегииSUPER), обычно требуемой для установки глобального значения системной переменной. -
Формат командной строки --audit-log-policy=valueУстаревший Да Системная переменная audit_log_policyОбласть действия Глобальная Динамическая Нет SET_VARПрименяется подсказкаНет Тип Перечисление Значение по умолчанию ALLДопустимые значения ALLLOGINSQUERIESNONEПримечаниеЭта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. Раздел 8.4.5.10, «Фильтрация журнала аудита в режиме обратной совместимости»).
Политика, определяющая, как плагин журнала аудита записывает события в свой файл журнала. В следующей таблице показаны разрешенные значения.
Значение Описание ALLЗаписывать все события LOGINSЗаписывать только события входа QUERIESЗаписывать только события запросов NONEНе записывать ничего (отключить поток аудита) audit_log_policyможет быть установлена только при запуске сервера. В режиме выполнения это — только для чтения. Две другие системные переменные,audit_log_connection_policyиaudit_log_statement_policy, обеспечивают более тонкую настройку политики ведения журнала и могут быть установлены как при запуске, так и в режиме выполнения. Если вы используетеaudit_log_policyпри запуске вместо двух других переменных, сервер использует ее значение для установки этих переменных. Дополнительную информацию о переменных политики и их взаимодействии см. в Разделе 8.4.5.5, «Настройка характеристик ведения журнала аудита». -
Формат командной строки --audit-log-prune-seconds=#Системная переменная audit_log_prune_secondsОбласть действия Глобальная Динамическая Да SET_VARПрименяется подсказкаНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение (Windows) 4294967295Максимальное значение (другое) 18446744073709551615Единица измерения байт audit_log_prune_secondsотносится к обрезке файла журнала аудита, которая поддерживается только для файлов журналов в формате JSON. Она управляет обрезкой на основе возраста файла журнала:Значение 0 (значение по умолчанию) отключает обрезку на основе возраста. Ограничение по возрасту не применяется.
Значение больше 0 включает обрезку на основе возраста. Значение — это количество секунд после которого файлы журнала аудита подлежат обрезке.
ПримечаниеУстановка
audit_log_prune_secondsсама по себе недостаточна для того, чтобы произошло удаление файла журнала, потому что алгоритм удаления используетaudit_log_rotate_on_size,audit_log_max_sizeиaudit_log_prune_secondsсовместно. Подробности см. в Разделе «Управление дисковым пространством для файлов журнала аудита».
-
Формат командной строки --audit-log-read-buffer-size=#Системная переменная audit_log_read_buffer_sizeОбласть действия Глобальная, Сеанс Динамическая Да Применимо подсказка SET_VARНет Тип Целое число Значение по умолчанию 32768Минимальное значение 32768Максимальное значение 4194304Единица измерения байты Размер буфера для чтения из файла журнала аудита в байтах. Функция
audit_log_read()считывает не более этого количества байтов. Чтение файла журнала поддерживается только для формата журнала JSON. Дополнительную информацию см. в разделе 8.4.5.6, «Чтение файлов журналов аудита».Эта переменная имеет значение по умолчанию 32 КБ и может быть установлена во время выполнения. Каждый клиент должен соответствующим образом установить значение сеанса переменной
audit_log_read_buffer_sizeдля использования функцииaudit_log_read(). -
Формат командной строки --audit-log-rotate-on-size=#Системная переменная audit_log_rotate_on_sizeОбласть действия Глобальная Динамическая Да Применимо подсказка SET_VARНет Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 18446744073709551615Единица измерения байты Размер блока 4096Если
audit_log_rotate_on_sizeравно 0, модуль аудита журнала не выполняет автоматическую ротацию файла журнала на основе размера. Если требуется выполнить ротацию, вы должны выполнить её вручную; см. Вручную ротация файлов журналов аудита.Если
audit_log_rotate_on_sizeбольше 0, происходит автоматическая ротация файла журнала на основе размера. Всякий раз, когда запись в файл журнала приводит к превышению значенияaudit_log_rotate_on_size, модуль аудита журнала переименовывает текущий файл журнала и открывает новый текущий файл журнала с использованием исходного имени.Если вы установите
audit_log_rotate_on_sizeна значение, которое не кратно 4096, оно усекается до ближайшего кратного. В частности, установка значения меньше 4096 устанавливает его в 0, и ротация не происходит, за исключением ручного режима.Примечаниеaudit_log_rotate_on_sizeуправляет выполнением ротации файла журнала аудита. Он также может использоваться совместно сaudit_log_max_sizeиaudit_log_prune_secondsдля настройки очистки файлов журналов JSON, которые были прокручены. Подробнее см. в Управлении пространством файлов журналов аудита. -
Формат командной строки --audit-log-statement-policy=valueУстаревший Да Системная переменная audit_log_statement_policyОбласть действия Глобальная Динамическая Да Применимо подсказка SET_VARНет Тип Перечисление Значение по умолчанию ALLДопустимые значения ALLERRORSNONEПримечаниеЭта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. раздел 8.4.5.10, «Фильтрация журнала аудита в режиме обратной совместимости»).
Политика, определяющая, как модуль аудита журнала записывает события операторов в файл журнала. В следующей таблице показаны разрешенные значения.
Значение Описание ALLЗаписывать все события операторов ERRORSЗаписывать только события операторов, завершившиеся ошибкой NONEНе записывать события операторов ПримечаниеПри запуске сервера любое явное значение, заданное для
audit_log_statement_policy, может быть переопределено, если также указано значениеaudit_log_policy, как описано в разделе 8.4.5.5, «Настройка характеристик регистрации аудита». -
Формат командной строки --audit-log-strategy=valueСистемная переменная audit_log_strategyОбласть действия Глобальная Динамическая Нет Применимо подсказка SET_VARНет Тип Перечисление Значение по умолчанию ASYNCHRONOUSДопустимые значения ASYNCHRONOUSPERFORMANCESEMISYNCHRONOUSSYNCHRONOUSМетод регистрации, используемый модулем аудита журнала. Разрешены следующие стратегии:
ASYNCHRONOUS: Асинхронная регистрация. Ожидание места в буфере вывода.PERFORMANCE: Асинхронная регистрация. Отбрасывание запросов, для которых нет достаточного места в буфере вывода.SEMISYNCHRONOUS: Синхронная регистрация. Разрешение кэширования операционной системой.SYNCHRONOUS: Синхронная регистрация. Вызовsync()после каждого запроса.
Переменные состояния журнала аудита
Если плагин журнала аудита включён, он предоставляет несколько переменных состояния, предоставляющих операционную информацию. Эти переменные доступны для фильтрации аудита в режиме обратной совместимости (устаревший) и для фильтрации аудита в режиме JSON.
-
Размер текущего файла журнала аудита. Значение увеличивается при записи события в журнал и сбрасывается до 0 при переполнении журнала.
-
Когда плагин журнала аудита записывает события в журнал аудита в формате JSON, он использует буфер для хранения содержимого событий перед записью. Если длина запроса больше размера буфера, то плагин записывает событие непосредственно в журнал, минуя буфер. Эта переменная показывает количество прямых записей. Плагин определяет счёт на основе текущей стратегии записи (см.
audit_log_strategy).Таблица 8.45 Влияние стратегии записи на количество прямых записей
Таблица 8.45 Влияние стратегии записи на количество прямых записей Стратегия записи Описание ASYNCHRONOUSУвеличивается, если размер события не помещается в внутренний буфер ( audit_log_buffer_sizeсистемная переменная сервера).PERFORMANCEНе увеличивается. Плагин отбрасывает события, превышающие размер внутреннего буфера. SEMISYNCHRONOUSВсегда увеличивается. SYNCHRONOUSВсегда увеличивается.
-
Размер самого большого отброшенного события в режиме ведения журнала производительности. Описание режимов ведения журнала см. в разделе 8.4.5.5 «Настройка характеристик ведения журнала аудита».
-
Количество событий, обработанных плагином журнала аудита, независимо от того, были ли они записаны в журнал на основе политики фильтрации (см. раздел 8.4.5.5 «Настройка характеристик ведения журнала аудита»).
-
Количество событий, обработанных плагином журнала аудита, которые были отфильтрованы (не записаны в журнал) на основе политики фильтрации (см. раздел 8.4.5.5 «Настройка характеристик ведения журнала аудита»).
-
Количество потерянных событий в режиме ведения журнала производительности, потому что событие было больше, чем доступное место в буфере журнала аудита. Это значение может быть полезным для оценки того, как установить
audit_log_buffer_sizeдля настройки размера буфера для режима производительности. Описание режимов ведения журнала см. в разделе 8.4.5.5 «Настройка характеристик ведения журнала аудита». -
Количество событий, записанных в журнал аудита.
-
Общий размер событий, записанных во все файлы журнала аудита. В отличие от
Audit_log_current_size, значениеAudit_log_total_sizeувеличивается даже при переполнении журнала. -
Количество раз, когда событию приходилось ждать места в буфере журнала аудита в асинхронном режиме ведения журнала. Описание режимов ведения журнала см. в разделе 8.4.5.5 «Настройка характеристик ведения журнала аудита».
© 2025 Oracle
Licensed under the GPLv2 License.