搜尋的最佳做法
本文說明使用 Google 搜尋進行搜尋的最佳做法。如果搜尋查詢未經過仔細建構,可能需要大量運算資源才能完成。效能也會因 Google Security Operations 執行個體中的資料大小和複雜度而異。
建構成效良好的搜尋查詢
每個條件都必須採用 udm-field operator value
格式。
例如:principal.hostname = "win-server"
縮小搜尋時間範圍
請盡量將時間範圍縮小至必要最低限度。Google SecOps 可以擷取大量資料,因此在搜尋時限制資料範圍,可大幅提升搜尋效能。
在「搜尋」中使用規則運算式
您可以在搜尋時使用規則運算式:
- 請使用
AND
、OR
和NOT
。 - 如果沒有其他運算子,系統會假設為
AND
。 - 使用括號修改優先順序。括號內最多可使用 169 個邏輯運算子 (
OR
、AND
和NOT
)。 - 視欄位類型而定,欄位運算子可能包括:
= != >= > < <=
或者,您也可以使用參照清單。
使用 nocase
做為搜尋修飾符
nocase
可做為修飾符,忽略大小寫。
舉例來說,下列搜尋無效:
target.user.userid = "TIM.SMITH" nocase
規則運算式不適用於列舉欄位
您無法對列舉欄位 (具有預先定義值範圍的欄位),使用規則運算式,例如 metadata.event_type
或 network.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 專業人員尋求答案。