Audit Log

本节我们将启用日志记录以审计数据库活动,然后将审记日志发布到 CloudWatch 以执行实时数据分析:

MariaDB Audit Plugin提供数据库活动的事件日志记录,以帮助客户满足公司合规性要求并排除应用程序问题。

启用Audit Log

Amazon RDS 使用option group来启用和配置管理数据库。Amazon RDS 为每个新的 DB 实例提供一个空的默认option group。我们无法修改此默认option group,但我们创建的任何新选项组都从默认选项组继承其设置。

在本实验的这一步中,我们将创建一个option group,并更新MARIADB_AUDIT_PLUGIN选项名称下的SERVER_AUDIT_FILE_ROTATE_SIZE选项设置。

创建option group

创建一个新的option group:

image-20240705222854313

命名为rdslab-mysql-option-group,输入描述,选择mysql作为引擎,选择8.0作为主引擎版本。选择创建

image-20240705222957961

向option group添加选项

选择rdslab-mysql-option-group并选择Add option

image-20240705223105523

选择option nameMARIADB_AUDIT_PLUGIN。我们有几个选项可供选择 ,输入以下值并选择:

  • SERVER_AUDIT_EVENTS选项设置为CONNECT,QUERY
  • SERVER_AUDIT_INCL_USERS选项设置为admin

image-20240705223313411

image-20240705223341077

Apply immediately设置为yes,然后选择Add option:

image-20240705223354092

添加完成后,能看到多出MARIADB_AUDIT_PLUGIN

image-20240705223510344

将option group应用于 RDS MySQL 实例

要应用选项组,请选择 RDS MySQL 实例rdslab-mysql-instance并选择modify:

image-20240705223638671

滚动到Additional configuration选项,选择rdslab-mysql-option-group option group:

image-20240705223759388

同时开启Audit Log导出到Cloudwatch Logs:

image-20240705224327209

滚动到修改页面的末尾,选择continue。在摘要页面,验证option group并选择Apply immediately,然后选择Modify DB instance:

image-20240705223846270

在 RDS 实例从modifying状态变为Available状态后, 我们就成功在 RDS 实例上启用了Audit log。

分析Audit Log

根据Option group的选项设置,审计插件会记录数据库活动,例如用户登录数据库、针对数据库运行的查询等。

我们将运行一些 SQL 命令并从存储在 Amazon CloudWatch Logs 中的审计日志中调查这些命令。

模拟几次失败的登录:

mysql -h dslab-mysql-instance1.cpayj88cqtvo.us-west-2.rds.amazonaws.com -P 3306 -u admin -prandompassword  # 根据实际替换endpoint

我们应该能看到类似的错误信息。

image-20240705224754622

连接到RDS实例

mysql -h [DB_ENDPOINT] -u$DBUSER -p"$DBPASS"

现在让我们运行一些SQL命令:

create database dbname;
use dbname;
create table tname (id int);
insert into tname values (1);
exit

我们应该看到类似的输出:

image-20240705224836760

查看Amazon CloudWatch Logs中的Audit Log

找到日志组/aws/rds/instance/rdslab-mysql-instance/audit,进入日志流"rdslab-mysql-instance”:

image-20240705225121773

我们应该能看到类似以下格式的日志条目:

失败的连接

成功的连接

创建数据库dbname

使用dbname数据库

创建表tname

插入数据到tname表

image-20240705225239102

Aurora的Audit Log

上面是针对RDS for MySQL来开启audit log,中间需要创建或修改option group。

如果是Aurora MySQL,则不需要通过option group,而是直接通过parameter group

参考: https://repost.aws/zh-Hans/knowledge-center/advanced-audit-aurora-mysql-cloudwatch