搜尋的最佳做法

支援的國家/地區:

本文說明在 Google Security Operations 中使用「搜尋」功能的最佳做法。如果搜尋查詢的建構方式不當,可能會需要大量運算資源。效能也會因 Google SecOps 執行個體中的資料大小和複雜度而異。

建構有效的搜尋查詢

每個條件都必須採用 udm-field operator value 格式。

例如:principal.hostname = "win-server"

由於 Google SecOps 可以在搜尋期間擷取大量資料,建議您縮小時間範圍,以縮小範圍並提升搜尋效能。

在搜尋查詢中使用規則運算式

搜尋資料時,您可以使用規則運算式:

  • 請使用 ANDORNOT
  • 如果沒有其他運算子,系統會假設為 AND
  • 使用括號修改優先順序。括號內最多可使用 169 個邏輯運算子 (ORANDNOT)。
  • 視欄位類型而定,欄位運算子可能包括: = != >= > < <=

或者,您也可以使用參照清單

使用 nocase 做為搜尋修飾符

nocase 可做為修飾符,忽略大小寫。

舉例來說,下列搜尋無效:

target.user.userid = "TIM.SMITH" nocase

請勿對列舉欄位使用規則運算式

您無法對列舉欄位 (具有預先定義值範圍的欄位),使用規則運算式,例如 metadata.event_typenetwork.ip_protocol

以下範例是無效的搜尋: metadata.eventtype = /NETWORK*/

但以下範例是有效的搜尋: (metadata.event_type = "NETWORK_CONNECTION" or metadata.event_type = "NETWORK_DHCP")

在「事件」欄位中使用任何運算子

在「搜尋」中,部分欄位會標示為「重複」,表示這些欄位包含值或訊息類型清單。根據預設,系統一律會使用 any 運算子處理重複欄位 (無法指定 all)。

使用 any 運算子時,如果重複欄位中的任何值符合條件,述詞的評估結果就會是 true。舉例來說,如果您搜尋 principal.ip != "1.2.3.4",且搜尋結果中的活動同時包含 principal.ip = "1.2.3.4"principal.ip = "5.6.7.8",系統就會產生比對結果。這樣一來,搜尋範圍就會擴大,只要符合任一運算子,就會顯示在搜尋結果中,不必全部符合。

系統會個別處理重複欄位中的每個元素。如果在搜尋的事件中找到重複的欄位,系統會評估該欄位中的每個元素。這可能會導致非預期的行為,特別是使用 != 運算子搜尋時。

使用 any 運算子時,如果重複欄位中的任何值符合條件,述詞的評估結果就會是 true。

時間戳記採用 Unix 紀元時間

系統會使用 Unix 紀元時間 (自 1970 年 1 月 1 日星期四 00:00:00 起經過的秒數) 比對時間戳記欄位。

搜尋特定時間戳記時,下列 (以 Epoch 時間為準) 為有效值:

metadata.ingested_timestamp.seconds = 1660784400

下列時間戳記無效:

metadata.ingested_timestamp = "2022-08-18T01:00:00Z"

部分欄位會排除在篩選器之外,包括:

  • metadata.id
  • metadata.product_log_id
  • *.timestamp

由於這些欄位通常包含不重複的值,因此可能會加入不必要的詳細資料,進而降低搜尋成效。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。