共计 4222 个字符,预计需要花费 11 分钟才能阅读完成。
今天给大家介绍一下怎么基于 SLS 构建 RDS 审计合规监控。文章的内容丸趣 TV 小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着丸趣 TV 小编的思路一起来阅读吧。
背景
数据库是企业业务的数据核心,其安全方面的问题在传统环境中已经成为泄漏和被篡改的重要根源。因此,对数据库的操作行为尤其是全量 SQL 执行记录的审计日志,就显得尤为重要。
SLS 联合 RDS 推出 RDS SQL 审计功能,将 RDS SQL 审计日志实时投递到 SLS 中;SLS 提供实时查询、可视化分析、告警等功能。
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 执行的延迟、执行结果、影响的行数等信息。
此外,SLS 还针对 RDS 的操作合规进行监控,及时发现 RDS 的配置异常,确保数据库安全。
RDS 日志审计 – 采集
目前 RDS SQL 审计日志采集到 SLS 有两种方式:
• 云产品采集渠道
优点:少量且同地域实例采集场景下配置简单。
缺点:不支持跨地域、跨账号;不支持实例动态发现。如果需要跨地域跨账号,需要自建数据加工任务。
• 日志审计渠道
优点:
支持跨账号、跨地域中心化采集,便于审计报表分析。
支持实例发现,一键开启自动采集;并支持通过采集策略控制采集范围。
缺点:
需要 AK 授权或手动授权来开启日志审计 APP。
会自动开启采集实例的 SQL 洞察功能,且不支持自动关闭。如果需要关闭 SQL 洞察,需要首先整体关闭日志审计 RDS 采集功能或者通过采集策略控制实例不采集,然后到 RDS 控制台逐个实例关闭 SQL 洞察。
云产品采集渠道单账号同地域采集场景(只能将 RDS 审计日志采集到同地域的日志库中)
• SLS 控制台首页“接入数据”区域,选择“RDS 审计”。下文以采集张家口实例为例说明。
• 因为采集的实例位于张家口,所以需要在张家口新建或者选择已存在的 project 及 logstore。
• 注意:采集的 RDS 实例审计日志仅支持同地域采集。
•“数据源配置”页,完成 RAM 授权后可以查看张家口所有的 RDS 实例信息,默认日志投递功能是关闭的。之后可以根据日志采集需求,勾选相应的“开通投递”按钮,开启对应实例的日志投递功能。
• 至此就完成了 SQL 审计日志的采集开启,跳转到上述配置的 logstore 下即可查看 RDS 实例日志。
跨地域、跨账号采集场景
因为云产品采集渠道有只能将 RDS 审计日志采集到同地域的日志库的限制,所以要打破这个限时实现跨账号跨地域采集,就必须要自建跨域或者跨账号数据加工任务。
因为自建数据加工任务需要比较复杂的授权,这里不再详细介绍。如有需要,详见:
1、配置自定义角色授权
2、最佳实践:跨地域传输数据
3、最佳实践:多目标 Logstore 数据分发 中的“跨账号分发”部分。
由此可见,云产品采集渠道仅仅在简单采集场景下具有便捷采集的优势,但是在处理跨地域、跨账号采集时不仅数据同步链路较长,而且还需要比较复杂的授权过程;而且当实例变更(甚至新的实例出现)时,需要手动维护同步链路,维护成本极高。而日志审计渠道恰恰可以很好的解决跨地域、跨账号采集,实例变更维护成本高的痛点。
日志审计采集渠道日志审计授权
建议使用阿里云 RAM 用户操作。
• 创建阿里云 RAM 用户,并赋予该用户 AliyunRAMFullAccess、AliyunLogFullAccess 权限,创建 AK。
• 登录上述 RAM 用户,在 SLS 控制台选择“日志审计服务”。
• 首次进入需要进行授权才能开启。这里输入第一步创建的 AK,并选择审计日志存储的中心 Project 地域即可。
• 如果出现如下页面说明已经授权完成。之后就可以根据采集日志的需要开启对应的云产品日志,例如这里需要采集操作审计(Actiontrail)日志及 RDS SQL 审计日志。
配置 SQL 审计采集
本文重点描述如何开启 RDS SQL 审计日志并通过采集策略管理日志采集范围。SQL 审计日志开启首先需要进行采集策略配置。完整的语法说明详见采集策略文档。这里列出一些常用的策略方案。
• 采集特定区域的实例日志。例如:只采集杭州、上海的实例。
• 不采集特定标签的实例。例如:给测试实例打上 type 标签取值 test。
• 只采集限定的实例日志。
SQL 审计
RDS 日志审计 – 报表
基于 SLS 的 SQL 审计日志提供了 3 张审计报表:
• RDS 审计中心:主要展现了所有数据库的 SQL 执行指标、分布、趋势等信息。例如:PV、UV、操作数据库 / 数据表等的统计。
• RDS 审计安全中心:主要展现了所有数据库的失败 SQL 和危险 SQL,以及大批量删除或修改事件的详情、分布和趋势等。
• RDS 审计性能中心:主要展现了所有数据库的具体性能指标,例如 SQL 执行峰值、SQL 执行的平均时间、慢 SQL 的具体分布与来源等。
RDS 日志审计 – 告警
SLS 日志审计新发布了内置告警规则,其中针对于 RDS SQL 审计提供了 19 条内置规则(后续还会不断扩展)。
规则查看
通过 SLS 首页 - 日志审计服务 - 控制台左侧审计告警 – 规则配置 / 告警规则,就可以进入审计告警规则配置页面。规则主要分为两类:
• SQL 审计类规则(RDS 安全):主要针对 SQL 的执行异常进行监控。例如,慢 SQL、或批量删除等。
• 前提:通过日志审计 APP 开通 RDS SQL 审计日志采集。
• RDS 操作合规规则:主要是基于 CIS 规则,对 RDS 的操作配置进行监控。
• 前提:通过日志审计 APP 开通 Actiontrail 操作日志采集。
告警配置
行动策略配置
• 钉钉渠道通知
• 下图样例:所有告警都发送钉钉通知。
• 短信 / 语音渠道通知:
• 下图样例:当告警级别大于严重时,向“SLS 审计内置用户组”发送语音告警。具体的通知人的电话等情况,详见创建用户和用户组。
告警样例
接下来,我们用两个具体的例子来介绍 RDS 审计告警的使用。
SQL 审计样例 – 慢 SQL 审计
开启告警
• 根据用户需要设置告警参数。例如,慢 SQL 检测阈值,过滤白名单等。
• 点击开启按钮,告警即可开启。
构造异常
• 测试数据集
# 表结构 mysql desc test;
+-----------------+------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment || title | varchar(100) | NO | MUL | NULL | |
| author | varchar(40) | NO | | NULL | || submission_date | date | YES | MUL | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
4 rows in set (0.04 sec)
# 数据
mysql select * from test limit 5;
+----+--------+---------+-----------------+
| id | title | author | submission_date |+----+--------+---------+-----------------+| 1 | title1 | author1 | 2021-01-12 |
| 2 | title1 | author1 | 2021-01-12 || 3 | title1 | author1 | 2021-01-12 |
| 4 | title1 | author1 | 2021-01-12 || 5 | title1 | author1 | 2021-01-12 |
+----+--------+---------+-----------------+
• 慢 SQL
# 使用索引字段 group bymysql select title, count(1) as cnt from test where submission_date= 2021-01-12 group by title;
+--------+-------+
| title | cnt |
+--------+-------+
| title1 | 59392 |
| title2 | 8448 |
+--------+-------+2 rows in set (0.06 sec)
# 索引字段经过运算后 group by,使得索引失效。mysql select title, count(1) as cnt from test where day(submission_date)=12 group by title;
+--------+-------+
| title | cnt |
+--------+-------+
| title1 | 59392 |
| title2 | 8448 |
+--------+-------+2 rows in set (0.58 sec)
• 告警监控到慢 SQL,并发起告警通知。
RDS 操作合规样例 – 实例访问白名单异常配置
以上就是怎么基于 SLS 构建 RDS 审计合规监控的全部内容了,更多与怎么基于 SLS 构建 RDS 审计合规监控相关的内容可以搜索丸趣 TV 之前的文章或者浏览下面的文章进行学习哈!相信丸趣 TV 小编会给大家增添更多知识, 希望大家能够支持一下丸趣 TV!