背景
数据库是企业业务的数据核心,其安全方面的问题已经成为数据泄漏和被篡改的重要根源。因此,对数据库的操作行为尤其是全量 SQL 执行记录的审计日志,就显得尤为重要。
RDS SQL审计日志记录了对数据库执行的所有操作,这些信息是系统通过网络协议分析所得,对系统CPU消耗极低,不影响SQL执行效率。RDS SQL审计日志包括但不限于如下操作:
- 数据库的登录和退出操作。
- DDL(Data Definition Language)操作:对数据库结构定义的SQL语句,包括CREATE、ALTER DROP、TRUNCATE、COMMENT等。
- DML(Data Manipulation Language)操作:SQL操作语句,包括SELECT、INSERT、UPDATE、DELETE等。
- 其他SQL执行操作,包括任何其他通过SQL执行的控制,例如回滚、控制等。
- SQL执行的延迟、执行结果、影响的行数等信息。
审计日志采集现状
目前,已支持“接入数据-RDS审计”和日志审计服务两种接入方式。
- “接入数据-RDS审计”提供了简单的可视化采集方式。但是以采集目标project/logstore为第一视角,且有region化限时,对实例维度的采集不友好;project或实例较多时操作复杂。
- 日志审计服务提供了自动化的采集能力,但是缺失了交互式的采集以及实例粒度的视图。
鉴于以上的场景上的缺失,我们推出了RDS审计中心,提供可视化的交互式采集能力、自动化采集能力及采集实例对象、存储库的管理视图。
三种采集方式的差异及使用场景
RDS审计中心方式和接入数据-RDS审计方式中的采集配置是互通的。日志审计服务中的RDS SQL审计日志采集配置为独立的采集渠道,不受另外两种采集方式影响。
- RDS审计中心
- 入口:在日志服务控制台首页的日志应用区域,单击RDS审计中心。
- 推荐场景:建议在单账号采集场景下使用。
- 日志审计服务,之前有文章《基于SLS构建RDS审计合规监控》详细介绍了审计场景下的使用。
- 入口:在日志服务控制台首页的日志应用区域,单击日志审计服务。
- 推荐场景:建议在跨账号、跨地域采集场景下使用。
- 入口:在日志服务控制台首页的接入数据区域,单击RDS审计。
- 推荐场景:无,可由RDS审计中心代替。
属性 | 接入数据-RDS审计 | RDS审计中心 | 日志审计服务 |
指定RDS实例粒度 | 支持 | 支持 | 支持 |
灵活指定存储目标库 | 支持 | 支持 | 不支持 |
跨地域采集 | 不支持 | 不支持 | 支持 |
跨账号采集 | 不支持 | 不支持 | 支持 |
自动采集 | 不支持 | 支持 | 支持 |
手动采集 | 支持 | 支持 | 不支持 |
查看采集状态视图 | 不支持 | 支持 | 不支持 |
接下来重点介绍RDS审计中心APP。
RDS审计中心
功能简介
- 采集管理
- 支持集中管理RDS SQL审计日志的采集状态。
- 支持自动采集现有或未来新增RDS实例的SQL审计日志。
- 支持集中管理存储目标库(Project、Logstore)。
- 日志审计
- 提供RDS SQL审计日志的实时存储、查询与分析。
- 提供丰富的可视化报表,支持报表邮件、钉钉群订阅。
- 提供丰富的内置告警规则,支持灵活配置告警策略,及时精准地发送告警消息。
开启前提
开启RDS审计中心必须创建两个角色:
- SLS日志审计服务关联角色AliyunServiceRoleForSLSAudit。开启RDS审计中心时,会自动创建该系统角色。
- 已创建系统角色AliyunLogArchiveRole。
实例采集状态查询
开启后,点击数据接入,进入RDS审计日志接入视图。
- 查看RDS实例信息。例如,实例ID、实例名、地域、数据库类型、标签、SQL洞察状态、采集状态、采集目标库等。
- 查看存储目标库信息。
- 支持查看存储目标库的地域、数据保存时间。
- 支持数据保存时间的调整。
采集配置
手动采集
- 对未开启的实例进行开启采集操作,支持自定义选择存储目标库。
- 对于已开启采集的实例:支持变更存储目标库和关闭采集。
注意:如果后续自动化采集配置了强制性策略,会导致一些操作受限。
自动化采集
在数据接入页签中,单击自动化采集配置。自动化配置提供了图形化的配置界面,有两种节点类型:条件节点、自动化采集配置节点。
- 条件节点
可以使用阿里云账号ID、地域、实例ID、实例名、DB类型、DB版本号、标签等属性设置采集条件。
标准模式下各个条件之间为且关系。高级模式下,您可以灵活组合与嵌套条件。
- 自动化采集配置节点
参数 | 说明 |
自动化采集类型 | 选择自动化采集类型,具体说明如下:
|
地域 | 系统自动默认选择目标RDS实例所在地域,无法修改。 |
Project | 在RDS实例所在地域,自动创建一个名为rds-xxx-${主账号ID}-${地域} 的Project。例如rds-test-12345674523-cn-hangzhou。 |
Logstore | 在名为rds-xxx-${主账号ID}-${地域} 的Project下,自动创建一个名为rds_log 的Logstore。 |
不一致策略 | 当此次设置的存储目标库与当前已生效的存储目标库不一致时,系统将根据如下选择进行判断,具体说明如下:
|
自动化采集举例:
- 绑定
env==prod
标签的RDS MySQL实例的审计日志投递到名为rds-prod-${主账号ID}-${地域}
的Project下的rds_log
Logstore中。 - 绑定
env==test
标签的RDS MySQL实例的审计日志投递到名为rds-test-${主账号ID}-${地域}
的Project下的rds_log
Logstore中。 - 其他RDS实例的审计日志的存储目标库以当前已生效的存储目标库为准。
查询分析
报表
仪表盘 | 说明 |
RDS审计运营中心 | 展示整体访问情况、活跃数据库等信息,包括操作的数据库数量、操作表格数、执行错误、累计插入行数、累计更新行数、累计删除行数、累计查询行数等。 |
RDS审计性能中心 | 展示运维可靠性相关指标,包括SQL执行峰值、查询带宽峰值、插入开端峰值、更新带宽峰值、删除带宽峰值、SQL平均时间、查询SQL平均时间、更新SQL平均时间、删除SQL平均时间等。 |
RDS审计安全中心 | 展示数据库安全相关指标,包括错误数、登录失败次数、大批量删除事件、大批量修改事件数、危险SQL执行次数、错误操作类型分布、出错客户端外网分布、错误最多的客户端等。 |
例如,RDS审计运营中心。可以方便在所有存储目标库之间切换,查看内置报表。
告警监控
RDS审计中心中已内置告警规则、SLS审计内置告警策略、SLS审计内置行动策略、SLS审计内置用户组和SLS审计内置内容模板。
常见的告警如下:
- RDS慢SQL检测
- RDS大批量数据删除告警
- RDS外网访问检测
- RDS查询SQL平均执行时间监控告警
- RDS数据库更新峰值监控告警
- RDS数据库查询峰值监控告警
- RDS实例释放告警
- RDS高频访问IP检测
- RDS更新SQL平均执行时间监控告警
- RDS登录失败次数过多告警
- RDS大批量数据修改事件告警
- RDS危险的SQL执行告警
- RDS SQL执行错误数过多告警
使用者只需要配置简单的用户信息即可在异常发生时接收到告警通知。详细操作,见链接。
- 用户管理中,添加用户信息
- 将用户加到“SLS审计内置用户组”中。
审计场景应用
下面以RDS慢日志监控为例,说明下端到端的审计流程。
- 查看审计性能中心报表,发现最近执行的慢SQL结果。
- 一键开启 “RDS慢SQL检测”告警规则。
- 告警规则上的红色框,可以针对所有的logstore一键开启告警监控。
- project列表上的蓝色框,可以仅开启部分logstore的告警监控。
- 监控到异常并以邮件(或其他形式)形式通知