一、背景
在数据库RDS创建界面中,点击Addional额外设置之后可以展开日志设置,有四个选项,分别是:
Select the log types to publish to Amazon CloudWatch Logs:
- Audit log
- Error log
- General log
- Slow query log
这几个选项打开后,Cloudwatch会输出General log和Error log,可以看到失败的登录记录,但是无法看到Audit log,也就是无法看到每一条SQL查询、更新级别的日志。
这是由于,RDS日志需要额外打开选项。
如果是RDS MySQL,请参考这里:
https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html
如果是Aurora MySQL,请参考这里:
需要注意的是,RDS MySQL和Aurora之间的区别是RDS MySQL需要通过Option Gourp的配置组启用审计插件,而Aurora不需要这一个步骤。
本文以Aurora为基础进行编写。
二、创建Aurora数据库
本文假设数据库已经创建完成。
三、创建参数组并应用到Aurora
1、新建参数组
进入RDS界面,点击创建参数组。注意,参数组(Parameter Group)和选项组(Options Group)是不同的设定。这里需要进入参数组。
点击新建参数,选择DB Cluster Parameter Group
。请注意参数组分成DB参数组和DB Cluster参数组,这里选择的是Cluster参数组。如下截图。
在参数搜索框中,输入关键字Audit
,可以看到搜索出来多个配置项。找到其中的server_audit_logging
,将其值改为1
。再找到server_audit_events
,将其值改为QUERY
。修改完成后保存参数组。如下截图。
以上修改表示启用Aurora的SQL审计。其中server_audit_events
配置项的各参数含义是:
- CONNECT – 记录成功和失败的连接以及断开连接。此事件包括用户信息。
- QUERY – 以纯文本记录所有查询,包括由于语法或权限错误而失败的查询。
- QUERY_DCL – 类似于 QUERY 事件,不过仅返回数据控制语言 (DCL) 查询 (GRANT、REVOKE 等)。
- QUERY_DDL – 类似于 QUERY 事件,不过仅返回数据定义语言 (DDL) 查询 (CREATE、ALTER 等)。
- QUERY_DML – 类似于 QUERY 事件,但仅返回数据操作语言 (DML) 查询(INSERT、UPDATE 等,也包括 SELECT)。
- TABLE – 记录受查询执行影响的表。
2、修改参数组
现在为Aurora修改正在使用的参数组。点击Aurora的集群。注意,点击集群和点击单个节点时候,修改按钮会加载出来不同的设置。
在修改配置界面中,将页面向下滚动,找到参数组位置,修改为前一步新创建的参数组。同时,找到下方的审计日志选项,将其打开。如下截图。
修改完成后,保存退出。
当提示是否等待下一个维护窗口,还是立刻生效时候,选择立刻生效。
配置完成。
四、查看SQL审计
1、通过CloudWatch查看日志
进入Cloudwatch服务。从左侧选择Logs
菜单下的Log groups
,在右侧找到对应的Aurora名字,以及Audit日志组。点击进入。如下截图。
在下方的日志组中,先选择要查看的节点,确认是查看写入节点还是只读节点,然后找到时间是最新的一个(文件后缀.0
表示最新),点击查看。如下截图。
由此即可看到审计结果。
2、导出日志
CloudWatch可批量导出日志,也可以持续的流式方式导出日志。
如果需要全量导出,可以进入Log groups
之后,点击右上角的Actions
按钮,找到Export data to Amazon S3
,即可选择要导出的时间,并将日志导出到指定的S3存储桶。如下截图。
如果需要持续的日志导出,可以点击页面中间标签页Subscription Rules
标签页。点击右侧按钮Create
,即可选择多种导出选项。其中可选择导出到托管服务Elastic Search
,也可以选择导出到Kinesis Firehose
将流式数据持续不断的保存到S3存储桶。如下截图。
五、参考文档
参考文档: