在主控台中查詢發現項目

本頁面說明如何使用「發現項目」頁面的「查詢編輯器」面板,建立及編輯 Security Command Center 發現項目查詢。

使用查詢擷取特定發現項目,並篩選發現項目查詢結果中顯示的發現項目。

編輯發現項目查詢

在「查詢編輯器」面板中,您可以為查詢新增篩選條件,根據屬性或屬性值選取發現項目。您可以篩選有值、無值或部分字串相符的項目。

  1. 前往 Google Cloud 控制台的 Security Command Center「發現項目」頁面。

    前往「發現項目」

  2. 選取 Google Cloud 專案或機構。系統會載入「發現」頁面,並在「查詢預覽」欄位中顯示預設查詢。
  3. 在「查詢預覽」部分右側,按一下 「編輯查詢」,開啟「查詢編輯器」面板。
  4. 選取「新增篩選條件」,即可前往、搜尋預先定義的屬性篩選條件,並新增至查詢。

    「新增篩選器」選單可供選擇支援的搜尋結果屬性和值。

    1. 在「選取篩選條件」選單中,選取發現項目屬性,或在「搜尋發現項目屬性」方塊中輸入屬性名稱。畫面上會顯示可用的子屬性清單。
    2. 選取子屬性。系統會顯示選取欄位,您可以使用所選子屬性、查詢運算子,以及一或多個子屬性值,建構查詢陳述式。
    3. 從面板中選取子屬性的運算子和一或多個值。 如要進一步瞭解查詢運算子和使用的函式,請參閱「新增篩選條件」選單中的查詢運算子

      如要重新開始,請按一下「重設」

    4. 按一下「套用」

      選單會關閉,查詢也會更新。

    5. 重複上述步驟,直到結果查詢包含所有需要的屬性為止。

在「發現」頁面的查詢編輯器中工作時,系統會停用「快速篩選器」專區,避免兩者發生衝突。

或者,您也可以手動建立調查結果查詢,方法與使用 Security Command Center API 建立調查結果篩選器相同。輸入查詢時,系統會顯示自動完成選單,您可以在其中選取篩選器名稱、函式和值。如要手動開啟自動完成選單,請按下 Control+Space 鍵。

編輯查詢時,編輯器會醒目顯示查詢中的所有錯誤,方便您在提交查詢前修正錯誤。

查詢運算子

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"

以下列出發現項目的查詢陳述式支援的所有運算子和函式:

  • 字串:

    • = 代表完全比對

      舉例來說,resource.parent_name="prod" 與值 prod 相符,但不與 productioncanaryprod 相符。

    • : 代表部分相符

      舉例來說,resource.parent_name:"prod" 會比對 prodproductioncanaryprod 值。

  • 數字 (int64 除外):

    • <><=>= 不等式
    • =!=,爭取平等
  • 數字 (int 64):

    • =!=,爭取平等
  • 布林值:

    • =,爭取平等
  • 邏輯關係:

    • AND
    • OR
    • NOT-
  • 如要將運算式分組:

    • () (括號)
  • 陣列:
    • contains():這個函式可查詢發現項目,這些項目具有至少一個符合指定篩選條件的陣列欄位
    • containsOnly():這個函式可查詢含有陣列欄位的結果,該欄位只包含符合指定篩選條件的元素
  • IP 位址:
    • inIpRange():這個函式可以查詢指定 CIDR 範圍內的 IP 位址

「新增篩選器」選單中的查詢運算子

在「查詢編輯器」「新增篩選器」選單中,查詢運算子和函式會以字詞或片語表示,例如:

  • 等於:與這個屬性值完全相符的結果。
  • 不等於:符合不具備這個確切屬性值的發現項目。
  • 晚於:比對建立或更新時間晚於指定時間的結果。
  • 早於:比對建立或更新時間早於指定時間的結果。
  • 大於:符合屬性值高於指定值的發現項目。
  • 小於:比指定值低的屬性值。
  • 包含:比對屬性值包含您在「關鍵字」欄位中輸入文字的發現項目。
  • 不含:比對屬性值不含您在「關鍵字」欄位中輸入的文字的結果。
  • 如要尋找含有陣列的屬性:
    • 包含任何:比對具有陣列值的結果,其中包含您在「關鍵字」欄位中輸入的任何文字。
    • 包含所有:比對出陣列值包含您在「關鍵字」欄位中輸入的所有文字的結果。
    • 不包含:比對沒有陣列值的發現項目,該陣列值包含您在「關鍵字」欄位中輸入的文字。
    • 只包含:比對具有陣列屬性的發現項目,該屬性只包含您在「關鍵字」欄位中輸入的值,不含其他值。
  • IP 位址:
    • IP 範圍內的任何位址:比對 IP 位址位於指定 CIDR 範圍內的結果。
    • 皆不在 IP 範圍中:比對 IP 位址不在指定 CIDR 範圍內的結果。

查詢函式

查詢函式可對屬性值進行比一般查詢運算子更複雜的評估。

contains 函式

使用 contains 函式評估屬性或屬性子欄位,這些屬性或子欄位可能會在同一項發現中出現多次。

這些屬性或屬性子欄位會在內部儲存在陣列資料結構的元素中,因此稱為陣列型別屬性

舉例來說,某些調查結果可能會參照多個網路連線,因此 connections 屬性是陣列型屬性。同樣地,某些威脅調查結果可能會參照多個 IP 位址做為遭入侵的指標,因此 indicator 屬性的 ip_addresses 子欄位是陣列型屬性。

contains 函式使用下列語法:

contains(ARRAY_ATTRIBUTE_NAME, SUBFILTER)

更改下列內容:

  • ARRAY_ATTRIBUTE_NAME:儲存在陣列中的陣列類型屬性名稱。如果陣列類型屬性是另一個屬性的子欄位,請指定屬性名稱和子欄位名稱,並以半形句號分隔。

    在下列範例中,陣列型別屬性 ip_addressesindicator 的子欄位,因此兩者都會在 ARRAY_ATTRIBUTE_NAME 位置指定:

    contains(indicator.ip_addresses, elem="192.0.2.80")
  • :定義如何評估陣列類型屬性各個例項的運算式。系統支援標準 Security Command Center 查詢運算子和評估陳述式SUBFILTER

    如果要檢查的值位於陣列類型屬性的子欄位中,請在運算式左側指定子欄位名稱。下列 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.memberiam_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 位址的結果。

以下範例顯示 Google Cloud 控制台中的發現項目查詢,會傳回未設為忽略的有效發現項目,其中 access 物件的 caller_ip 子欄位包含 2001:db8::/32 CIDR 範圍內的 IPv6 位址:

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 會評估每個儲存的發現項目屬性,並與您在查詢中指定的屬性篩選器進行比較,然後選取要顯示的發現項目。

您可以查詢大部分的發現項目屬性。部分屬性是所有發現項目共有的。其他屬性可能專屬於特定安全性問題、發現類別或偵測服務。

在「查詢編輯器」面板的「新增篩選條件」選單中,可套用至屬性篩選條件的選項會有所不同,具體取決於您選取的屬性類型,以及屬性是否具有子欄位或值陣列。

在「新增篩選器」選單中,按一下下列任一頂層屬性,即可顯示可在發現項目查詢中使用的子屬性和值: