本节我们将启用日志记录以审计数据库活动,然后将审记日志发布到 CloudWatch 以执行实时数据分析:
MariaDB Audit Plugin
提供数据库活动的事件日志记录,以帮助客户满足公司合规性要求并排除应用程序问题。
Amazon RDS 使用option group
来启用和配置管理数据库。Amazon RDS 为每个新的 DB 实例提供一个空的默认option group。我们无法修改此默认option group,但我们创建的任何新选项组都从默认选项组继承其设置。
在本实验的这一步中,我们将创建一个option group,并更新MARIADB_AUDIT_PLUGIN选项名称下的SERVER_AUDIT_FILE_ROTATE_SIZE选项设置。
创建一个新的option group:
命名为rdslab-mysql-option-group,输入描述,选择mysql作为引擎,选择8.0作为主引擎版本。选择创建。
选择rdslab-mysql-option-group并选择Add option。
选择option name为MARIADB_AUDIT_PLUGIN。我们有几个选项可供选择 ,输入以下值并选择:
CONNECT,QUERY
admin
将Apply immediately设置为yes,然后选择Add option:
添加完成后,能看到多出MARIADB_AUDIT_PLUGIN
:
要应用选项组,请选择 RDS MySQL 实例rdslab-mysql-instance并选择modify:
滚动到Additional configuration选项,选择rdslab-mysql-option-group option group:
同时开启Audit Log导出到Cloudwatch Logs:
滚动到修改页面的末尾,选择continue。在摘要页面,验证option group并选择Apply immediately,然后选择Modify DB instance:
在 RDS 实例从modifying状态变为Available状态后, 我们就成功在 RDS 实例上启用了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
我们应该能看到类似的错误信息。
连接到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
我们应该看到类似的输出:
找到日志组/aws/rds/instance/rdslab-mysql-instance/audit
,进入日志流"rdslab-mysql-instance”:
我们应该能看到类似以下格式的日志条目:
失败的连接
成功的连接
创建数据库dbname
使用dbname数据库
创建表tname
插入数据到tname表
上面是针对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