MySQL 8.0 参考手册  / 第 6 章 安全  / 6.4 安全组件和插件  /  6.4.4 MySQL企业审计

6.4.4 MySQL企业审计

笔记

MySQL Enterprise Audit 是商业产品 MySQL Enterprise Edition 中包含的扩展。要了解有关商业产品的更多信息,请参阅 https://www.mysql.com/products/

MySQL Enterprise Edition 包括 MySQL Enterprise Audit,使用名为 audit_log. MySQL Enterprise Audit 使用开放的 MySQL Audit API 来启用标准的、基于策略的监视和记录在特定 MySQL 服务器上执行的连接和查询活动。MySQL Enterprise Audit 旨在满足 Oracle 审计规范,为受内部和外部监管准则约束的应用程序提供开箱即用、易于使用的审计和合规性解决方案。

安装后,审计插件使 MySQL 服务器能够生成包含服务器活动审计记录的日志文件。日志内容包括客户端何时连接和断开连接,以及它们在连接时执行的操作,例如它们访问了哪些数据库和表。

安装审计插件后(请参阅 第 6.4.4.1 节,“安装 MySQL Enterprise Audit”),它会写入一个审计日志文件。默认情况下,该文件audit.log 在服务器数据目录中命名。要更改文件的名称,请audit_log_file在服务器启动时设置系统变量。

审计日志文件内容未加密。请参阅 第 6.4.4.2 节,“MySQL 企业审计安全注意事项”

审计日志文件以 XML 格式编写,可审计事件编码为<AUDIT_RECORD>元素。要选择文件格式,请 audit_log_format在服务器启动时设置系统变量。有关文件格式和内容的详细信息,请参阅 第 6.4.4.3 节,“审计日志文件格式”

有关控制日志记录方式的更多信息,包括审计日志文件命名和格式选择,请参阅 第 6.4.4.4 节,“配置审计日志记录特征”。要执行审计事件的过滤,请参阅 第 6.4.4.5 节,“审计日志过滤”。有关用于配置审核日志插件的参数的说明,请参阅 审核日志选项和系统变量

如果启用了审计日志插件,则性能模式(请参阅 第 22 章,MySQL 性能模式)对其进行了检测。要识别相关工具,请使用此查询:

SELECT NAME FROM performance_schema.setup_instruments
WHERE NAME LIKE '%/alog/%';

较旧的 MySQL Enterprise Audit 版本的更改

为了更好地与 Oracle Audit Vault 兼容,MySQL 5.6.14 中的审计日志插件进行了一些更改。

实施了一种新的审核日志文件格式。可以使用 audit_log_format系统变量选择旧格式或新格式,该变量的允许值为OLDNEW(默认值OLD)。两种格式的区别如下:

  • <AUDIT_RECORD> 使用属性以旧格式编写的元素中的 信息使用子元素以新格式编写。

  • 新格式在 <AUDIT_RECORD>元素中包含更多信息。每个元素都包含一个RECORD_ID提供唯一标识符的值。该 TIMESTAMP值包括时区信息。查询记录包括HOSTIPOS_LOGIN、 和 USER信息,以及 COMMAND_CLASSSTATUS_CODE值。

<AUDIT_RECORD>旧格式 示例:

<AUDIT_RECORD
 TIMESTAMP="2013-09-15T15:27:27"
 NAME="Query"
 CONNECTION_ID="3"
 STATUS="0"
 SQLTEXT="SELECT 1"
/>

<AUDIT_RECORD>新格式 示例:

<AUDIT_RECORD>
 <TIMESTAMP>2013-09-15T15:27:27 UTC</TIMESTAMP>
 <RECORD_ID>3998_2013-09-15T15:27:27</RECORD_ID>
 <NAME>Query</NAME>
 <CONNECTION_ID>3</CONNECTION_ID>
 <STATUS>0</STATUS>
 <STATUS_CODE>0</STATUS_CODE>
 <USER>root[root] @ localhost [127.0.0.1]</USER>
 <OS_LOGIN></OS_LOGIN>
 <HOST>localhost</HOST>
 <IP>127.0.0.1</IP>
 <COMMAND_CLASS>select</COMMAND_CLASS>
 <SQLTEXT>SELECT 1</SQLTEXT>
</AUDIT_RECORD>

当审计日志插件轮换审计日志文件时,它使用不同的文件名格式。对于名为 的日志文件 audit.log,插件先前将该文件重命名为 . 该插件现在将文件重命名为 以指示它是一个 XML 文件。 audit.log.TIMESTAMPaudit.log.TIMESTAMP.xml

如果更改 的值 audit_log_format,请使用此过程避免将一种格式的日志条目写入包含不同格式条目的现有日志文件:

  1. 停止服务器。

  2. 手动重命名当前审计日志文件。

  3. 使用新值重新启动服务器 audit_log_format。审计日志插件创建一个新的日志文件,其中包含所选格式的日志条目。

用于编写审计插件的 API 也发生了变化。该 mysql_event_general结构有新成员来表示客户端主机名和 IP 地址、命令类和外部用户。有关详细信息,请参阅 编写审计插件