概述
背景
数据库是企业业务的数据核心,对数据库的操作行为尤其是所有SQL执行的行为进行记录并审计的日志,就显得尤为重要。但围绕数据库的安全问题却日益严重。今年2月,国内某人脸识别公司数据库泄露,造成250万人个人信息泄露。去年8月,某酒店集团的1.3亿条用户以及2.4亿条开房记录泄露。
另一方面,数据库SQL执行日志也提供了性能、执行结果以及归类等信息,对于排查错误、线上性能优化支持起着关键作用。
阿里云关系数据库RDS的SQL执行日志已经与日志服务打通(目前支持MySQL类型),提供准实时的SQL执行分析功能,并提供内置可深钻的报表、支持异常报警与生态对接能力等。
完备的SQL执行日志
SQL执行日志包括了对数据库进行的所有SQL操作,RDS提供的SQL执行日志,通过网络监听的方式收集,对实际执行几乎没有性能的影响,包括但不限于如下类型的SQL执行以及信息提取:
- 数据库的登入、登出
- DDL(Data Definition Language):基于SQL的对数据库结构定义的SQL,例如CREATE、ALTER DROP、TRUNCATE、COMMENT等
- DML(Data Manipulation Language):SQL操作语句,包括SELECT、INSERT、UPDATE、DELETE等
- 其他SQL执行,包括任何其他通过SQL执行的控制,例如回滚、控制等
- 失败的SQL执行也会被记录
- 对SQL执行的延迟、执行结果、影响的行数等信息的提取
关于阿里云日志服务
阿里云的日志服务(log service)是针对日志类数据的一站式服务,无需开发就能快捷完成海量日志数据的采集、消费、投递以及查询分析等功能,提升运维、运营效率。日志服务主要包括 实时采集与消费、数据投递、查询与实时分析 等功能,适用于从实时监控到数据仓库的各种开发、运维、运营与安全场景:
功能优势
将阿里云RDS的实时SQL执行投递到日志服务中有如下价值与优势:
- 简单:轻松配置,即可准实时采集SQL执行日志导入日志服务。
- 可靠:对现有数据库支持无性能影响,数据准实时接入,分钟级别延迟。
- 信息充分:除了执行的SQL之外,也包括数据库登录、失败的数据执行、延迟、影响结果等,对数据库执行状况、性能、潜在安全问题了如指掌,并可准实时挖掘细节。
- 强大:依托日志服务,提供实时日志分析,并提供开箱机用的报表中心,且支持定制等。
- 灵活:支持基于特定指标,支持定制准实时监测、报警、报表订阅,确保关键业务异常及时响应。可对接其他生态如流计算、云存储、可视化方案,进一步挖掘数据价值。或使用日志服务机器学习、自定义报表、数据加工等一站式服务。
- 成本优势:支持任意时间的存储,以便合规、溯源、备案等。每1000万条SQL执行日志存储一个月,每天只需2毛钱左右。
适用客户
- 合规:对SQL执行日志存储有更长存储合规需求(例如半年/1年)的大型企业与机构,如金融公司、政府类机构等。
- 高级运维:需要对数据库状况做实时监测,并对业务上出现的性能、可靠、稳定性等异常问题能够进行快速排错的客户,需要使用日志服务的实时的交互式的统计、查询分析和报警功能,如互联网服务、金融等企业。
- 安全:需要对数据库安全进行审计,辅助数据安全防护和事后排查的公司,需要使用日志服务的实时查询分析功能,如金融、证券、电商、游戏等公司。
- 行为分析:需要对数据库操作做行为分析,作进一步性能、功能、体验调优的参考和验证,除了统计查询外,也需要对接外部系统做进一步深度分析的公司。
前提与配置
前提与限制
- 开通日志服务。
- 开通RDS服务,购买或已经有一个支持SQL审计/洞察的MySQL实例。
- 目前支持自动投递到日志服务的RDS类型如下:
限制 | 描述 | 备注 |
---|---|---|
类型 | MySQL | 其他类型计划中 |
地域 | 北京 上海 杭州 深圳 香港 青岛 | 其他地域陆续开放中 |
版本 | 5.5、5.6、5.7、8.0 | 8.0 beta中 |
系列 | 高可用版、金融版 | 基础版本不支持 |
存储类型 | 本地SSD | SSD云盘不支持 |
SQL审计/洞察状态 | 未开启,或已经开启标准版本 | 控制台会帮用户自动开启,注意:开启使用版本的SQL审计目前会导致控制台开通投递失败 |
- 目前仅支持投递同一个地域下的日志服务项目(例如,北京的RDS实例,只能投递到北京的日志服务日志库中)
- 请勿修改默认的仪表盘配置,默认仪表盘会随着功能升级自动更新。参考日志服务手册,从默认仪表盘中复制一个仪表盘并修改。
如何配置
- 登录日志服务控制台,准备或构建一个与源RDS所处同一个地域的日志服务项目,并在其中准备或构建一个日志库(请选择好正确的存储时间,如180天等)
- 在日志库列表中选择【数据接入向导】,选择【RDS】
在控制台交互中配置期望的RDS MySQL数据库接入。
- 注意: 如果您没看到对应的MySQL实例,可能是因为不符合前提条件,请参考上条列表。
- 注意: 开启投递时需要开启标准版本RDS的审计日志功能。如果您已经开启了试用版本的SQL审计,控制台会开启失败。
用户场景
1. 自由交互式分析SQL执行
准实时数据库访问异常排查与问题分析,读写延时,访问客户端区域分布等
也支持标准SQL92语法,并融合多种扩展分析函数,参考查询分析日志。
详细日志字段
字段名 | 名称 | 例子 | 备注 |
---|---|---|---|
__topic__ | 主题 | 固定为rds_audit_log | |
instance_id | 实例ID | rm-abcdefg | |
check_rows | 扫描的行数 | 0 | |
db | 数据库名 | my_db | |
fail | 是否出错 | 0 | 0-成功,1-失败 |
client_ip | 客户端IP | 1.2.3.4 | |
latency | 延迟(微秒) | 15 | |
origin_time | 操作时间(微秒) | 1525671499014609 | |
return_rows | 返回行数 | 123 | |
sql | 执行的SQL语句 | SELECT * from tb_abc | |
thread_id | 线程ID | 17171330 | |
user | 数据库用户 | spotuserw | |
update_rows | 更新行数 | 0 |
2. 安全分析
重要表格、异常删除、SQL攻击以及SQL注入等一目了然
也可以在日志查询分析的结果上,支持自定义SQL执行审计与告警通知,以便第一时间处理,日志服务支持多种告警模式(例如钉钉、短信等),并支持自定义告警内容模板:
3. 整体访问监控程度
整体访问监控程度,运维可靠性指标一目了然,并可以参考,构建自己的仪表大盘。
4.运营分析
运营分析,活跃数据库与表格,关键数据添加修改删除动向**
进一步参考
后续我们会进一步围绕RDS执行日志,做更多最佳实践介绍。可以扫码加入官方钉钉群 (11775223)获得实时更新与阿里云工程师的及时直接的支持:
版本