MySQL 的 MariaDB 审计插件支持 - Amazon Relational Database Service

MySQL 的 MariaDB 审计插件支持

Amazon RDS 基于开源 MariaDB 审计插件为 MySQL 数据库实例提供审计插件。有关更多信息,请参阅 MySQL Server GitHub 存储库的审计插件

注意

MySQL 的审计插件基于 MariaDB 审计插件。在本文中,我们将其称为 MariaDB 审计插件。

MariaDB 审计插件记录数据库活动,包括用户登录数据库和针对数据库运行的查询等。数据库活动记录存储在日志文件中。

注意

目前,仅以下 RDS for MySQL 版本支持 MariaDB 审计插件:

  • MySQL 8.0.28 及更高的 8.0.x 版本

  • 所有 MySQL 5.7 版本

审计插件选项设置

Amazon RDS 支持 MariaDB 审计插件选项的以下设置。

选项设置 有效值 默认值 描述

SERVER_AUDIT_FILE_PATH

/rdsdbdata/log/audit/

/rdsdbdata/log/audit/

日志文件的位置。日志文件包含 SERVER_AUDIT_EVENTS 中指定的活动记录。有关更多信息,请参阅“查看和列出数据库日志文件”和“MySQL 数据库日志文件”。

SERVER_AUDIT_FILE_ROTATE_SIZE

1–1000000000

1000000

达到该字节大小时,会导致文件轮换。有关更多信息,请参阅“RDS for MySQL 数据库日志概览”。

SERVER_AUDIT_FILE_ROTATIONS

0–100

9

server_audit_output_type=file 时要保存的日志轮换数量。如果设置为 0,则日志文件从不轮换。有关更多信息,请参阅RDS for MySQL 数据库日志概览下载数据库日志文件

SERVER_AUDIT_EVENTS

CONNECT, QUERY, QUERY_DDL, QUERY_DML, QUERY_DML_NO_SELECT, QUERY_DCL

CONNECT, QUERY

要在日志中记录的活动类型。安装 MariaDB 审核插件可自行登录。

  • CONNECT:记录成功和失败的数据库连接以及数据库断开连接。

  • QUERY:记录针对数据库运行的所有查询文本。

  • QUERY_DDL:类似于 QUERY 事件,不过仅返回数据定义语言 (DDL) 查询(CREATEALTER 等)。

  • QUERY_DML:类似于 QUERY 事件,不过仅返回数据操作语言 (DML) 查询(INSERTUPDATE 等,以及 SELECT)。

  • QUERY_DML_NO_SELECT:与 QUERY_DML 事件类似,但不会记录 SELECT 查询。

    QUERY_DML_NO_SELECT 设置仅支持 RDS for MySQL 5.7.34 和更高的 5.7.x 版本,以及 8.0.25 和更高的 8.0.x 版本。

  • QUERY_DCL:类似于 QUERY 事件,不过仅返回数据控制语言 (DCL) 查询 (GRANTREVOKE 等)。

MySQL 不支持 TABLE

SERVER_AUDIT_INCL_USERS

多个逗号分隔值

仅包括指定用户的活动。默认情况下,会记录所有用户的活动。SERVER_AUDIT_INCL_USERSSERVER_AUDIT_EXCL_USERS 是相互排斥的。如果将值添加到 SERVER_AUDIT_INCL_USERS,请确保未向 SERVER_AUDIT_EXCL_USERS 中添加任何值。

SERVER_AUDIT_EXCL_USERS

多个逗号分隔值

排除指定用户的活动。默认情况下,会记录所有用户的活动。SERVER_AUDIT_INCL_USERSSERVER_AUDIT_EXCL_USERS 是相互排斥的。如果将值添加到 SERVER_AUDIT_EXCL_USERS,请确保未向 SERVER_AUDIT_INCL_USERS 中添加任何值。

rdsadmin 用户会每秒查询一次数据库,以检查数据库的运行状况。根据您的其他设置,此活动可能导致您的日志文件大小非常快速地增长。如果您不需要记录此活动,请将 rdsadmin 用户添加到 SERVER_AUDIT_EXCL_USERS 列表。

注意

CONNECT会始终为所有用户记录 活动,即使是该选项设置指定的用户。

SERVER_AUDIT_LOGGING

ON

ON

日志记录处于活动状态。唯一有效值为 ON。Amazon RDS 不支持停用日志记录。如果您要停用日志记录,请删除 MariaDB 审核插件。有关更多信息,请参阅“删除 MariaDB 审核插件”。

SERVER_AUDIT_QUERY_LOG_LIMIT

0–2147483647

1024

记录中查询字符串的长度限制。

添加 MariaDB 审核插件

向数据库实例添加 MariaDB 审核插件的一般过程如下:

  • 创建新的选项组,或者复制或修改现有选项组

  • 向选项组添加选项

  • 将选项组与数据库实例相关联

添加 MariaDB 审核插件后,您无需重新启动数据库实例。一旦选项组处于活动状态,审核便会立即开始。

重要

将 MariaDB 审计插件添加到数据库实例可能会导致中断。我们建议在维护时段或数据库工作负载较低时添加 MariaDB 审计插件。

添加 MariaDB 审核插件
  1. 确定您想要使用的选项组。您可以创建新的选项组,或使用现有选项组。如果您想使用现有选项组,请跳到下一步。否则,请创建自定义数据库选项组。为 Engine(引擎)选择 mysql,并为 Major engine version(主引擎版本)选择 5.78.0。有关更多信息,请参阅 创建选项组

  2. MARIADB_AUDIT_PLUGIN 选项添加到选项组中,然后配置选项设置。有关添加选项的更多信息,请参阅 将选项添加到选项组。有关各项设置的更多信息,请参阅审计插件选项设置

  3. 将选项组应用到新的或现有的数据库实例。

审计日志格式

日志文件表示为 UTF-8 格式的逗号分隔变量 (CSV) 文件。

提示

日志文件条目不按先后顺序排列。要对条目进行排序,请使用时间戳值。要查看最新事件,您可能需要查看所有日志文件。为了更加灵活地对日志数据进行排序和搜索,请启用设置将审计日志上传到 CloudWatch,再使用 CloudWatch 界面进行查看。

若要查看包含更多字段类型和 JSON 格式输出的审计数据,还可以使用数据库活动流功能。有关更多信息,请参阅 使用数据库活动流监控 Amazon RDS

审核日志文件的各行按照指定顺序包含以下逗号分隔的信息:

字段 描述

时间戳

所记录的事件的 YYYYMMDD 后跟 HH:MI:SS(24 小时制)。

serverhost

记录了其事件的实例的名称。

username

已连接用户的用户名。

host

用户发起连接时所在的主机。

connectionid

所记录操作的连接 ID 号。

queryid

查询 ID 号,可用于查找关系表事件和相关查询。对于 TABLE 事件,添加多行。

operation

记录的操作类型。可能值为:CONNECTQUERYREADWRITECREATEALTERRENAMEDROP

database

活动数据库,由 USE 命令设置。

object

对于 QUERY 事件,此值指示数据库执行的查询。对于 TABLE 事件,它指示表名。

retcode

所记录操作的返回代码。

connection_type

与服务器的连接的安全状态。可能的值有:

  • 0:未定义

  • 1:TCP/IP

  • 2:套接字

  • 3:命名管道

  • 4:SSL/TLS

  • 5:共享内存

仅 RDS for MySQL 版本 5.7.34 及更高的 5.7 版本和所有 8.0 版本包含此字段。

查看和下载 MariaDB 审计插件日志

启用 MariaDB 审计插件后,您将以访问其他任何基于文本的日志文件的相同方式来访问日志文件中的结果。审计日志文件位于 /rdsdbdata/log/audit/。有关在控制台中查看日志文件的信息,请参阅 查看和列出数据库日志文件。有关下载日志文件的信息,请参阅 下载数据库日志文件

修改 MariaDB 审计插件设置

启用 MariaDB 审计插件后,您可以修改各项设置。有关如何修改选项设置的更多信息,请参阅 修改选项设置。有关各项设置的更多信息,请参阅审计插件选项设置

删除 MariaDB 审核插件

Amazon RDS 不支持关闭 MariaDB 审核插件中的日志记录。不过,您可以从数据库实例删除插件。在删除 MariaDB 审核插件时,将自动重新启动数据库实例以停止审核。

要从数据库实例中删除 MariaDB 审核插件,请执行以下操作之一:

  • 从 MariaDB 审核插件选项所属的选项组中删除 MariaDB 审核插件选项。此更改会影响使用该选项组的所有数据库实例。有关更多信息,请参阅“从选项组中删除选项

  • 修改数据库实例,并指定不包含插件的其他选项组。此更改会影响单个数据库实例。您可以指定默认 (空) 选项组,或指定其他自定义选项组。有关更多信息,请参阅“修改 Amazon RDS 数据库实例”。