疑難排解偵測規則問題

支援的服務:

執行規則時可能會發生執行階段錯誤,導致規則無法成功執行。本文說明如何排解某些常見的執行階段問題。

  • 部署前先測試規則,可避免執行階段錯誤。在規則編輯器中按一下「Run Test」(執行測試)。如果偵測到錯誤,請點選錯誤連結查看詳細資料。

  • 如果規則執行期間發生錯誤,請點選「Detections」(偵測) 頁面上的錯誤連結,查看詳細資料。

查詢語法和邏輯錯誤

如果查詢結構無效、過於複雜,或使用不相容的資料類型,就會發生這類錯誤。

錯誤訊息 根本原因 Resolution
Too many `OR` and `AND` operations 查詢含有深度巢狀運算式或邏輯,超出堆疊空間限制。

簡化規則條件。

將複雜的邏輯拆解成較小的部分。

Query is too long 查詢需要過多堆疊空間才能處理。 將邏輯拆分為多項規則。
Accessing a new field that did not exist for this time range 規則參照了最近新增至結構定義的欄位,但規則執行的日期範圍內,該欄位並不存在。

請調整日期範圍,從欄位出現後開始。

修改規則,處理欄位為空值或遺漏的情況。

Invalid subnet CIDR 部分函式遇到無法剖析的無類別跨網域路由 (CIDR) 範圍 檢查規則中的 CIDR 範圍格式。
Invalid IP address 部分函式遇到格式錯誤的 IP 位址。 確認欄位值包含有效的 IP 位址格式
Map access for reading label does not support duplicate map keys 部分函式嘗試從類似地圖的結構 (例如其他欄位) 存取元素,但該結構中存在重複的索引鍵 (作業不允許這種情況)。

檢查資料來源是否有重複的金鑰。

調整規則邏輯,處理這項資料特性。

Invalid regular expression re.regex() 等函式中使用的規則運算式格式不正確。

修正規則運算式語法。

Invalid re.replace() re.regex() 的使用方式不正確,通常是因為括號子運算式與取代字串中的參照不相符。 請確認 re.regex() 中的重寫結構定義與規則運算式中括號內的子運算式相符。
Integer overflow in sum() aggregation 值總和超過標準整數上限。 請先將欄位轉換為浮點類型,再進行加總 (例如使用 sum(0.0 + $e.field))。
Cannot complete [arithmetic/mod] operation between unsigned and signed integer 規則嘗試在不同整數類型之間執行算術 (+、-、*) 或模數 (%) 運算。

使用 cast.as_int() 或 cast.as_uint() 轉換其中一個運算元,使其與另一個運算元相符。模數 (%) 運算子只接受整數,因此必須明確轉換。如果是 +、- 或 * 運算,您也可以使用浮點常值 (例如 2.0 或 100.0) 或除法強制轉型 (例如 (2/1)),強制整數常數在運算式中做為浮點數,且同一行中沒有其他 / 運算子。

如果運算式結合了有正負號整數 (INT64) 常值和無正負號整數 (UINT64) 統合式資料模型 (UDM) 欄位 (例如 network.received_bytes、network.sent_bytes 和 principal.file.size),就會發生這項輸入限制。這項限制適用於 events 和 outcome 區段,包括 sum() 或 max() 匯總。如果規則包含混合帶正負號和不帶正負號的整數算術,則可能會在沒有語法錯誤的情況下儲存,且只會在執行階段或測試規則時失敗。詳情請參閱「使用無正負號事件欄位進行算術運算」。

資源限制和效能錯誤

這類錯誤表示查詢過於繁重,系統無法處理。

錯誤訊息 根本原因 Resolution
Request was throttled, please try again later 規則所需的記憶體或處理能力超過分配量 (通常是因為複雜的彙整、大型匯總或篩選不足)。 在「事件」部分新增更具體的篩選條件。
Not enough memory for aggregation 超過aggregate_memory_limit。 減少「match」部分中的鍵數量,盡可能提高匯總效率。
Spilled bytes exceed limit 查詢嘗試處理過多事件。 新增篩選條件 (例如依metadata.log_type篩選),將查詢最佳化。
Your query resource usage is exceeding its allocation 查詢使用的資源過多,因此資源管理員已取消查詢。 新增篩選條件 (例如依metadata.log_type篩選),將查詢最佳化。

資料存取和系統錯誤

這類錯誤通常是暫時性問題,或與後端資料儲存庫有關。

錯誤訊息 根本原因 Resolution
Error reading files 暫時無法存取基礎資料。 請稍後再試。如果錯誤持續發生,請與支援團隊聯絡。
Error reading database 暫時無法存取基礎資料。 請稍後再試。如果錯誤持續發生,請與支援團隊聯絡。
Internal error 系統發生暫時性問題。 請稍後再試。如果錯誤持續發生,請與支援團隊聯絡。
Unknown error 未定義特定內部錯誤代碼時,系統會顯示預設錯誤訊息。 請稍後再試。如果錯誤持續發生,請與支援團隊聯絡。
Request was throttled, please try again later 系統負載過重。 請稍後再試。

不明執行階段錯誤

您可能會遇到不明的執行階段錯誤,且沒有相關說明。如果發生這種情況,請與 Google SecOps 支援團隊聯絡。

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