Spec-Zone.ru › MySQL 8.4

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».

    Без аргументов функция извлекает текущий пароль шифрования в виде двоичной строки. Можно указать аргумент, чтобы задать, какой пароль шифрования журнала аудита нужно извлечь. Аргумент должен быть ID кольца ключей текущего пароля или заархивированного пароля.

    Дополнительная информация о шифровании журнала аудита приведена в разделе Шифрование файлов журнала аудита.

    Аргументы:

    keyring_id: Этот необязательный аргумент указывает ID кольца ключей пароля для извлечения. Максимально допустимая длина составляет 766 байт. Если пропущен, функция извлекает текущий пароль.

    Возвращаемое значение:

    Строка пароля в случае успеха (до 766 байт) или NULL и ошибка в случае неудачи.

    Пример:

    Извлечение текущего пароля:

    mysql> SELECT audit_log_encryption_password_get();
    +-------------------------------------+
    | audit_log_encryption_password_get() |
    +-------------------------------------+
    | secret                              |
    +-------------------------------------+
    

    Чтобы извлечь пароль по ID, можно определить, какие ID колец ключей журнала аудита существуют, запросив таблицу Performance Schema keyring_keys:

    mysql> SELECT KEY_ID FROM performance_schema.keyring_keys
           WHERE 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(password);
    +---------------------------------------------+
    | audit_log_encryption_password_set(password) |
    +---------------------------------------------+
    | 1                                           |
    +---------------------------------------------+
    
  • audit_log_filter_flush()

    Вызов любой из других функций фильтрации немедленно влияет на фильтрацию операционного журнала аудита и обновляет таблицы журнала аудита. Если вместо этого изменить содержимое этих таблиц напрямую, используя операторы, такие как 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)

    Добавляет фильтр в текущий набор фильтров по заданному имени и определению фильтра. Если фильтр уже существует и используется текущими сессиями, эти сессии отсоединяются от фильтра и больше не регистрируются. Это происходит потому, что новое определение фильтра имеет новый ID фильтра, который отличается от его предыдущего ID.

    Аргументы:

    • 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                                                         |
    +------------------------------------------------------------+
    
  • audit_log_read([arg])

    Считывает журнал аудита и возвращает строку результата JSON. Если формат журнала аудита не JSON, возникает ошибка.

    Без аргумента или с аргументом в виде JSON объекта-словаря, функция audit_log_read() считывает события из журнала аудита и возвращает строку JSON, содержащую массив событий аудита. Элементы аргумента-словаря влияют на процесс считывания, как описано ниже. Каждый элемент возвращаемого массива — это событие, представленное JSON объектом-словарем, за исключением последнего элемента, который может быть JSON значением null, указывающим на отсутствие доступных для чтения событий.

    С аргументом, содержащим JSON значение null, функция audit_log_read() закрывает текущую последовательность чтения.

    Дополнительные сведения о процессе чтения журнала аудита см. в разделе 8.4.5.6 «Чтение файлов журнала аудита».

    Аргументы:

    Чтобы получить отметку для последнего записанного события, вызовите audit_log_read_bookmark().

    arg: Аргумент необязательный. Если он опущен, функция считывает события с текущей позиции. Если он присутствует, он может быть значением JSON null для закрытия последовательности чтения или объектом-словарем 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, содержащая массив событий аудита, или значение JSON null, если оно было передано в качестве аргумента для закрытия последовательности чтения. Если вызов завершился неудачей, возвращаемое значение — 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 8.4 значения строк возврата могли быть двоичными строками JSON. Сведения о преобразовании таких значений в строки без двоичного представления см. в разделе 8.4.5.6 «Чтение файлов журнала аудита».

  • audit_log_read_bookmark()

    Возвращает строку 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 8.4 значения строк возврата могли быть двоичными строками JSON. Сведения о преобразовании таких значений в строки без двоичного представления см. в разделе 8.4.5.6 «Чтение файлов журнала аудита».

  • audit_log_rotate()

    Аргументы:

    Нет.

    Значение возврата:

    Переименованное имя файла.

    Пример:

    mysql> SELECT audit_log_rotate();
    

    Для использования audit_log_rotate() требуется привилегия AUDIT_ADMIN.

Справочник по параметрам и переменным журнала аудита

Таблица 8.43 Справочник по параметрам и переменным журнала аудита

Таблица 8.43 Справочник по параметрам и переменным журнала аудита
Имя Командная строка Файл параметров Системная переменная Переменная состояния Область действия переменной Динамическая
audit-log Да Да
audit_log_buffer_size Да Да Да Глобальная Нет
audit_log_compression Да Да Да Глобальная Нет
audit_log_connection_policy Да Да Да Глобальная Да
audit_log_current_session Да Обе Нет
Audit_log_current_size Да Глобальная Нет
audit_log_database Да Да Да Глобальная Нет
Audit_log_direct_writes Да Глобальная Нет
audit_log_disable Да Да Да Глобальная Да
audit_log_encryption Да Да Да Глобальная Нет
Audit_log_event_max_drop_size Да Глобальная Нет
Audit_log_events Да Глобальная Нет
Audit_log_events_filtered Да Глобальная Нет
Audit_log_events_lost Да Глобальная Нет
Audit_log_events_written Да Глобальная Нет
audit_log_exclude_accounts Да Да Да Глобальная Да
audit_log_file Да Да Да Глобальная Нет
audit_log_filter_id Да Обе Нет
audit_log_flush Да Глобальная Да
audit_log_flush_interval_seconds Да Да Глобальная Нет
audit_log_format Да Да Да Глобальная Нет
audit_log_include_accounts Да Да Да Глобальная Да
audit_log_max_size Да Да Да Глобальная Да
audit_log_password_history_keep_days Да Да Да Глобальная Да
audit_log_policy Да Да Да Глобальная Нет
audit_log_prune_seconds Да Да Да Глобальная Да
audit_log_read_buffer_size Да Да Да Обе Да
audit_log_rotate_on_size Да Да Да Глобальная Да
audit_log_statement_policy Да Да Да Глобальная Да
audit_log_strategy Да Да Да Глобальная Нет
Audit_log_total_size Да Глобальная Нет
Audit_log_write_waits Да Глобальная Нет

Параметры и переменные журнала аудита

В этом разделе описываются параметры командной строки и системные переменные, которые настраивают работу MySQL Enterprise Audit. Если значения, указанные при запуске, неверны, плагин audit_log может не инициализироваться должным образом, и сервер не загрузит его. В этом случае сервер также может выводить сообщения об ошибках для других параметров журнала аудита, поскольку он не распознает их.

Для настройки активации плагина журнала аудита используйте этот параметр:

  • --audit-log[=value]

    Формат командной строки --audit-log[=value]
    Тип Перечисление
    Значение по умолчанию ON
    Допустимые значения

    ON

    OFF

    FORCE

    FORCE_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=#
    Системная переменная audit_log_buffer_size
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1048576
    Минимальное значение 4096
    Максимальное значение (64-битные платформы) 18446744073709547520
    Максимальное значение (32-битные платформы) 4294967295
    Единица измерения байты
    Размер блока 4096

    Когда плагин журнала аудита асинхронно записывает события в журнал, он использует буфер для хранения содержимого событий перед их записью. Эта переменная управляет размером этого буфера в байтах. Сервер корректирует значение до кратного 4096. Плагин использует один буфер, который он выделяет при инициализации и удаляет при завершении работы. Плагин выделяет этот буфер только в том случае, если ведение журнала является асинхронным.

  • audit_log_compression

    Формат командной строки --audit-log-compression=value
    Системная переменная audit_log_compression
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Перечисление
    Значение по умолчанию NONE
    Допустимые значения

    NONE

    GZIP

    Тип сжатия для файла журнала аудита. Допустимые значения: NONE (без сжатия; значение по умолчанию) и GZIP (сжатие GNU Zip). Для получения дополнительной информации см. Сжатие файлов журнала аудита.

  • audit_log_connection_policy

    Формат командной строки --audit-log-connection-policy=value
    Устарела Да
    Системная переменная audit_log_connection_policy
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Перечисление
    Значение по умолчанию ALL
    Допустимые значения

    ALL

    ERRORS

    NONE

    Примечание

    Эта устаревшая переменная применяется только к фильтрации журнала аудита в традиционном режиме (см. Раздел 8.4.5.10, «Фильтрация журнала аудита в традиционном режиме»).

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

    Значение Описание
    ALL Записывать все события подключения
    ERRORS Записывать только события неудачного подключения
    NONE Не записывать события подключения
    Примечание

    При запуске сервера любое явное значение, указанное для audit_log_connection_policy, может быть переопределено, если также указана audit_log_policy, как описано в Разделе 8.4.5.5, «Настройка характеристик аудита журнала».

  • audit_log_current_session

    Системная переменная audit_log_current_session
    Область действия Глобальная, Сессия
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Логическое
    Значение по умолчанию depends on filtering policy

    Включено ли ведение журнала аудита для текущего сеанса. Значение сеанса этой переменной доступно только для чтения. Оно устанавливается при начале сеанса на основе значений системных переменных audit_log_include_accounts и audit_log_exclude_accounts. Плагин журнала аудита использует значение сеанса для определения того, следует ли аудировать события для сеанса. (Существует глобальное значение, но плагин его не использует.)

  • audit_log_database

    Формат командной строки --audit-log-database=value
    Системная переменная audit_log_database
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Строка
    Значение по умолчанию mysql

    Указывает, какую базу данных плагин audit_log использует для поиска своих таблиц. Эта переменная доступна только для чтения. Для получения дополнительной информации см. Раздел 8.4.5.2, «Установка или удаление MySQL Enterprise Audit»).

  • audit_log_disable

    Формат командной строки --audit-log-disable[={OFF|ON}]
    Системная переменная audit_log_disable
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Логическое
    Значение по умолчанию OFF

    Позволяет отключить ведение журнала аудита для всех подключаемых и подключенных сеансов. Помимо привилегии SYSTEM_VARIABLES_ADMIN, для отключения ведения журнала аудита требуется привилегия AUDIT_ADMIN. См. Раздел 8.4.5.9, «Отключение ведения журнала аудита».

  • audit_log_encryption

    Формат командной строки --audit-log-encryption=value
    Системная переменная audit_log_encryption
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Перечисление
    Значение по умолчанию NONE
    Допустимые значения

    NONE

    AES

    Тип шифрования для файла журнала аудита. Допустимые значения: NONE (без шифрования; значение по умолчанию) и AES (шифрование с помощью шифра AES-256-CBC). Для получения дополнительной информации см. Шифрование файлов журнала аудита.

  • audit_log_exclude_accounts

    Формат командной строки --audit-log-exclude-accounts=value
    Устарело Да
    Системная переменная audit_log_exclude_accounts
    Область видимости Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Строка
    Значение по умолчанию NULL
    Примечание

    Эта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. Раздел 8.4.5.10, «Фильтрация журнала аудита в режиме обратной совместимости»).

    Учетные записи, для которых события не должны регистрироваться. Значение должно быть NULL или строкой, содержащей список из одного или нескольких имен учетных записей, разделенных запятыми. Для получения дополнительной информации см. Раздел 8.4.5.7, «Фильтрация журнала аудита».

    Изменения в audit_log_exclude_accounts влияют только на соединения, созданные после внесения изменений, а не на существующие соединения.

  • audit_log_file

    Формат командной строки --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, «Чтение файлов журнала аудита».

  • audit_log_filter_id

    Системная переменная audit_log_filter_id
    Область видимости Глобальная, Сессия
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 1
    Минимальное значение 0
    Максимальное значение 4294967295

    Значение сессии этой переменной указывает на внутренне поддерживаемый ID фильтра аудита для текущей сессии. Значение 0 означает, что сессии не назначен фильтр.

  • audit_log_flush

    Системная переменная 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, «Настройка характеристик ведения журнала аудита».

  • 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, «Компонент планировщика»). Чтобы проверить состояние компонента:

    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

    Формат командной строки --audit-log-format=value
    Системная переменная audit_log_format
    Область видимости Глобальная
    Динамическая Нет
    SET_VAR Подсказка применяется Нет
    Тип Перечисление
    Значение по умолчанию NEW
    Допустимые значения

    OLD

    NEW

    JSON

    Формат файла журнала аудита. Допустимые значения: OLD (XML старого стиля), NEW (XML нового стиля; значение по умолчанию) и JSON. Подробные сведения о каждом формате см. в разделе Раздел 8.4.5.4, «Форматы файлов журнала аудита».

  • 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

    Формат командной строки --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=#
    Системная переменная audit_log_max_size
    Область действия Глобальная
    Динамическая Да
    SET_VAR Подсказка применяется Нет
    Тип Целое число
    Значение по умолчанию 0
    Минимальное значение 0
    Максимальное значение (Windows) 4294967295
    Максимальное значение (Другие) 18446744073709551615
    Единицы измерения байты
    Размер блока 4096

    audit_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

    Формат командной строки --audit-log-policy=value
    Устаревший Да
    Системная переменная audit_log_policy
    Область действия Глобальная
    Динамическая Нет
    SET_VAR Применяется подсказка Нет
    Тип Перечисление
    Значение по умолчанию ALL
    Допустимые значения

    ALL

    LOGINS

    QUERIES

    NONE

    Примечание

    Эта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. Раздел 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=#
    Системная переменная 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=#
    Системная переменная 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=#
    Системная переменная 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

    Формат командной строки --audit-log-statement-policy=value
    Устаревший Да
    Системная переменная audit_log_statement_policy
    Область действия Глобальная
    Динамическая Да
    Применимо подсказка SET_VAR Нет
    Тип Перечисление
    Значение по умолчанию ALL
    Допустимые значения

    ALL

    ERRORS

    NONE

    Примечание

    Эта устаревшая переменная применяется только к фильтрации журнала аудита в режиме обратной совместимости (см. раздел 8.4.5.10, «Фильтрация журнала аудита в режиме обратной совместимости»).

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

    Значение Описание
    ALL Записывать все события операторов
    ERRORS Записывать только события операторов, завершившиеся ошибкой
    NONE Не записывать события операторов
    Примечание

    При запуске сервера любое явное значение, заданное для audit_log_statement_policy, может быть переопределено, если также указано значение audit_log_policy, как описано в разделе 8.4.5.5, «Настройка характеристик регистрации аудита».

  • audit_log_strategy

    Формат командной строки --audit-log-strategy=value
    Системная переменная audit_log_strategy
    Область действия Глобальная
    Динамическая Нет
    Применимо подсказка SET_VAR Нет
    Тип Перечисление
    Значение по умолчанию ASYNCHRONOUS
    Допустимые значения

    ASYNCHRONOUS

    PERFORMANCE

    SEMISYNCHRONOUS

    SYNCHRONOUS

    Метод регистрации, используемый модулем аудита журнала. Разрешены следующие стратегии:

    • ASYNCHRONOUS: Асинхронная регистрация. Ожидание места в буфере вывода.

    • PERFORMANCE: Асинхронная регистрация. Отбрасывание запросов, для которых нет достаточного места в буфере вывода.

    • SEMISYNCHRONOUS: Синхронная регистрация. Разрешение кэширования операционной системой.

    • SYNCHRONOUS: Синхронная регистрация. Вызов sync() после каждого запроса.

Переменные состояния журнала аудита

Если плагин журнала аудита включён, он предоставляет несколько переменных состояния, которые предоставляют операционную информацию. Эти переменные доступны для фильтрации аудита в режиме обратной совместимости (устаревший) и для фильтрации аудита в формате JSON.

  • Audit_log_current_size

    Размер текущего файла журнала аудита. Значение увеличивается при записи события в журнал и сбрасывается до 0 при его переписывании.

  • Audit_log_direct_writes

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

    Таблица 8.44 Влияние стратегии записи на счёт прямых записей

    Таблица 8.44 Влияние стратегии записи на счёт прямых записей
    Стратегия записи Описание
    ASYNCHRONOUS Увеличивается, если размер события не помещается в внутренний буфер (audit_log_buffer_size системная переменная сервера).
    PERFORMANCE Не увеличивается. Плагин отбрасывает события, превышающие размер внутреннего буфера.
    SEMISYNCHRONOUS Всегда увеличивается.
    SYNCHRONOUS Всегда увеличивается.

  • Audit_log_event_max_drop_size

    Размер самого большого отброшенного события в режиме ведения журнала производительности. Описание режимов ведения журнала см. в разделе 8.4.5.5, «Настройка характеристик ведения журнала аудита».

  • Audit_log_events

    Количество событий, обработанных плагином журнала аудита, независимо от того, были ли они записаны в журнал на основании политики фильтрации (см. раздел 8.4.5.5, «Настройка характеристик ведения журнала аудита»).

  • Audit_log_events_filtered

    Количество событий, обработанных плагином журнала аудита, которые были отфильтрованы (не записаны в журнал) на основании политики фильтрации (см. раздел 8.4.5.5, «Настройка характеристик ведения журнала аудита»).

  • Audit_log_events_lost

    Количество потерянных событий в режиме ведения журнала производительности, потому что событие было больше доступного пространства буфера журнала аудита. Это значение может быть полезным для оценки того, как установить audit_log_buffer_size, чтобы задать размер буфера для режима производительности. Описание режимов ведения журнала см. в разделе 8.4.5.5, «Настройка характеристик ведения журнала аудита».

  • Audit_log_events_written

    Количество событий, записанных в журнал аудита.

  • Audit_log_total_size

    Общий размер событий, записанных во все файлы журнала аудита. В отличие от Audit_log_current_size, значение Audit_log_total_size увеличивается даже при переписывании журнала.

  • Audit_log_write_waits

    Количество раз, когда событию пришлось ждать места в буфере журнала аудита в асинхронном режиме ведения журнала. Описание режимов ведения журнала см. в разделе 8.4.5.5, «Настройка характеристик ведения журнала аудита».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/audit-log-reference.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API