介绍遗留审计日志过滤,适用于audit_log
插件安装时没有附带基于规则的过滤所需的审计表和函数。
审计日志插件可以过滤审计事件。这使您能够根据事件产生的帐户或事件状态控制是否将审计事件写入审计日志文件。连接事件和语句事件分别进行状态过滤。
要根据原始帐户筛选审计事件,请在服务器启动或运行时设置以下系统变量中的一个(而不是两个)。这些变量仅适用于遗留审计日志过滤。
audit_log_include_accounts
:审计日志中包含的帐户。如果设置了该变量,则只审计这些帐户。audit_log_exclude_accounts
:要排除在审计日志记录之外的帐户。如果设置了该变量,则审计除这些帐户外的所有帐户。
任意一个变量的值都可以为零
或包含一个或多个逗号分隔的帐户名称的字符串,每个帐户名称在
格式。默认情况下,两个变量都是user_name
@host_name
零
,在这种情况下,不进行帐户过滤,并对所有帐户进行审计。
修改audit_log_include_accounts
或audit_log_exclude_accounts
仅影响修改后创建的连接,不影响现有连接。
示例:仅对user1
而且user2
本地主机帐户,设置audit_log_include_accounts
系统变量如下:
SET GLOBAL audit_log_include_accounts = 'user1@localhost,user2@localhost';
只有一个audit_log_include_accounts
或audit_log_exclude_accounts
可以是非零
在同一时间:
如果你设置
audit_log_include_accounts
,服务器集audit_log_exclude_accounts
来零
.如果你试图设置
audit_log_exclude_accounts
,除非发生错误audit_log_include_accounts
是零
.在这种情况下,必须先清除audit_log_include_accounts
通过将其设置为零
.
——将audit_log_exclude_accounts设置为NULL SET GLOBAL audit_log_include_accounts =价值;——这个失败是因为audit_log_include_accounts不是NULL SET GLOBAL audit_log_exclude_accounts =价值;——要设置audit_log_exclude_accounts,首先设置——audit_log_include_accounts为NULL set GLOBAL audit_log_include_accounts = NULL;SET GLOBAL audit_log_exclude_accounts =价值;
如果检查任意一个变量的值,请注意显示变量
显示零
作为一个空字符串。来显示零
作为零
,使用选择
而不是:
显示'audit_log_include_accounts'这样的变量+----------------------------+-------+ | Variable_name |值 | +----------------------------+-------+ | audit_log_include_accounts | | +----------------------------+-------+ mysql >选择@@audit_log_include_accounts;+------------------------------+ | @@ audit_log_include_accounts | +------------------------------+ | 零 | +------------------------------+
如果用户名或主机名由于包含逗号、空格或其他特殊字符而需要加引号,请使用单引号。如果变量值本身是用单引号引用的,则将每个内单引号加倍或用反斜杠转义。下面的语句都为本地启用审计日志记录根
Account和是等价的,尽管引用风格不同:
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'";
最后一个语句无效,如果ANSI_QUOTES
启用SQL模式,因为在该模式下双引号表示标识符引用,而不是字符串引用。
要根据状态过滤审计事件,请在服务器启动或运行时设置以下系统变量。这些变量仅适用于遗留审计日志过滤。对于JSON审计日志过滤,应用不同的状态变量;看到审计日志选项和变量.
audit_log_connection_policy
:连接事件的记录策略audit_log_statement_policy
:语句事件的日志记录策略
每个变量的值为所有
(记录所有相关事件;这是默认值),错误
(只记录失败的事件),或者没有一个
(不要记录事件)。例如,要记录所有语句事件,但只记录失败的连接事件,使用以下设置:
SET全局audit_log_statement_policy = ALL;SET GLOBAL audit_log_connection_policy = ERRORS;
另一个政策系统变量,audit_log_policy
,是可用的,但没有提供像audit_log_connection_policy
而且audit_log_statement_policy
.只能在服务器启动时设置。在运行时,它是一个只读变量。它的值是所有
(记录所有事件;这是默认值),登录
(日志连接事件),查询
(日志语句事件),或没有一个
(不要记录事件)。对于这些值中的任何一个,审计日志插件都会记录所有选择的事件,而不区分成功或失败。使用audit_log_policy
在启动时工作如下:
如果不设置
audit_log_policy
或将其设置为默认值所有
的任何显式设置audit_log_connection_policy
或audit_log_statement_policy
按指定应用。如果未指定,则默认为所有
.如果你设置
audit_log_policy
对非所有
值,该值优先于并用于设置audit_log_connection_policy
而且audit_log_statement_policy
,如下表所示。如果您还将这些变量中的任何一个设置为其默认值以外的值所有
时,服务器会向错误日志中写入一条消息,表明它们的值正在被覆盖。启动audit_log_policy值 结果audit_log_connection_policy值 结果audit_log_statement_policy值 登录
所有
没有一个
查询
没有一个
所有
没有一个
没有一个
没有一个