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_nameNULL, в этом случае фильтрация по учетной записи не выполняется, и аудит осуществляется для всех учетных записей.
Изменения в 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 LOGINSALLNONEQUERIESNONEALLNONENONENONE
© 2025 Oracle
Licensed under the GPLv2 License.