使用表达式构建器
支持的平台:
Google SecOps
SOAR
借助表达式构建器,您可以解析和修改 JSON 结果,以便在后续操作中使用。表达式构建器会生成各种动态转换函数,您可以将这些函数串联在一起,并进行预览和测试,从而以交互方式转换和解析原始操作结果。
在剧本操作中选择参数的占位符后,您可以使用 JSON 结果。这些结果会提供操作返回的全面信息,您可以在后续的 playbook 操作和流程中使用这些信息。如需了解详情,请参阅表达式构建器的使用场景。
查看表达式构建器
此示例展示了潜在的数据,并不反映实时结果。实际数据可能会有所不同,并且可能包含更多或更少的字段。如果分析师知道运行时会返回其他字段,则可以在语法字段中输入相应的键路径。
函数
支持以下管道函数:
- 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
字段的对象列表,则返回得分最高的对象) - Filter (ConditionKey, Operator, Value):过滤对象数组,仅返回指定字段上满足条件的对象。
- ConditionKey:每个对象中要根据条件进行评估的字段。
- 运算符:用于条件的运算符。
- 对于字符串输入:
=
、!=
、in
、not in
。 - 对于数字/日期输入:
=
、!=
、>
、>=
、<
、<=
。 - 值:条件中要检查的值。
示例:alerts | Filter("severity", "=", "HIGH")
(返回severity
字段为“HIGH”的所有提醒) -
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")
(按score
对alerts
数组进行降序排序) -
toLower ():将输入内容转换为小写字符。
示例:status_field | toLower()
(如果status_field
为“OPEN”,则返回“open”) -
toUpper ():将输入内容转换为大写字符。
示例:severity_field | toUpper()
(如果severity_field
为“high”,则返回“HIGH”) -
Replace ("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 ("分隔符"):使用指定的分隔符将字符串拆分为子字符串数组。
示例:"tag1,tag2,tag3" | split(",")
(返回["tag1", "tag2", "tag3"]
) -
join ("delimiter"):使用指定的分隔符将字符串数组连接成一个字符串。
示例:["malware", "critical"] | join(" & ")
(返回“恶意软件和严重”) -
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(值):将数值增加指定量。如果未指定数量,则值会递增 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”)转换为以世界协调时间 (UTC) 表示的 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”)
表达式:
在“表达式”字段中,您可以插入 JSON 结果以及函数和管道,以将多个函数组合在一起并构建表达式。运行 / 结果:
填写完表达式构建器后,点击运行,以根据表达式构建器中显示的 JSON 示例数据来显示结果。需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。