10bet网址
MySQL的安全
相关的文档10bet官方网站 下载这个摘录
PDF (Ltr)- 2.3 mb
PDF (A4)- 2.3 mb
HTML下载(TGZ)- 469.0 kb
HTML下载(邮政编码)- 476.7 kb


6.5.10审计日志参考

以下章节提供了MySQL企业审计元素的参考:

要安装审计日志表和函数,请使用第6.5.2节,“安装或卸载MySQL企业审计”.除非安装了这些对象,否则audit_log插件在传统模式下运行。看到第6.5.9节,“遗留模式审计日志过滤”

审计日志表

MySQL企业审计使用的表mysql持久存储过滤器和用户帐户数据的系统数据库。只有具有该数据库权限的用户才能访问这些表。这些表使用InnoDB存储引擎。

如果这些表不见了audit_log插件在传统模式下运行。看到第6.5.9节,“遗留模式审计日志过滤”

audit_log_filter表存储筛选器定义。表中有以下列:

  • 的名字

    过滤器的名字。

  • 过滤器

    与筛选器名称相关联的筛选器定义。定义存储为JSON值。

audit_log_user表存储用户帐户信息。表中有以下列:

  • 用户

    用户名是帐户的一部分。对于一个帐户user1@localhost,用户部分是user1

  • 宿主

    帐户的主机名部分。对于一个帐户user1@localhost,宿主部分是本地主机

  • FILTERNAME

    分配给帐户的筛选器的名称。控件中定义的过滤器与帐户关联audit_log_filter表格

审计日志功能

介绍每个审计日志功能的用途、调用顺序和返回值。有关可以调用这些函数的条件的信息,请参见第6.5.7节,“审计日志过滤”

每个审计日志函数返回一个字符串,表示操作是否成功。好吧表示成功。错误:消息显示失败。

从MySQL 8.0.19开始,审计日志函数将字符串参数转换为utf8mb4字符串返回值是utf8mb4字符串。在MySQL 8.0.19之前,审计日志函数将字符串参数视为二进制字符串(这意味着它们不区分字母),字符串返回值是二进制字符串。

控件中调用审计日志函数mysql的值,二进制字符串结果使用十六进制表示法显示——binary-as-hex.有关该选项的更多信息,请参见mysql—mysql命令行客户端

审计日志功能如下:

  • audit_log_encryption_password_get ([keyring_id])

    此函数从MySQL密匙环中获取审计日志加密密码,必须启用该密码,否则将发生错误。任何钥匙环组件或插件都可以使用;说明,请参阅6.4节,“MySQL密匙环”

    如果没有参数,该函数将以二进制字符串的形式检索当前加密密码。可以提供一个参数来指定要检索的审计日志加密密码。该参数必须是当前密码或存档密码的密匙环ID。

    有关审计日志加密的其他信息,请参见加密审计日志文件

    参数:

    keyring_id:在MySQL 8.0.17中,这个可选参数表示要检索的密码的密匙环ID。允许的最大长度为766字节。如果省略,该函数将检索当前密码。

    在MySQL 8.0.17之前,不允许使用参数。该函数总是检索当前密码。

    返回值:

    成功的密码字符串(最多766字节),或以及失败的错误。

    例子:

    获取当前密码:

    mysql >选择audit_log_encryption_password_get ();+-------------------------------------+ | audit_log_encryption_password_get () | +-------------------------------------+ | 秘密  | +-------------------------------------+

    要按ID检索密码,可以通过查询Performance Schema确定存在哪些审计日志密匙环IDkeyring_keys表:

    mysql> SELECT KEY_ID FROM performance_schemakeyring_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 (密码

    将当前审计日志加密密码设置为该参数,并将密码存储在MySQL密匙环中。在MySQL 8.0.19中,密码存储为utf8mb4字符串。在MySQL 8.0.19之前,密码是以二进制形式存储的。

    如果开启了加密功能,该功能将执行日志文件轮转操作,将当前日志文件重命名,并以密码加密的方式开始新的日志文件。必须启用密匙环,否则会发生错误。任何钥匙环组件或插件都可以使用;说明,请参阅6.4节,“MySQL密匙环”

    有关审计日志加密的其他信息,请参见加密审计日志文件

    参数:

    密码:密码字符串。允许的最大长度为766字节。

    返回值:

    1代表成功,0代表失败。

    例子:

    mysql >选择audit_log_encryption_password_set (密码);+---------------------------------------------+ | audit_log_encryption_password_set (密码) | +---------------------------------------------+ | 1  | +---------------------------------------------+
  • audit_log_filter_flush ()

    调用任何其他过滤函数都会立即影响操作审计日志过滤,并更新审计日志表。如果您直接使用语句修改这些表的内容,例如插入更新,删除,更改不会立即影响过滤。要清除更改并使其可操作,请调用audit_log_filter_flush ()

    警告

    audit_log_filter_flush ()应仅在直接修改审计表后使用,以强制重新加载所有过滤器。否则,应该避免使用此函数。实际上,它是卸载和重新加载的简化版本audit_log插件与卸载插件+安装插件

    audit_log_filter_flush ()影响所有当前会话并将其与以前的筛选器分离。当前会话不再被记录,除非它们断开连接并重新连接,或执行更改用户操作。

    如果此函数失败,将返回一条错误消息,并禁用审计日志,直到下一次成功调用为止audit_log_filter_flush ()

    参数:

    一个也没有。

    返回值:

    指示操作是否成功的字符串。好吧表示成功。错误:消息显示失败。

    例子:

    mysql >选择audit_log_filter_flush ();+--------------------------+ | audit_log_filter_flush () | +--------------------------+ | 好吧  | +--------------------------+
  • audit_log_filter_remove_filter (filter_name

    给定筛选器名称,从当前筛选器集中删除该筛选器。筛选器不存在不是错误。

    如果将删除的筛选器分配给任何用户帐户,那么这些用户将停止筛选(它们将从audit_log_user表)。过滤终止包括这些用户的任何当前会话:他们从过滤器中分离出来,不再登录。

    参数:

    • filter_name:指定筛选器名称的字符串。

    返回值:

    指示操作是否成功的字符串。好吧表示成功。错误:消息显示失败。

    例子:

    mysql >选择audit_log_filter_remove_filter(“SomeFilter”);+----------------------------------------------+ | audit_log_filter_remove_filter(“SomeFilter ') | +----------------------------------------------+ | 好吧  | +----------------------------------------------+
  • audit_log_filter_remove_user (user_name

    给定用户帐户名,使该用户不再分配给筛选器。如果用户没有分配过滤器,则不会出错。对用户当前会话的过滤不受影响。如果有,则使用默认帐户过滤器过滤用户的新连接,否则不记录日志。

    如果名字是,该函数将删除用于没有显式分配过滤器的任何用户帐户的默认帐户过滤器。

    参数:

    • user_name中的字符串形式的用户帐户名user_name@host_name格式,或表示默认帐户。

    返回值:

    指示操作是否成功的字符串。好吧表示成功。错误:消息显示失败。

    例子:

    mysql >选择audit_log_filter_remove_user(“user1@localhost”);+-------------------------------------------------+ | audit_log_filter_remove_user(“user1@localhost ') | +-------------------------------------------------+ | 好吧  | +-------------------------------------------------+
  • audit_log_filter_set_filter (filter_name定义

    给定筛选器名称和定义,将筛选器添加到当前筛选器集。如果筛选器已经存在,并且由任何当前会话使用,那么这些会话将从筛选器分离,不再记录日志。出现这种情况是因为新的筛选器定义有一个新的筛选器ID,与以前的ID不同。

    参数:

    • filter_name:指定筛选器名称的字符串。

    • 定义:一个JSON值指定筛选器定义。

    返回值:

    指示操作是否成功的字符串。好吧表示成功。错误:消息显示失败。

    例子:

    mysql >设置@f = '{“过滤器”:{“日志”:假}}';mysql> SELECT audit_log_filter_set_filter('SomeFilter', @f);+-----------------------------------------------+ | @f audit_log_filter_set_filter(“SomeFilter” ) | +-----------------------------------------------+ | 好吧  | +-----------------------------------------------+
  • audit_log_filter_set_user (user_namefilter_name

    给定用户帐户名称和筛选器名称,将筛选器分配给用户。只能为用户分配一个筛选器,因此如果用户已经分配了筛选器,则会替换该分配。对用户当前会话的过滤不受影响。使用新过滤器过滤新连接。

    作为一个特例,名字表示默认帐户。筛选器用于来自没有显式分配筛选器的任何用户帐户的连接。

    参数:

    • user_name中的字符串形式的用户帐户名user_name@host_name格式,或表示默认帐户。

    • filter_name:指定筛选器名称的字符串。

    返回值:

    指示操作是否成功的字符串。好吧表示成功。错误:消息显示失败。

    例子:

    mysql> SELECT audit_log_filter_set_user('user1@localhost', 'SomeFilter');+------------------------------------------------------------+ | audit_log_filter_set_user(“user1@localhost”、“SomeFilter ') | +------------------------------------------------------------+ | 好吧  | +------------------------------------------------------------+
  • audit_log_read ([参数])

    读取审计日志并返回JSON字符串的结果。如果审计日志格式不一致JSON,则错误发生。

    没有争论或JSON哈希的论点,audit_log_read ()从审计日志中读取事件并返回JSON包含审计事件数组的字符串。哈希参数中的项将影响读取的方式,稍后将对此进行描述。返回数组中的每个元素都是表示为的事件JSON散列,但最后一个元素可能是JSON值指示没有以下事件可读取。

    用一个由JSON值,audit_log_read ()关闭当前读取序列。

    有关审计日志读取过程的其他详细信息,请参见第6.5.6节,“读取审计日志文件”

    参数:

    要获取最近写入事件的书签,请调用audit_log_read_bookmark ()

    参数:参数是可选的。如果省略,函数将从当前位置读取事件。如果存在,参数可以是aJSON值关闭读序列,或aJSON散列。在哈希参数中,项是可选的,可以控制读取操作的各个方面,如开始读取的位置或读取的事件数量。以下项目是重要的(其他项目被忽略):

    • 开始:审计日志中第一个要读取的事件的位置。位置以时间戳的形式给出,读取从发生在时间戳值上或之后的第一个事件开始。的开始项具有这种格式,其中价值是一个文字时间戳值:

      "start": {"timestamp": "价值"}

      开始项在MySQL 8.0.22中是允许的。

    • 时间戳id:审计日志中第一个要读取的事件的位置。的时间戳而且id项目一起组成了唯一标识特定事件的书签。如果一个audit_log_read ()参数包含任何一项,它必须同时包含这两项才能完全指定位置,否则将发生错误。

    • max_array_length:从日志中读取的最大事件数。如果省略此项,则默认读取到日志末尾,或直到读取缓冲区满为止,以先到者为准。

    指定起始位置audit_log_read (),传递一个散列参数,该参数包含开始由…组成的物品或书签时间戳而且id物品。如果一个哈希参数包含两个开始项和书签,则发生错误。

    如果哈希参数没有指定起始位置,则从当前位置继续读取。

    如果时间戳值不包含时间部分,则时间部分为00:00:00假定。

    返回值:

    如果调用成功,返回值为JSON包含审计事件数组的字符串,或JSON值,如果该参数作为关闭读取序列的参数传递。如果调用失败,返回值为出现错误。

    例子:

    mysql >选择audit_log_read (audit_log_read_bookmark ());+-----------------------------------------------------------------------+ | audit_log_read (audit_log_read_bookmark ()) | +-----------------------------------------------------------------------+ | [ {" 时间戳”:“2020-05-18 22:41:24”、“id”:0,“类”:“连接”,…| +-----------------------------------------------------------------------+ mysql >选择audit_log_read(“空”);+------------------------+ | audit_log_read(“空 ') | +------------------------+ | 零  | +------------------------+

    注:

    在MySQL 8.0.19之前,字符串返回值是二进制的JSON字符串。有关将此类值转换为非二进制字符串的信息,请参见第6.5.6节,“读取审计日志文件”

  • audit_log_read_bookmark ()

    返回一个JSON表示最近写入的审计日志事件的书签的字符串。如果审计日志格式不一致JSON,则错误发生。

    书签是一个JSON散列和时间戳而且id唯一标识事件在审计日志中的位置的项。它适合传递给audit_log_read ()指示该函数开始读取的位置。

    有关审计日志读取过程的其他详细信息,请参见第6.5.6节,“读取审计日志文件”

    参数:

    一个也没有。

    返回值:

    一个JSON包含成功书签的字符串,或以及失败的错误。

    例子:

    mysql >选择audit_log_read_bookmark ();+-------------------------------------------------+ | audit_log_read_bookmark () | +-------------------------------------------------+ | { " 时间戳”:“2019-10-03 21:03:44”、“id”:0  } | +-------------------------------------------------+

    注:

    在MySQL 8.0.19之前,字符串返回值是二进制的JSON字符串。有关将此类值转换为非二进制字符串的信息,请参见第6.5.6节,“读取审计日志文件”

审计日志选项和变量引用

表6.28审计日志选项和变量参考

的名字 Cmd-Line 选择文件 系统无功 状态变量 Var范围 动态
审计日志 是的 是的
audit_log_buffer_size 是的 是的 是的 全球 没有
audit_log_compression 是的 是的 是的 全球 没有
audit_log_connection_policy 是的 是的 是的 全球 是的
audit_log_current_session 是的 这两个 没有
Audit_log_current_size 是的 全球 没有
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_format 是的 是的 是的 全球 没有
audit_log_include_accounts 是的 是的 是的 全球 是的
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企业审计操作的命令选项和系统变量。如果在启动时指定的值不正确,则audit_log插件可能无法正确初始化,服务器无法加载它。在这种情况下,服务器还可能为其他审计日志设置生成错误消息,因为它无法识别它们。

要配置审计日志插件的激活,使用这个选项:

如果审计日志插件被启用,它会暴露几个系统变量来控制日志:

mysql>显示audit_log%+-----------------------------+--------------+ | Variable_name |值  | +-----------------------------+--------------+ | audit_log_buffer_size | 1048576 | | audit_log_connection_policy所有| | | audit_log_current_session了| | | audit_log_exclude_accounts | | | audit_log_file | audit.log | | audit_log_filter_id | 0 | | audit_log_flush了| | | audit_log_format新| | | audit_log_include_accounts | | | audit_log_policy所有| | | audit_log_rotate_on_size | 0 | | audit_log_statement_policy |所有| | audit_log_strategy |异步的  | +-----------------------------+--------------+

您可以在服务器启动时设置这些变量中的任何一个,在运行时设置其中一些。这些仅用于遗留模式审计日志过滤的日志将被记录下来。

  • 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 =值
    系统变量 audit_log_compression
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 枚举
    默认值 没有一个
    有效值

    没有一个

    GZIP

    审计日志文件的压缩类型。允许的值没有一个(没有压缩;默认的),GZIP(GNU Zip压缩)。有关更多信息,请参见压缩审计日志文件

  • audit_log_connection_policy

    命令行格式 ——audit-log-connection-policy =值
    系统变量 audit_log_connection_policy
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 枚举
    默认值 所有
    有效值

    所有

    错误

    没有一个

    请注意

    此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).

    控制审计日志插件如何将连接事件写入其日志文件的策略。下表显示了允许的值。

    价值 描述
    所有 记录所有连接事件
    错误 只记录失败的连接事件
    没有一个 不记录连接事件
    请注意

    在服务器启动时,给出的任何显式值audit_log_connection_policy如果audit_log_policy也指定了,如第6.5.5节,“配置审计日志记录特性”

  • audit_log_current_session

    系统变量 audit_log_current_session
    范围 全球、会话
    动态 没有
    SET_VAR提示应用 没有
    类型 布尔
    默认值 取决于过滤策略

    是否为当前会话启用了审计日志记录。该变量的会话值是只读的。属性的值在会话开始时设置audit_log_include_accounts而且audit_log_exclude_accounts系统变量。审计日志插件使用会话值来决定是否对会话的事件进行审计。(有一个全局值,但插件不使用它。)

  • audit_log_encryption

    命令行格式 ——audit-log-encryption =值
    系统变量 audit_log_encryption
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 枚举
    默认值 没有一个
    有效值

    没有一个

    AES

    审计日志文件的加密类型。允许的值没有一个(没有加密;默认的),AES(aes - 256 - cbc密码加密)。有关更多信息,请参见加密审计日志文件

  • audit_log_exclude_accounts

    命令行格式 ——audit-log-exclude-accounts =值
    系统变量 audit_log_exclude_accounts
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串
    默认值
    请注意

    此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).

    不应记录其事件的帐户。值应该是或包含一个或多个以逗号分隔的帐户名称列表的字符串。有关更多信息,请参见第6.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.jsonJSON格式)。

    的值audit_log_file是一个相对路径名,插件解释它相对于数据目录。如果该值是一个完整的路径名,插件将使用该值。如果希望在单独的文件系统或目录上定位审计文件,那么完整路径名称可能会很有用。出于安全考虑,请将审计日志文件写入一个只有MySQL服务器和有正当理由查看日志的用户才能访问的目录。

    有关审计日志插件如何解释audit_log_file值和在插件初始化和终止时发生的文件重命名规则,参见审计日志文件命名约定

    审计日志插件使用包含审计日志文件的目录(由audit_log_file值)作为搜索可读审计日志文件的位置。从这些日志文件和当前文件中,插件构造了一个审计日志书签和读取函数使用的日志列表。看到第6.5.6节,“读取审计日志文件”

  • audit_log_filter_id

    系统变量 audit_log_filter_id
    范围 全球、会话
    动态 没有
    SET_VAR提示应用 没有
    类型 整数

    此变量的会话值指示当前会话内部维护的审计筛选器ID。值为0意味着会话没有分配过滤器。

  • audit_log_flush

    系统变量 audit_log_flush
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    如果audit_log_rotate_on_size为0时,禁用自动审计日志文件旋转,只有手动执行时才会发生旋转。在这种情况下,是启用audit_log_flush通过将其设置为1或导致审计日志插件关闭并重新打开其日志文件以刷新它。(变量值保留因此,在再次启用它执行另一次刷新之前,不需要显式禁用它。)有关更多信息,请参见第6.5.5节,“配置审计日志记录特性”

  • audit_log_format

    命令行格式 ——audit-log-format =值
    系统变量 audit_log_format
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 枚举
    默认值
    有效值

    JSON

    审计日志文件格式。允许的值(老式XML),(新型XML;默认),JSON.每种格式的详细说明请参见第6.5.4节,“审计日志文件格式”

    请注意

    有关更改日志格式时要考虑的问题的信息,请参见选择审计日志文件格式

  • audit_log_format_unix_timestamp

    命令行格式 ——audit-log-format-unix-timestamp[={|在}]
    介绍了 8.0.26
    系统变量 audit_log_format_unix_timestamp
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 布尔
    默认值

    此变量仅适用于json格式的审计日志输出。当为真时,启用此变量将使每个日志文件记录包含一个时间字段。该字段值是一个整数,表示UNIX时间戳值,表示审计事件产生的日期和时间。

    在运行时更改此变量的值将导致日志文件旋转,因此,对于给定的json格式的日志文件,文件中的所有记录要么包含,要么不包含时间字段。

    的运行时值audit_log_format_unix_timestamp要求AUDIT_ADMIN特权,除了SYSTEM_VARIABLES_ADMIN特权(或已弃用的超级特权)通常需要设置一个全局系统变量运行时值。

  • audit_log_include_accounts

    命令行格式 ——audit-log-include-accounts =值
    系统变量 audit_log_include_accounts
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 字符串
    默认值
    请注意

    此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).

    应该记录事件的帐户。值应该是或包含一个或多个以逗号分隔的帐户名称列表的字符串。有关更多信息,请参见第6.5.7节,“审计日志过滤”

    修改audit_log_include_accounts只影响修改后创建的连接,不影响已存在的连接。

  • audit_log_max_size

    命令行格式 ——audit-log-max-size = #
    介绍了 8.0.26
    系统变量 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_sizeaudit_log_max_size,audit_log_prune_seconds结合。有关详细信息,请参见审计日志文件空间管理

  • audit_log_password_history_keep_days

    命令行格式 ——audit-log-password-history-keep-days = #
    介绍了 8.0.17
    系统变量 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_password_history_keep_days确定要删除的密码:

    • 如果该值为0,则插件不会删除密码。

    • 如果值是N> 0,插件删除密码超过N天。

    请注意

    注意不要使读取归档加密日志文件仍然需要的旧密码过期。

    如果您通常禁用密码过期功能(也就是说,audit_log_password_history_keep_days值为0),则可以执行按需清理操作,临时为变量赋值大于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特权(或已弃用的超级特权)通常需要设置一个全局系统变量运行时值。

  • audit_log_policy

    命令行格式 ——audit-log-policy =值
    系统变量 audit_log_policy
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 枚举
    默认值 所有
    有效值

    所有

    登录

    查询

    没有一个

    请注意

    此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).

    控制审计日志插件如何将事件写入其日志文件的策略。下表显示了允许的值。

    价值 描述
    所有 记录所有事件
    登录 只记录登录事件
    查询 仅记录查询事件
    没有一个 不记录任何内容(禁用审核流)

    audit_log_policy只能在服务器启动时设置。在运行时,它是一个只读变量。另外两个系统变量,audit_log_connection_policy而且audit_log_statement_policy,提供对日志记录策略的更精细的控制,可以在启动时或运行时设置。如果你使用audit_log_policy在启动时,服务器使用它的值来设置这些变量,而不是其他两个变量。有关策略变量及其交互的更多信息,请参见第6.5.5节,“配置审计日志记录特性”

  • audit_log_prune_seconds

    命令行格式 ——audit-log-prune-seconds = #
    介绍了 8.0.24
    系统变量 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_sizeaudit_log_max_size,audit_log_prune_seconds结合。有关详细信息,请参见审计日志文件空间管理

  • audit_log_read_buffer_size

    命令行格式 ——audit-log-read-buffer-size = #
    系统变量 audit_log_read_buffer_size
    范围(≥8.0.12) 全球、会话
    范围(8.0.11) 全球
    动态(≥8.0.12) 是的
    动态(8.0.11) 没有
    SET_VAR提示应用 没有
    类型 整数
    默认值(≥8.0.12) 32768
    默认值(8.0.11) 1048576
    最小值(≥8.0.12) 32768
    最小值(8.0.11) 1024
    最大值 4194304

    用于从审计日志文件读取的缓冲区大小,以字节为单位。的audit_log_read ()函数读取的字节数不超过这个数。仅JSON日志格式支持日志文件读取。有关更多信息,请参见第6.5.6节,“读取审计日志文件”

    在MySQL 8.0.12中,这个变量的默认值是32KB,可以在运行时设置。每个客户端应该将其会话值设置为audit_log_read_buffer_size适合于它的使用audit_log_read ().在MySQL 8.0.12之前,audit_log_read_buffer_size默认值为1MB,影响所有客户端,只有在服务器启动时才能更改。

  • 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 =值
    系统变量 audit_log_statement_policy
    范围 全球
    动态 是的
    SET_VAR提示应用 没有
    类型 枚举
    默认值 所有
    有效值

    所有

    错误

    没有一个

    请注意

    此变量仅适用于遗留模式审计日志筛选(请参见第6.5.9节,“遗留模式审计日志过滤”).

    控制审计日志插件如何将语句事件写入日志文件的策略。下表显示了允许的值。

    价值 描述
    所有 记录所有语句事件
    错误 只记录失败的语句事件
    没有一个 不记录语句事件
    请注意

    在服务器启动时,给出的任何显式值audit_log_statement_policy如果audit_log_policy也指定了,如第6.5.5节,“配置审计日志记录特性”

  • audit_log_strategy

    命令行格式 ——audit-log-strategy =值
    系统变量 audit_log_strategy
    范围 全球
    动态 没有
    SET_VAR提示应用 没有
    类型 枚举
    默认值 异步
    有效值

    异步

    性能

    SEMISYNCHRONOUS

    同步

    审计日志插件使用的日志记录方法。这些策略值是允许的:

    • 异步:异步日志。等待输出缓冲区中的空间。

    • 性能:异步日志。删除输出缓冲区中空间不足的请求。

    • SEMISYNCHRONOUS:日志同步。操作系统允许缓存。

    • 同步:日志同步。调用同步()每个请求之后。

审计日志状态变量

如果启用了审计日志插件,它将公开几个提供操作信息的状态变量。这些变量可用于遗留模式审计过滤和JSON模式审计过滤。