关于chrome:基于SLS构建RDS审计合规监控

33次阅读

共计 3946 个字符,预计需要花费 10 分钟才能阅读完成。

简介:数据库是企业业务的数据外围,其平安方面的问题在传统环境中曾经成为透露和被篡改的重要本源。因而,对数据库的操作行为尤其是全量 SQL 执行记录的审计日志,就显得尤为重要。

背景

数据库是企业业务的数据外围,其平安方面的问题在传统环境中曾经成为透露和被篡改的重要本源。因而,对数据库的操作行为尤其是全量 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 by
mysql> 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 操作合规样例 – 实例拜访白名单异样配置

作者:烨陌

原文链接
本文为阿里云原创内容,未经容许不得转载

正文完
 0