本頁面說明如何使用「發現項目」頁面上的「查詢編輯器」面板,建立及編輯 Security Command Center 發現項目查詢。
使用查詢擷取特定發現項目,並篩選發現項目查詢結果中顯示的發現項目。
編輯發現項目查詢
在「查詢編輯器」面板中,您可以為查詢新增篩選器,根據屬性或屬性值選取調查結果。您可以篩選值是否存在、值是否不存在,或是部分字串是否相符。
如要瞭解如何編輯調查結果查詢,請按一下服務層級的分頁。
標準或進階
- 在 Google Cloud 控制台中,前往 Security Command Center 的「發現項目」頁面。
- 選取 Google Cloud 專案或機構。「發現」頁面載入時,「查詢預覽」欄位會顯示預設查詢。
- 在「查詢預覽」部分右側,按一下「編輯查詢」edit,開啟「查詢編輯器」面板。
- 選取「新增篩選條件」,即可瀏覽、搜尋及將預先定義的屬性篩選條件新增至查詢。
- 選取發現項目屬性,或在「搜尋發現項目屬性」方塊中輸入屬性名稱。畫面上會顯示可用的子屬性清單。
- 選取子屬性。系統會顯示選取欄位,您可以使用所選子屬性、查詢運算子,以及一或多個子屬性值,建構查詢陳述式。
- 從面板中選取子屬性的運算子和一或多個值。 如要進一步瞭解查詢運算子和使用的函式,請參閱「新增篩選器」選單中的「查詢運算子」。
- 按一下 [套用]。
對話方塊會關閉,查詢也會更新。
- 重複上述步驟,直到結果查詢包含所有需要的屬性為止。
在「選取篩選器」對話方塊中,您可以選擇系統支援的搜尋屬性和值。
在「發現」頁面的查詢編輯器中工作時,系統會停用「快速篩選器」部分,避免兩者發生衝突。
Enterprise
- 在 Google Cloud 控制台中,前往 Security Command Center 的「發現項目」頁面。
- 在「查詢編輯器」面板中,按一下 「新增篩選器」。系統會隨即顯示「Add Filter」(新增篩選器) 對話方塊。這個對話方塊可讓您選擇支援的發現項目屬性和值。
- 在「屬性類別」欄位中,選取或輸入發現屬性。
- 在「屬性名稱」欄位中,選取或輸入子屬性。
- 在「運算子」欄位中,選取所選子屬性值的評估選項。如要進一步瞭解評估選項和可使用的運算子,請參閱「新增篩選器」選單中的查詢運算子。
- 選取「套用」。
對話方塊會關閉,查詢也會更新。
- 重複這個程序,直到查詢結果包含所有要篩選的屬性為止。
如要清除篩選器,請按一下「重設」。
或者,您也可以手動建立發現項目查詢,方法與使用 Security Command Center API 建立發現項目篩選器相同。輸入查詢時,系統會顯示自動完成選單,供您選取篩選器名稱、函式和值。如要手動開啟自動完成選單,請按下 Control + 空格鍵。
編輯查詢時,編輯器會醒目顯示查詢中的所有錯誤,方便您在提交查詢前修正錯誤。
查詢運算子
Security Command Center 發現項目的查詢陳述式支援大多數 Google Cloud API 支援的運算子。
以下清單顯示各種運算子的用法:
state="ACTIVE" AND NOT mute="MUTED"
create_time>"2023-08-15T19:05:32.428Z"
resource.parent_name:"prod"
severity="CRITICAL" OR severity="HIGH"
以下列出發現項目的查詢陳述式支援的所有運算子和函式:
- 字串:
=
,爭取完全平等:
(與部分字串相符)
- 數字:
<
、>
、<=
、>=
(適用於不等式)=
、!=
,爭取平等
- 布林值:
=
,爭取平等
- 邏輯關係:
AND
OR
NOT
或-
- 運算式分組:
(
,)
(括號)
- 陣列:
contains()
:這個函式可查詢結果,其中包含至少一個符合指定篩選條件的元素containsOnly()
:這個函式可查詢結果,並找出只包含符合指定篩選條件元素的陣列欄位
- IP 位址:
inIpRange()
:這個函式可以查詢指定 CIDR 範圍內的 IP 位址
「新增篩選器」選單中的查詢運算子
如要瞭解「新增篩選器」選單中使用的查詢運算子,請按一下服務層級的分頁標籤。
標準或進階
在「Query editor」(查詢編輯器) 的「Add filter」(新增篩選器) 會以字詞或片語表示,例如:
選單中,查詢運算子和函式- 等於:與這個屬性值完全相符的結果。
- 不等於:比對不具備這個確切屬性值的結果。
- 晚於:比對建立或更新時間晚於指定時間的發現項目。
- 早於:比對建立或更新時間早於指定時間的發現項目。
- 包含:比對屬性值包含您在「關鍵字」欄位中輸入文字的結果。
- 不含:比對屬性值不含您在「關鍵字」欄位中輸入文字的發現項目。
- 如要尋找含有陣列的屬性:
- 包含任何:比對含有陣列值的發現項目,該陣列值包含您在「關鍵字」欄位中輸入的任何文字。
- 包含所有:比對出含有陣列值的發現項目,且陣列值包含您在「關鍵字」欄位中輸入的所有文字。
- 不包含任何項目:比對沒有陣列值的發現項目,該陣列值包含您在「關鍵字」欄位中輸入的文字。
- 只包含:比對具有陣列屬性的發現項目,該屬性只包含您在「關鍵字」欄位中輸入的值,不含其他值。
- IP 位址:
- IP 範圍內的任何位址:比對 IP 位址位於指定 CIDR 範圍內的結果。
- 皆不在 IP 範圍中:比對 IP 位址不在指定 CIDR 範圍內的發現項目。
Enterprise
在「Query editor」(查詢編輯器) 的「Add filter」(新增篩選條件) 查詢運算子和函式會以以下形式表示:
選單中,- 等於:與這個屬性值完全相符的結果。
- 不等於:符合不具備這個屬性值的發現項目。
- 晚於:比對發現項目與指定時間之後的建立或更新時間。
- 早於:比對結果的建立或更新時間早於指定時間。
- 包含:比對屬性值包含您在「關鍵字」欄位中輸入文字的發現項目。
- 不含:比對屬性值不含您在「關鍵字」欄位中輸入的文字的結果。
- 大於:符合屬性值高於指定值的發現項目。
- 小於:比指定值低的屬性值。
- IP 範圍內的任何位址:比對 IP 位址位於指定 CIDR 範圍內的結果。
- 皆不在 IP 範圍中:與 IP 位址不在指定 CIDR 範圍內的發現項目相符。
查詢函式
查詢函式可對屬性值進行比一般查詢運算子更複雜的評估。
contains
函式
使用 contains
函式評估屬性或屬性子欄位,這些屬性或子欄位可能會在同一項發現中出現多次。
這些屬性或屬性子欄位會在內部儲存在陣列資料結構的元素中,因此稱為陣列型屬性。
舉例來說,某些調查結果可能會參照多個網路連線,因此 connections
屬性是陣列型屬性。同樣地,某些威脅發現項目可能會將多個 IP 位址做為遭入侵的指標,因此 indicator
屬性的 ip_addresses
子欄位是陣列型屬性。
contains
函式使用下列語法:
contains(ARRAY_ATTRIBUTE_NAME, SUBFILTER)
更改下列內容:
ARRAY_ATTRIBUTE_NAME
:儲存在陣列中的陣列型別屬性名稱。如果陣列型別屬性是另一個屬性的子欄位,請指定屬性名稱和子欄位名稱,並以半形句號分隔。在下列範例中,陣列型別屬性
ip_addresses
是indicator
的子欄位,因此兩者都會在ARRAY_ATTRIBUTE_NAME
位置指定:contains(indicator.ip_addresses, elem="192.0.2.80")
SUBFILTER
:定義如何評估陣列類型屬性每個執行個體的運算式。支援標準 Security Command Center 查詢運算子和評估陳述式。如果要檢查的值位於陣列類型屬性的子欄位中,請在運算式左側指定子欄位名稱。下列
contains
函式會評估connections
陣列的每個元素,這是包含子欄位的陣列類型屬性。要查詢的值位於destination_ip
子欄位中,但該欄位並非陣列類型欄位。要查詢的值會以子欄位名稱destination_ip
指定,而非elem
參數。contains(connections, destination_ip="192.0.2.80")
如果子欄位是陣列類型屬性,請在運算式左側指定陣列類型屬性及其父項,並在運算式右側使用
elem
參數指定要搜尋的值。舉例來說,下列contains
函式會評估ip_addresses
陣列的每個元素,這是indicator
屬性的子欄位。「indicator
」屬性不是陣列型欄位。contains(indicator.ip_addresses, elem="192.0.2.80")
「新增篩選器」選單中的 contains
函式
在「新增篩選器」選單中,視您評估的發現屬性而定,contains
函式會明確列出,或在您選取需要該函式的其他篩選器選項時自動加入。
舉例來說,針對「指標」屬性的「IP 位址」子欄位,您可以選取下列篩選選項:
- 包含任何
- 包含所有
- 不包含任何標籤
相反地,如果您要依「連線」屬性的「目的地 IP」子欄位進行篩選,並選取「IP 範圍內的任何 IP」,系統就會自動在查詢陳述式中加入 contains
函式,如下列範例所示:
contains(connections, inIpRange(destination_ip, "2001:db8::/32"))
如要進一步瞭解 contains
函式,請參閱篩選陣列型別欄位。
containsOnly
函式
containsOnly
函式可讓您查詢陣列型別屬性或子欄位的結果,這些屬性或子欄位只包含子篩選器中指定的值,不含其他值。
containsOnly
函式使用下列語法:
containsOnly(ARRAY_ATTRIBUTE_NAME,SUBFILTER)
更改下列內容:
ARRAY_ATTRIBUTE_NAME
:陣列型別屬性的名稱。如果陣列型別屬性是另一個屬性的子欄位,請指定屬性名稱和子欄位名稱,並以半形句號分隔。使用 Google Cloud 控制台執行查詢時,這個函式只支援iam_bindings.member
和iam_bindings.role
陣列屬性。SUBFILTER
:定義如何評估陣列類型屬性中每個元素的運算式。系統支援標準 Security Command Center 查詢運算子和評估陳述式。
在「新增篩選器」選單中,下列篩選器選項會使用 containsOnly
函式:
IAM 繫結 > 成員:僅選取包含指定使用者、服務帳戶或群組的結果。
IAM 繫結 > 角色:只選取包含指定角色的調查結果。
以下範例顯示 Google Cloud 主控台
中的發現項目查詢,會傳回 example-group
群組中使用者未靜音的有效發現項目:
state="ACTIVE" AND NOT mute="MUTED" AND containsOnly(iam_bindings,member="group:example-group@example.com")
inIpRange
函式
inIpRange
函式會檢查所選發現項目屬性中的 IP 位址,是否位於您使用 CIDR 標記法指定的 IP 位址範圍 (CIDR 範圍) 內。以下顯示 inIpRange
函式的語法:
inIpRange(ATTRIBUTE_WITH_IP, "CIDR_RANGE")
在「新增篩選器」選單中,下列篩選器選項會使用 inIpRange
函式:
- IP 範圍中的任何值:僅選取包含指定範圍內 IP 位址的結果。
- 皆不在 IP 範圍中:只選取不含指定範圍內 IP 位址的結果。
以下範例顯示控制台中的發現項目查詢,會傳回未設為靜音的有效發現項目,其中 access
物件的 caller_ip
子欄位包含 2001:db8::/32
CIDR 範圍內的 IPv6 位址: Google Cloud
state="ACTIVE" AND NOT mute="MUTED" AND inIpRange(access.caller_ip, "2001:db8::/32")
以下範例顯示的發現項目查詢會傳回未設為靜音的有效發現項目,其中 access
物件的 caller_ip
子欄位不包含 192.0.2.0/24
的 IPv4 CIDR 範圍內的 IP 位址:
state="ACTIVE" AND NOT mute="MUTED" AND NOT inIpRange(access.caller_ip, "192.0.2.0/24")
如果 IP 位址位於可能在發現項目中多次出現的屬性,請搭配使用 contains
函式和 inIpRange
函式,檢查屬性的每個例項是否含有 IP 位址。例如:
contains(connections, inIpRange(source_ip, "192.0.2.0/24"))
如要進一步瞭解 contains()
函式,請參閱contains
函式。
查詢的發現項目屬性
Security Command Center 會評估每個儲存的發現項目屬性,並與您在查詢中指定的屬性篩選器進行比較,然後選取要顯示的發現項目。
您可以查詢大部分的發現項目屬性。部分屬性是所有發現項目共有的。其他屬性可能與特定安全性問題、發現項目類別或偵測服務有關。
在「查詢編輯器」面板的「新增篩選條件」選單中,可套用至屬性篩選器的選項會因所選屬性類型,以及屬性是否具有子欄位或值陣列而異。
在「新增篩選器」選單中,按一下下列任一頂層屬性,即可顯示可在發現項目查詢中使用的子屬性和值:
- 發現項目
- 資源
- 存取權 (
access
) - 受攻擊風險分數
- 備份災難復原
- 法規遵循 (
compliances[]
) - 連結 (
connections[]
) - 聯絡人
- 容器
- 資料庫
- 資料竊取 (
exfiltration
) - 檔案
- IAM 繫結 (
iamBindings[]
) - 指標
- 核心 Rootkit
- Kubernetes
- MITRE ATT&CK (
mitreAttack
) - 程序 (
processes[]
) - 安全防護機制
- Sensitive Data Protection
- 安全漏洞