設定計算欄位
本指南適用於想在資安營運中自動擴充資料的資安分析師和 SOC 管理員。本文說明如何使用邏輯公式建立及管理計算結果欄位,從現有案件和快訊資料衍生新值。採用這種方法可免除手動輸入資料的麻煩,並確保重要指標即時更新。成功完成後,平台分析能力會有所提升,並透過自動填入欄位加速事件分類。
您可以在 Google Security Operations 案件和快訊中,透過計算結果欄動態衍生新的資料點。定義邏輯公式後,您就能根據現有的系統或自訂欄位計算值。系統會自動評估計算出的值,並即時儲存在使用者選取的現有自訂欄位 (標示為「目標欄位」)。
常見用途
以下情境說明機構最常運用計算欄位的方式,以提升營運效率和資料清晰度。
自動風險評分
- 目標:根據事件量或優先順序分類案件。
- 價值:標準化分類程序,確保團隊能立即掌握高風險事件。
資料正規化
- 目標:根據命名慣例,將快訊標示為「測試」或「正式」。
- 價值:讓分析師從主要檢視畫面中篩除不重要的測試資料,減少雜訊。
重要術語
- 公式:您定義的文字型邏輯運算式,使用函式、運算子和欄位參照來計算值。
- 目標欄位:現有的自訂欄位 (「任意文字」類型),用於儲存公式結果計算。
- 依附元件:公式中參照的欄位。當依附欄位的值變更時,系統會同步重新評估「計算欄位」。
事前準備
建立計算前,請確認環境符合下列技術規定:
- 權限:您必須具備「設定」選單的管理員存取權,以及管理案件資料的權限。
- 環境檢查:請確認您有現有的有效自訂欄位 (任意文字類型),可做為目標欄位。
請確認系統中已有可做為目標欄位的自訂欄位。如否,請執行下列步驟:
- 依序前往「設定」 >「案件資料」 >「自訂欄位」。
- 建立新的自訂欄位,並將類型設為「任意文字」。
如要進一步瞭解自訂欄位,請參閱「建立自訂欄位」。
技術限制和驗證規則
定義計算前,請確認目標欄位和邏輯符合下列系統限制。這些規則會控管 Google SecOps 引擎驗證及保存公式結果的方式。
欄位驗證條件
對於指定為「目標欄位」的任何欄位,計算引擎會嚴格執行下列規定:
- 資料類型:欄位必須為「任意文字」類型。
- 運作狀態:這個欄位必須為「有效」,系統無法寫入已刪除或無效的欄位。
- 依附元件對應:為避免循環邏輯,如果欄位已是其他計算結果欄位的依附元件,就不能做為目標。
欄位範圍
建立 Both 範圍的自訂欄位時,系統會為每個情境產生專屬項目。這樣一來,您就能在同一邏輯類別中,為案件和快訊分別維護邏輯。
在「目標欄位」選單中,您必須選取與公式相關的特定範圍:
- 案件範圍:標示為
CaseCustom.YourField(例如CaseCustom.RiskLevel) - 快訊範圍:標示為
AlertCustom.YourField(例如AlertCustom.RiskLevel)
建立及管理計算欄位
本節將說明如何定義新的計算,以及在設定過程中解決常見問題。
建立新的計算
如要建立新的計算,請按照下列步驟操作:
- 依序前往「設定」 >「案件資料」 >「計算欄位」。
- 按一下「新增」 。
- 在「Calculated Field Name」(計算欄位名稱) 欄位中,輸入計算的專屬名稱和說明。
在「目標欄位」區域中,選取現有的「自訂欄位」來儲存結果。
- 預期失敗:選取的欄位不會顯示在選單中。
- 修正步驟:確認「自訂欄位」處於有效狀態,設為「任意文字」,且尚未成為其他計算的依附元件。
在文字編輯器中,使用支援的函式、運算子和語法建立公式。建立邏輯運算式 (例如
IF ([case.priority] == "High") THEN "Urgent" ELSE "Standard")。詳情請參閱「公式語言和語法」。按一下 [儲存]。
- 預期失敗:系統會拒絕儲存,並以紅色醒目顯示錯誤。
- 修正步驟:檢查語法錯誤,例如缺少
IF條件周圍的括號,或關鍵字為小寫。
存取進階素材資源和參考資料
公式必須遵守嚴格的文法和大小寫區分規則,才能使用所有內建運算子和函式。請使用下列技術規格,確保計算結果有效。
公式範例
下列範本示範如何結合函式和運算子,自動擴充資料。您可以複製並調整這些程式碼片段,配合特定欄位名稱和機構需求。
範例 1:設定風險等級
使用這項公式,根據案件標題中找到的特定關鍵字分類案件。
- 目標欄位:
CaseCustom.risk_level(文字) - 目標:自動將緊急事件指派為「高」狀態
公式:
IF (CONTAINS([case.name], "urgent")) THEN "High" ELSE "Medium"
範例 2:標記測試快訊
這項邏輯會識別並標記測試資料,協助分析師篩選主要檢視畫面,專注處理實際環境事件。
- 目標欄位:
AlertCustom.is_test(文字) - 目標:在快訊名稱中偵測
-TEST後置字元或TEST字串 公式:
IF (CONTAINS([alert.name], "TEST") OR ENDS_WITH([alert.name], "-TEST")) THEN "TRUE" ELSE "FALSE"
範例 3:合併條件
這個範例展示巢狀邏輯,可根據事件量和現有優先順序層級,排定評論優先順序。
- 目標欄位:
CaseCustom.review_status(文字) - 目標:只有在記錄長度顯著且優先順序不是
Low時,才觸發人工審查。 公式:
IF (LENGTH(\[AlertCustom.event\_details\]) \> 100 AND NOT IS(\[case.priority\], "Low")) THEN "Needs Review" ELSE "Auto-Closed"
公式語言和語法
計算引擎會區分大小寫,適用於所有內建運算子、關鍵字和函式。您必須以大寫形式撰寫關鍵字 (例如 IF, THEN, ELSE, AND, OR, NOT) 和函式名稱 (例如 CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN)。不過,函式和等號運算子中的字串測試不區分大小寫。舉例來說,搜尋「網路釣魚」時,系統會比對「網路釣魚」或「網路釣魚」。
資料型別和常值
常值是運算式中使用的固定值。建議您確認作業和函式引數使用相容的型別。
| 類型 | 語法和規則 | 範例 |
|---|---|---|
| STRING | 以雙引號括住的文字。 | 「critical」、「N/A」 |
| NUMBER | 整數或小數。 | 100、3.14 |
| BOOLEAN | 必須為大寫。 | TRUE、FALSE |
| NULL | 代表空值。 | 空值 |
欄位參照
如要使用其他欄位的值,請在欄位名稱前後加上方括號,例如 [object.field_name]。
- 語法規則:您必須在欄位參照中使用前置字元。您必須使用前置字元 (例如
case.或AlertCustom.),後面加上半形句號和欄位名稱。欄位名稱本身可以包含英文字母、數字、底線和空格。例如:[case.name]、[alert.priority]、[AlertCustom.my_custom_field]。 - 可用的系統欄位包括:
case.name、case.stage、case.priority、alert.name、alert.priority、alert.rule_generator。 - 您可以參照所有使用者定義的自訂欄位。
- 計算結果欄位公式無法參照其他計算結果欄位。
運算子
使用運算子進行比較和邏輯運算。使用括號 () 覆寫預設優先順序並將運算式分組
- 比較運算子:
==、!=、>、>=、<、<= - 邏輯運算子:
AND、OR、NOT - 運算子優先順序:
NOT、>、>=、<、<=、AND、OR
條件運算式
系統支援使用 IF (condition) THEN expression1 ELSE expression2 語法的條件邏輯。ELSE 部分為選用項目;如果省略此部分且條件為 FALSE,結果預設為 NULL。
條件必須是評估結果為 TRUE 或 FALSE 的運算式。
例如 IF ( [CaseCustom.score] > 75 ) THEN "High Risk" ELSE "Low Risk"。
函式
函式是預先定義的作業,必須全部大寫。下表列出支援的資料操控和評估函式。
| 函式 | 說明 | 語法 | 傳回類型 |
|---|---|---|---|
CONTAINS(field, substring) |
檢查文字欄位是否含有子字串 (不區分大小寫) | CONTAINS([case.name], "phishing") |
BOOLEAN |
DOES_NOT_CONTAIN(field, substring) |
檢查文字欄位是否不含子字串 (不區分大小寫) | DOES_NOT_CONTAIN([case.name], "test") |
BOOLEAN |
LENGTH(field) |
傳回欄位中的字元數 | LENGTH([case.name]) |
NUMBER |
STARTS_WITH(field, prefix) |
檢查欄位是否以特定前置字元開頭 (不區分大小寫) | STARTS_WITH([CaseCustom.hostname], "srv-") |
BOOLEAN |
ENDS_WITH(field, suffix) |
檢查欄位是否以後置字串結尾 (不區分大小寫) | ENDS_WITH([AlertCustom.filename], ".exe") |
BOOLEAN |
IS(field, literal) |
檢查欄位值是否等於字面值 (不區分大小寫) | IS([alert.priority], "High") |
BOOLEAN |
IS_NOT(field, literal) |
檢查欄位值是否「不等於」字面值 (不區分大小寫) | IS_NOT([alert.priority], "Low") |
BOOLEAN |
保留的關鍵字和 ID
計算引擎會保留特定字詞,用於邏輯運算和函式。您無法在公式中將這些字詞做為自訂欄位名稱或其他 ID:
- 邏輯:
AND, OR, NOT, IF, THEN, ELSE - 值:
NULL, TRUE, FALSE - 函式:
CONTAINS, LENGTH, STARTS_WITH, ENDS_WITH, IS, IS_NOT, DOES_NOT_CONTAIN
資料類型相容性
為確保評估作業順利完成,請確認所有作業和函式引數都使用相容的型別。支援的類型包括 STRING、NUMBER、BOOLEAN 和 NULL。
公式的最終輸出內容必須符合「目標欄位」的預期類型。由於目標欄位僅限「任意文字」,公式最終必須解析為字串或可隱含轉換為目標格式的值。
格式和空白字元
雖然權杖之間的空格、定位點和換行符號通常會遭到忽略,但這些符號是分隔關鍵字和 ID 的必要條件。善用空白字元,將複雜的多行公式分段,方便維護及同儕審查。
撰寫有效的公式
雖然計算引擎可彈性處理空白字元,但請遵循下列格式標準,避免發生邏輯錯誤,並簡化疑難排解程序。
- 明確分組:使用括號清楚定義運算順序,即使是依賴標準優先順序也一樣。這有助於避免邏輯上的模糊不清。
- 視覺結構:在運算子 (
==, AND, OR) 周圍套用空格,並為巢狀IF/THEN陳述式插入換行符,讓邏輯可掃描。 類型驗證:請務必驗證公式的最終輸出內容是否與目標欄位的預期類型相符,以免發生評估錯誤。
IF ( (IS([CaseCustom.event_count], "100") AND NOT IS([case.priority], "Low")) OR CONTAINS([case.name], "Critical") ) THEN "Needs Immediate Review" ELSE "Standard Review"
疑難排解
本節將說明預期成效,並提供自助式修正方法,解決建構或管理公式時遇到的常見部署問題。
延遲和限制
每當依附欄位變更時,計算欄位就會同步評估。為維持系統效能,計算結果欄位無法參照其他計算結果欄位;系統會封鎖這些鏈結的依附元件,避免遞迴和處理延遲。
錯誤修正
手動編寫公式時,可能會因語法或資料型別不符而發生錯誤。請參閱下表,將特定旅程相關錯誤代碼對應至確切的修正措施。
| 錯誤類型 | 問題 | 修正 |
|---|---|---|
| 語法 | 公式違反文法規則,例如括號不相符或關鍵字為小寫。 | 將所有 IF 條件包在 () 中,並確認所有關鍵字都是大寫。 |
| 驗證 | 公式參照不明欄位 (例如 [\case.typo]) 或導致類型不符。 | 驗證方括號中的欄位名稱,並確認輸出內容與目標欄位類型相符。 |
| 評估 | 公式有效,但執行時失敗,通常會顯示 #ERROR!。 | 檢查是否有執行階段問題,例如將非字串值傳遞至 LENGTH() 等函式。 |
修改或刪除目標欄位
系統會主動保護公式所依據的欄位,確保資料完整性。如果您嘗試刪除或修改做為目標欄位的自訂欄位,系統會封鎖該動作,並顯示警告訊息,指出該欄位目前用於計算欄位。
驗證和測試
儲存新的計算公式後,請前往案件或快訊並更新依附元件欄位,確認結果是否正確。確認「目標欄位」會即時填入預期值。
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。