使用運算式產生器
支援的國家/地區:
Google SecOps
SOAR
您可以使用運算式產生器剖析及修改 JSON 結果,以供後續動作使用。運算式產生器會產生各種動態轉換函式,您可以將這些函式串連在一起、預覽及測試,以互動方式轉換及剖析原始動作結果。
在應對手冊動作中選取參數的預留位置後,您可以使用 JSON 結果。這些結果會提供動作傳回的完整資訊,您可以在後續的應對手冊動作和流程中使用。詳情請參閱「運算式建立工具使用案例」。
查看運算式製作工具
這個範例僅顯示可能的資料,不代表即時結果。實際資料可能有所不同,且可能包含更多或更少的欄位。如果分析師知道執行階段會傳回其他欄位,可以在「語法」欄位中輸入對應的索引鍵路徑。
函式
系統支援下列管道函式:
- First (x):傳回陣列的前 X 個元素。
範例:alerts | First(2)
(如果alerts
是[{"id": "A"}, {"id": "B"}, {"id": "C"}]
,則傳回[{"id": "A"}, {"id": "B"}]
) - Last (x):傳回陣列的最後 X 個元素。
範例:alerts | Last(1)
(如果alerts
是[{"id": "A"}, {"id": "B"}, {"id": "C"}]
,則傳回[{"id": "C"}]
) - Min (KeyPath):從陣列中傳回具有最小值的項目。如果提供 keyPath 參數,則會傳回指定路徑中具有最小值的物件。
示例:alerts | Min("score")
(如果alerts
包含具有score
欄位的物件清單,則會傳回分數最低的物件) - Max (KeyPath):從陣列中傳回具有最大值的項目。如果提供 keyPath 參數,則會傳回指定路徑中具有最大值的物件。
示例:alerts | Max("score")
(如果alerts
包含具有score
欄位的物件清單,則會傳回分數最高的物件) - 篩選器 (ConditionKey、Operator、Value):篩選物件陣列,只傳回符合指定欄位條件的物件。
- ConditionKey:每個物件中要根據條件評估的欄位。
- 運算子:用於條件的運算子。
- 字串輸入:
=
、!=
、in
、not in
。 - 數字/日期輸入:
=
、!=
、>
、>=
、<
、<=
。 - 值:要在條件中檢查的值。
範例:alerts | Filter("severity", "=", "HIGH")
(傳回「HIGH」severity
欄位的所有快訊) -
DateFormat ("pattern") - 將指定模式 (模式指定為參數) 的日期格式化為
YYYY-MM-DDThh:mm:ssZ
。
示例:timestamp_field | DateFormat("yyyy/MM/ddTHH:mm:ss")
(如果timestamp_field
為「2024/07/20T10:00:00Z」,則傳回「2024-07-20 10:00:00」) -
Count ():傳回輸入陣列中的項目數量。
範例:alerts | Count()
(如果alerts
是含有 4 個元素的陣列,則會傳回 4) -
OrderBy ("keyPath", "direction"):根據指定鍵路徑的值,排序物件陣列。
範例:alerts | OrderBy("score", "DESC")
(依遞減順序排序alerts
陣列中的score
) -
toLower ():將輸入內容轉換為小寫字元。
範例:status_field | toLower()
(如果status_field
為「OPEN」,則傳回「open」) -
toUpper ():將輸入內容轉換為大寫字元。
範例:severity_field | toUpper()
(如果severity_field
是「high」,則傳回「HIGH」) -
取代 ("x", "y"):將字串中的子字串取代為另一個字串。
範例:message_field | Replace("World", "Universe")
(如果message_field
是「Hello World」,則會傳回「Hello Universe」) -
Distinct ():從陣列中移除重複的值。如果是物件陣列,則會執行深層比較,找出重複的物件。
範例:[10, 20, 30, 20, 40] | Distinct()
(傳回[10, 20, 30, 40]
) -
getByIndex ("index"):依指定索引或索引清單取得陣列項目。
示例:alerts | getByIndex("0")
(傳回alerts
陣列的第一個元素)
示例:alerts | getByIndex("0,2")
(傳回alerts
陣列的第一個和第三個元素) -
split ("delimiter"):使用指定的分隔符號,將字串分割成子字串陣列。
範例:"tag1,tag2,tag3" | split(",")
(傳回["tag1", "tag2", "tag3"]
) -
join ("delimiter"):使用指定的分隔符,將字串陣列連結成單一字串。
示例:["malware", "critical"] | join(" & ")
(傳回「malware & critical」) -
trim ():移除字串的前置及後置空格。
範例:" hello world " | trim()
(傳回「hello world」) -
trimChars ("characters"):從字串開頭和結尾移除指定字元。即使未明確指定,系統一律會移除開頭和結尾的空白字元。
範例:"--TEST--ABC--" | trimChars("-")
(傳回「TEST--ABC」) -
substring (start, end):從字串中擷取子字串,使用指定的開始索引和選用的結束索引。
範例:"Hello World" | substring(0, 5)
(傳回「Hello」)
範例:"Hello World" | substring(6)
(傳回「World」) -
incrementValue (value):將數值增加指定量。如未指定金額,值會遞增 1。
示例:score_field | incrementValue(5)
(如果score_field
為 90,則傳回 95)
示例:counter_field | incrementValue()
(如果counter_field
為 10,則傳回 11) -
setIfEmpty ("defaultValue"):如果輸入值為空,則傳回提供的預設值。
範例:optional_field | setIfEmpty("N/A")
(如果optional_field
為空,則傳回「不適用」;否則傳回optional_field
的值) -
toUnixtime ():將人類可解讀的日期和時間字串 (例如「2014/03/12T13:37:27Z」或「2014-03-12T13:37:27+01:00」) 轉換為以世界標準時間表示的 Unix 時間戳記。
範例:"2024-07-20T10:00:00Z" | toUnixtime()
(傳回 1721469600) -
ifThenElse ("operator", "comparedValue", "trueResult", "falseResult") - 評估條件,如果為 true 則傳回第一個運算式,否則傳回第二個運算式。
示例:severity_field | ifThenElse("=", "HIGH", "High Priority", "Normal Priority")
(如果severity_field
是「HIGH」,則傳回「High Priority」;否則傳回「Normal Priority」)
示例:score_field | ifThenElse(">", "70", "Above Threshold", "Below Threshold")
(如果score_field
是 90,則傳回「Above Threshold」;如果score_field
是 60,則傳回「Below Threshold」)
Expression:
您可以在「運算式」欄位中插入 JSON 結果,並搭配函式和管道,將多個函式加在一起,建構運算式。執行 / 結果:
填寫運算式產生器後,按一下「執行」,即可根據運算式產生器中顯示的 JSON 範例資料,顯示結果。還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。