使用表达式构建器

支持的平台:

借助表达式构建器,您可以解析和修改 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:每个对象中要根据条件进行评估的字段。
    • 运算符:用于条件的运算符。
      • 对于字符串输入:=!=innot 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")(按 scorealerts 数组进行降序排序)
  • 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 专业人士那里获得解答。