Spec-Zone.ru › MySQL 5.7

6.4.5.10 Фильтрация журнала аудита в режиме совместимости

Примечание

В данном разделе описывается фильтрация журнала аудита в режиме совместимости, которая применяется в следующих случаях:

  • Перед MySQL 5.7.13, то есть до появления фильтрации журнала аудита на основе правил, описанной в разделе 6.4.5.7 «Фильтрация журнала аудита».

  • Начиная с MySQL 5.7.13, если плагин audit_log установлен без необходимых для фильтрации на основе правил аудиторских таблиц и функций.

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

  • Фильтрация событий совместимости по учетной записи

  • Фильтрация событий совместимости по состоянию

Фильтрация событий совместимости по учетной записи

Для фильтрации аудируемых событий на основе учетной записи источника установите одну (но не обе) из следующих системных переменных при запуске или во время работы сервера. Эти переменные применимы только для фильтрации журнала аудита в режиме совместимости.

  • audit_log_include_accounts: Учетные записи, которые следует включать в журнал аудита. Если эта переменная задана, аудиту подвергаются только эти учетные записи.

  • audit_log_exclude_accounts: Учетные записи, которые следует исключить из журнала аудита. Если эта переменная задана, аудиту подвергаются все учетные записи, кроме этих.

Значение любой из переменных может быть NULL или строкой, содержащей одно или несколько имен учетных записей, разделенных запятыми, каждое в формате user_name@host_name. По умолчанию обе переменные равны NULL, в этом случае фильтрация по учетной записи не выполняется, и аудит осуществляется для всех учетных записей.

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

Пример: Чтобы включить журнал аудита только для локальных учетных записей user1 и user2, установите системную переменную audit_log_include_accounts следующим образом:

SET GLOBAL audit_log_include_accounts = 'user1@localhost,user2@localhost';

Одновременно может быть не NULL только одна из переменных audit_log_include_accounts или audit_log_exclude_accounts:

  • Если вы установите audit_log_include_accounts, сервер установит audit_log_exclude_accounts в значение NULL.

  • Если вы попытаетесь установить audit_log_exclude_accounts, произойдет ошибка, если audit_log_include_accounts не является NULL. В этом случае необходимо сначала очистить audit_log_include_accounts, установив его в значение NULL.

-- This sets audit_log_exclude_accounts to NULL
SET GLOBAL audit_log_include_accounts = value;

-- This fails because audit_log_include_accounts is not NULL
SET GLOBAL audit_log_exclude_accounts = value;

-- To set audit_log_exclude_accounts, first set
-- audit_log_include_accounts to NULL
SET GLOBAL audit_log_include_accounts = NULL;
SET GLOBAL audit_log_exclude_accounts = value;

Если вы проверяете значение любой из переменных, учтите, что SHOW VARIABLES отображает NULL как пустую строку. Чтобы отобразить NULL как NULL, используйте SELECT вместо этого:

mysql> SHOW VARIABLES LIKE 'audit_log_include_accounts';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| audit_log_include_accounts |       |
+----------------------------+-------+
mysql> SELECT @@audit_log_include_accounts;
+------------------------------+
| @@audit_log_include_accounts |
+------------------------------+
| NULL                         |
+------------------------------+

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

SET GLOBAL audit_log_include_accounts = 'root@localhost';
SET GLOBAL audit_log_include_accounts = '''root''@''localhost''';
SET GLOBAL audit_log_include_accounts = '\'root\'@\'localhost\'';
SET GLOBAL audit_log_include_accounts = "'root'@'localhost'";

Последнее утверждение не работает, если включен режим SQL ANSI_QUOTES, потому что в этом режиме двойные кавычки обозначают кавычки идентификатора, а не кавычки строки.

Фильтрация событий совместимости по состоянию

Для фильтрации аудируемых событий по состоянию установите следующие системные переменные при запуске или во время работы сервера. Эти переменные применимы только для фильтрации журнала аудита в режиме совместимости. Для фильтрации журнала аудита в формате JSON применяются разные переменные состояния; см. Параметры и переменные журнала аудита.

  • audit_log_connection_policy: Политика регистрации для событий подключения

  • audit_log_statement_policy: Политика регистрации для событий запросов

Каждая переменная принимает значение ALL (регистрация всех связанных событий; это значение по умолчанию), ERRORS (регистрация только неудачных событий) или NONE (не регистрировать события). Например, чтобы записать все события запросов, но только неудачные события подключения, используйте эти параметры:

SET GLOBAL audit_log_statement_policy = ALL;
SET GLOBAL audit_log_connection_policy = ERRORS;

Другая системная переменная политики, audit_log_policy, доступна, но не обеспечивает такого же уровня управления, как audit_log_connection_policy и audit_log_statement_policy. Она может быть установлена только при запуске сервера. Во время работы она является только для чтения. Она принимает значение ALL (записывать все события; это значение по умолчанию), LOGINS (записывать события подключения), QUERIES (записывать события запросов) или NONE (не записывать события). В любом из этих случаев плагин журнала аудита записывает все выбранные события без различия успешности или неудачи. Использование audit_log_policy при запуске работает следующим образом:

  • Если вы не устанавливаете audit_log_policy или устанавливаете ее значение по умолчанию ALL, применяются все явные настройки audit_log_connection_policy или audit_log_statement_policy в соответствии с заданными значениями. Если не указаны, они устанавливаются по умолчанию в ALL.

  • Если вы установите audit_log_policy в значение, отличное от ALL, это значение имеет приоритет и используется для установки значений audit_log_connection_policy и audit_log_statement_policy, как показано в таблице ниже. Если вы также установили одну из этих переменных в значение, отличное от значения по умолчанию ALL, сервер запишет сообщение в журнал ошибок, чтобы указать, что их значения переопределяются.

    Значение audit_log_policy при запуске Полученное значение audit_log_connection_policy Полученное значение audit_log_statement_policy
    LOGINS ALL NONE
    QUERIES NONE ALL
    NONE NONE NONE

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

Spec-Zone.ru

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