設定計算結果欄位
本指南適用於想在資安營運中自動充實資料的資安分析師和 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) 必須使用大寫。不過,測試函式和等號運算子中的文字字串時,不區分大小寫。舉例來說,搜尋「phishing」會成功比對出「PHISHING」或「Phishing」。
資料型別和常值
常值是運算式中使用的固定值。建議您確認作業和函式引數使用相容的型別。
| 類型 | 語法和規則 | 範例 |
|---|---|---|
| STRING | 以雙引號括住的文字。 | 「critical」、「不適用」 |
| 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 專業人員尋求解答。