天天看點

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

背景

資料庫是企業業務的資料核心,其安全方面的問題在傳統環境中已經成為洩漏和被篡改的重要根源。是以,對資料庫的操作行為尤其是全量 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洞察。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

雲産品采集管道

單賬号同地域采集場景(隻能将RDS審計日志采集到同地域的日志庫中)

• SLS控制台首頁“接入資料”區域,選擇“RDS 審計”。下文以采集張家口執行個體為例說明。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 因為采集的執行個體位于張家口,是以需要在張家口建立或者選擇已存在的project及logstore。

• 注意:采集的RDS執行個體審計日志僅支援同地域采集。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• “資料源配置”頁,完成RAM授權後可以檢視張家口所有的RDS執行個體資訊,預設日志投遞功能是關閉的。之後可以根據日志采集需求,勾選相應的“開通投遞”按鈕,開啟對應執行個體的日志投遞功能。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 至此就完成了SQL審計日志的采集開啟,跳轉到上述配置的logstore下即可檢視RDS執行個體日志。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

跨地域、跨賬号采集場景

因為雲産品采集管道有隻能将RDS審計日志采集到同地域的日志庫的限制,是以要打破這個限時實作跨賬号跨地域采集,就必須要自建跨域或者跨賬号資料加工任務。

因為自建資料加工任務需要比較複雜的授權,這裡不再詳細介紹。如有需要,詳見:

1、配置自定義角色授權

2、最佳實踐:跨地域傳輸資料

3、最佳實踐:多目标Logstore資料分發 中的“跨賬号分發”部分。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

由此可見,雲産品采集管道僅僅在簡單采集場景下具有便捷采集的優勢,但是在處理跨地域、跨賬号采集時不僅資料同步鍊路較長,而且還需要比較複雜的授權過程;而且當執行個體變更(甚至新的執行個體出現)時,需要手動維護同步鍊路,維護成本極高。而日志審計管道恰恰可以很好的解決跨地域、跨賬号采集,執行個體變更維護成本高的痛點。

日志審計采集管道

日志審計授權

建議使用阿裡雲RAM使用者操作。

• 建立阿裡雲RAM使用者,并賦予該使用者AliyunRAMFullAccess、AliyunLogFullAccess權限,建立AK。

• 登入上述RAM使用者,在SLS控制台選擇“日志審計服務”。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 首次進入需要進行授權才能開啟。這裡輸入第一步建立的AK,并選擇審計日志存儲的中心Project地域即可。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 如果出現如下頁面說明已經授權完成。之後就可以根據采集日志的需要開啟對應的雲産品日志,例如這裡需要采集操作審計(Actiontrail)日志及RDS SQL審計日志。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

配置SQL審計采集

本文重點描述如何開啟RDS SQL審計日志并通過采集政策管理日志采集範圍。SQL審計日志開啟首先需要進行采集政策配置。完整的文法說明詳見采集政策文檔。這裡列出一些常用的政策方案。

• 采集特定區域的執行個體日志。例如:隻采集杭州、上海的執行個體。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 不采集特定标簽的執行個體。例如:給測試執行個體打上type标簽取值test。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 隻采集限定的執行個體日志。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

SQL審計

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

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審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

告警配置

行動政策配置

• 釘釘管道通知

• 下圖樣例:所有告警都發送釘釘通知。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

• 短信/語音管道通知:

• 下圖樣例:當告警級别大于嚴重時,向“SLS審計内置使用者組”發送語音告警。具體的通知人的電話等情況,詳見建立使用者和使用者組。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

告警樣例

接下來,我們用兩個具體的例子來介紹RDS審計告警的使用。

SQL審計樣例--慢SQL審計

開啟告警

• 根據使用者需要設定告警參數。例如,慢SQL檢測門檻值,過濾白名單等。

• 點選開啟按鈕,告警即可開啟。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考
基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

構造異常

• 測試資料集

# 表結構
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,并發起告警通知。

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

RDS操作合規樣例--執行個體通路白名單異常配置

基于SLS建構RDS審計合規監控背景RDS日志審計--采集RDS日志審計--報表RDS日志審計--告警參考

參考

• 日志審計文檔(含使用前需知)

• 日志審計告警文檔(目錄)