雲端狀態 查詢語言是一種自由文本語法,提供了進階的功能來正在過濾檢查,允許比簡單過濾器更強大的複雜查詢。
CQL 允許您按欄位/值對進行搜索。語法允許您使用邏輯運算符、括號和引號來指定考慮條件的關係和順序。
邏輯運算子
欄位/值搜尋條件的基本語法是 [欄位]:[值],其中冒號字符 (:) 指定給定欄位必須等於指定值,才能在搜尋結果中返回檢查。
邏輯運算子允許您指定多個條件並指示它們之間的關係。CQL 將支援以下明確的邏輯運算子:
Operator name
|
Operator
|
Description
|
Example
|
等於
|
: |
如果右側等於左側,即欄位等於值
|
服務 : EC2 |
不等於
|
:- |
如果右側不等於左側,即欄位不等於值時匹配
|
服務 :- IAM |
和
|
AND |
如果檢查包含兩個條件則匹配
|
狀態:成功 且 風險等級:高 |
或
|
或 |
如果檢查包含任一條件則匹配
|
合規性 : MAS OR 合規性 : HITRUST |
括號
|
() |
括號用來表示對正常運算順序(優先規則)的修改。在像
(compliance : MAS OR compliance : HITRUST) AND status: SUCCESS 這樣的表達式中,括號內的部分會先被評估,然後結果會用於表達式的其餘部分。 |
(compliance : MAS OR compliance : HITRUST) AND status : SUCCESS |
引號
|
" |
用於在字串包含特殊字元和/或空格時將其括起來。
|
message : "連續備份未為 [ddb-users-dev] 已啟動" |
秘訣使用括號來清楚地分組搜尋查詢中的術語。* 當字串包含字母、數字和空格以外的字符且不應被解釋為正則表達式時,應將其括在 \
"\ 中。例如,對於像 "resource" 和 "message" 這樣的自由文本欄位就是這種情況。* 使用正則表達式時,保留字符 . \. ? + * [ ] ( ) " \ 必須用 \\ 進行轉義。* 與其他精確匹配的欄位不同,'message' 和 'ruleTitle' 欄位使用全文搜尋,搜尋會返回所有 \相關\ 的結果,而不僅僅是精確匹配。如果您搜尋 Quick fox jumps,您可能希望找到包含 A quick brown fox jumps over the lazy
dog 的文件,並且您可能也希望找到包含相關詞語如 fast fox 或 foxes leap 的文件。 |
資源萬用字元
resource
欄位支援萬用字元搜尋。此語法支援兩個運算子:?
,匹配任何單個字符- _
*
,可以匹配零個或多個字元,包括空字元 _範例:- 查找所有以“sg-”開頭並以任意字符結尾的資源:
resource : sg-*
- 尋找所有以“sg-”開頭並以任意一個字符加字母“s”結尾的資源
resource : sg-?s
- 查找所有以“sg-”開頭並以任意字符結尾的資源:
請注意,萬用字元查詢可能會佔用大量記憶體並且效能非常差——想想需要查詢多少個詞彙才能匹配查詢字串
a* b* c*
資源正則表達式
resource
欄位支援正規表示式模式。它們可以透過用斜線 ("/"
) 包裹在查詢字串中嵌入:resource : /arn:aws:iam::[0-9]{12}:policy\/.*Part1/
支援的正規表示式語法在篩選和搜尋中進行了解釋
欄位清單
Field Name
|
Data type
|
Description
|
Example
|
規則標題
|
字串
|
如果規則的標題包含與值匹配的相關結果,則會匹配。請參閱上面的全文搜索說明。
|
ruleTitle : "不受限制的 SSH 訪問" |
ruleId
|
字串
|
如果規則 ID 完全匹配,則會匹配。從自動完成下拉選單中選擇。
|
ruleId : EC2-081 OR ruleId : EC2-088 |
訊息
|
字串
|
如果訊息包含符合該值的相關結果,則會匹配。請參閱上面的全文搜索說明。
|
訊息 : "存取金鑰" |
資源
|
字串正規表示式
|
如果資源 ID 符合該值,則會匹配。也可以通過萬用字元或正則表達式匹配,詳情請參閱上面的描述。
|
resource : "aws-glue-an-data" resource : /arn:aws:iam::[0-9]{12}:policy\/.*Part1/ resource : "aws-*-an-??-data" |
newerThanDays
|
數字
|
olderThanDays' 和 'newerThanDays' 範圍指的是從今天開始往回算的天數。它會將輸入的天數轉換為檢查創建並分配狀態的日期,或狀態從「成功」變為「失敗」或從「失敗」變為「成功」的日期。您可以通過輸入您希望查看的天數來使用此篩選器,範圍在
'olderThanDays' 之前和 'newerThanDays' 之後。您必須暫不處理至少 2 天到 1 天,才能查看特定時間段內的任何檢查。要顯示從特定日期到今天的檢查,請在
'newerThanDays' 中輸入天數,並且不要設置 'olderThanDays'。
|
newerThanDays : 20 |
olderThanDays
|
數字
|
要顯示特定日期之前的所有檢查,請在 'olderThanDays' 中輸入從今天起回溯的天數,並且不要設置 'newerThanDays'。
|
olderThanDays : 20 |
篩選標籤
|
字串
|
如果分配給您資源的元數據標籤中至少有一個標籤的鍵或值具有此值,則會匹配。要同時匹配鍵和值,請以 key::value 配對指定它們
|
filterTag : "env::dev" filterTag : "env" filterTag : "dev" |
服務
|
字串
|
提供者服務完全匹配時將匹配。 有關服務的詳細資訊,請參閱 雲端狀態 服務端點。
|
服務 : IAM |
類別
|
字串
|
如果類別完全匹配,則會匹配。可能的值為:安全性或成本優化或運營卓越或可靠性或效能效率
|
類別 : 安全 |
區域
|
字串
|
將在區域完全匹配時匹配。關於區域的詳細資訊,請參閱 雲端狀態 區域端點。
|
區域 : eu-west-2 |
風險等級
|
字串
|
如果風險等級完全匹配,則會匹配。可能的值為:LOW 或 中 或 HIGH 或 VERY_HIGH 或 EXTREME
|
風險等級:高 |
資源類型
|
字串
|
如果資源類型完全匹配,則會匹配。關於服務的詳細資訊,請參閱 雲端狀態 資源類型端點。
|
resourceType : ec2-securitygroup OR resourceType : ec2-instance |
提供者
|
字串
|
如果雲端提供者完全匹配,則會匹配。
|
提供者 : aws |
合規
|
字串
|
如果合規標準完全匹配,則會匹配。關於合規標準的詳細資訊,請參閱我們的API 文件中有關compliances欄位的說明。
|
合規性 : AWAF |
狀態
|
字串
|
如果檢查狀態完全匹配,則會匹配。可能的值為 SUCCESS 或 FAILURE
|
狀態 : 成功 |
已抑制
|
字串
|
是否包含所有被抑制的檢查。對於 "v1" 的預設值為 true,對於 "v2" 則省略。可能的值為 true 或 false
|
已抑制 : true |
使用 CQL 來篩選您的檢查
步驟
- 點選Browse all checks並選擇CQL過濾方法。
- 開始輸入以選擇要搜尋的欄位。選擇equal :或not equal :-運算子,並從可用值列表中選擇一個值。
- 您可以在此停止或繼續添加條件,使用OR或AND。請使用括號來確保條件的優先順序。
- 如果您的欄位沒有下拉選單,請輸入用 "" 括起來的搜尋文字,並在完成後點選 Apply filter 按鈕。
接下來需執行的動作
查詢範例
服務 : EC2 或 類別 : security 或 風險等級 : HIGH 或 狀態 : SUCCESS
服務 : EC2 AND 類別 :- 安全
(service : ELB OR category : security) AND riskLevel :- 中
service : EC2 AND ( category : security OR riskLevel : HIGH) AND status : SUCCESS
((service : ELB OR service : CloudFront) AND status : FAILURE) OR (message : SSL OR ruleTitle : SSL)
(service : VPC AND status : FAILURE) OR region : ca-central-1
service : EC2 AND (( category : security OR riskLevel : HIGH) OR status :- SUCCESS)