使用 playbook 循环自动执行任务

支持的平台:

Playbook 循环功能侧重于 for-each 循环,用于遍历列表并针对每个项执行一次一组操作。

借助 playbook 循环,您可以高效地处理多个项目(例如实体),只需运行一次操作或一系列操作即可。这样一来,当您需要在多个实体或其他数据类型中执行重复步骤时,就无需自定义操作或手动复制操作。 您还可以通过将块放置在循环内或将循环嵌入块内来简化工作流程。

支持的循环类型

Playbook 循环支持对以下数据类型进行迭代:

  • 实体:您可以遍历提醒中的实体列表。
  • 列表:您可以使用占位符遍历用户定义的商品列表或动态解析的列表。

构建循环

Playbook 循环包含一个循环开始步骤和一个对应的循环结束步骤。您希望针对列表中的每个项目重复执行的操作会放在这两个步骤之间。

循环开始

循环开始步骤标记着循环的开始,并包含其配置。

  • 您可以在循环开始步骤中为循环分配名称。此名称会显示在循环开始循环结束步骤中。
  • 此步骤定义了 Loop Over 参数(EntitiesList),并为所选类型配置了具体设置。
  • 在此步骤中,您可以配置循环在达到迭代次数上限(目前上限为 100 次)或遇到问题时的行为。
  • 循环成功开始后,系统会显示对勾标记。

循环结束

循环结束步骤用于标记循环的结束点。

  • 您无法直接修改循环结束步骤;其配置与循环开始步骤相关联。
  • 当循环成功完成所有迭代后,“循环结束”步骤会返回成功状态(以对勾标记表示),并且 JSON 结果会包含执行的迭代次数。
  • 如果循环在处理完所有项之前停止(由于达到最大迭代次数限制),JSON 结果会包含一个跳过项列表。

定义循环中的操作

放置在循环开始循环结束步骤之间的操作会重复运行。您可以将任何标准 playbook 操作(包括条件操作和块)拖动到此区域。

遍历实体的循环

默认情况下,当循环遍历实体时,该循环中的操作仅应用于每次迭代中的当前实体。随着循环的进行,该操作一次处理一个实体。

对于对实体进行操作的动作(例如 VirusTotal - 丰富哈希),系统会自动将动作的作用域限定为循环中的当前实体。循环中使用的实体占位符也仅引用当前循环实体。

为了说明这一点,我们来看以下用例:扫描哈希并为恶意哈希创建工单

可遍历实体的高级循环

在某些使用情形下,您可能需要同时访问当前迭代实体的信息和其他提醒实体的信息。为此,请针对该特定循环操作将将范围锁定为迭代切换开关切换为关闭状态。

  • 当此切换开关处于开启状态时,实体数据和占位符仅限于当前循环实体。
  • 当切换开关处于关闭状态时,实体数据和占位符可以根据实体菜单中的配置访问所有提醒实体。
    • 使用 Entity 占位符访问整个提醒的实体数据。
    • 使用 Loop.Entity 仅引用当前循环实体。

为了说明这一点,我们来看一个使用情形:根据用户职位为恶意文件创建优先支持请求

遍历列表的循环

循环可以针对指定列表中的每个项运行一组操作,您可以在其中执行以下操作:

  • 直接定义列表,或使用可解析为列表的占位符。
  • 根据需要自定义分隔符(例如逗号或斜杠)。
  • 使用 Loop.item 占位符引用迭代的项。

为了说明这一点,我们来看以下用例:通知用户密码泄露

处理循环内的块

您可以直接在循环中添加 playbook 块。当某个块被拖入循环时,其操作会针对循环处理的每个项或实体运行一次。

如果循环遍历实体,则该块包含将锁定范围限定为迭代切换开关。此切换开关用于控制“禁止访问实体数据”块中的操作:

  • 切换为开启状态:块内的所有步骤都限定为特定循环迭代中的当前实体。这样可确保块中的任何实体占位符和操作仅对相应迭代的相关数据起作用。
  • 切换为关闭状态:块内的步骤可以访问所有提醒实体。该块会接收来自提醒的所有实体,而不仅仅是父循环正在处理的实体。在这种情况下,菜单中会显示 loop.entity 占位符,并且只能使用这些占位符来访问迭代实体。

在块中使用循环

您可以将循环放置在 playbook 块内,以执行重复性任务作为块逻辑的一部分。这样,您就可以在剧本的限定范围部分内迭代处理商品或实体。

在块内配置循环与在 playbook 中设置任何其他循环的过程相同。

如需了解详情,请参阅配置 Playbook 循环操作

配置 playbook 循环操作

如需配置 Playbook 循环操作,请按以下步骤操作:

  1. 导航菜单中,依次前往响应 > Playbook
  2. 打开要修改的剧本,或创建新剧本
  3. 点击 + 打开步骤选择
  4. 点击循环标签页。
  5. 针对每个循环操作拖动到 playbook 画布上。这会自动创建循环开始循环结束步骤,并提供一个指定区域,用于在其中添加操作。
  6. 配置循环开始
    1. 点击循环开始步骤,打开针对每个循环侧边抽屉。
      1. 参数标签页中,选择要循环遍历的内容(实体列表)。
        • 实体:选择实体范围(所有实体可疑实体或自定义范围)。
        • 列表:在内容字段中,手动或使用占位符输入内容列表。定义用于分隔各个项目的分隔符(例如,逗号或斜线)。
      2. 设置标签页中,配置循环的行为:
        • 操作类型:选择自动(立即开始)或手动(需要用户操作)。
        • 如果步骤失败或超出迭代次数上限:选择循环应跳过剩余项并继续,还是停止 playbook
  7. 在循环之前或之后添加操作,以准备数据或处理循环的结果。

限制

在剧本循环中不支持审批链接

使用视图和 playbook 循环

本部分介绍了自定义 widget 和预建 widget 如何在视图中显示来自 playbook 循环的信息,并介绍了可视化循环生成的数据的重要方面。

自定义 widget

虽然您无法直接从内部循环步骤引用占位符,但可以在循环执行期间汇总结果,并在 widget 中显示这些结果。如需在自定义 widget 中显示汇总结果,请在循环中使用上下文值(例如,使用 Tools powerup 中的 Append to Context Value 操作)。

预建 widget

Google 提供了预构建的 widget,可与剧本设计器中的支持的操作无缝集成。当您将支持的操作拖动到 playbook 设计器中时,系统会建议相关的预建 widget。即使在循环中使用,这些 widget 也会直接连接到操作。

playbook 模拟器中的循环

策略方案模拟器可为包含循环和块的策略方案提供详细的可视化效果。它还支持嵌套结构,例如嵌套在块中的循环,以及嵌套在循环中的块。在模拟器查看器中,步骤从上到下显示(最旧的在顶部,最新的在底部),并自动滚动以显示最新活动。

如需了解详情,请参阅使用 Playbook 模拟器

支持请求概览

当包含循环的 playbook 运行时,您可以在支持请求页面的多个区域中找到有关其进度和每次迭代结果的信息。

以下部分介绍了 widget、剧本查看器和支持请求墙如何呈现与这些循环相关的信息。

微件

案例概览中的预建 widget 会根据相应操作的结果进行更新。如果该操作在循环内运行,微件会动态更新,以显示最新循环迭代的结果。

playbook 查看器

当您运行包含循环的 playbook 时,可以在 playbook 查看器中跟踪其进度以及每次迭代的结果。如需访问此标签页,请在支持请求中选择相关提醒,然后点击 Playbook 标签页。

剧本查看器以分层结构显示循环和代码块。这种组织方式有助于直观呈现嵌套流程的流向,并了解每个步骤的背景信息。

在操作手册查看器中,您可以执行以下操作:

  • 查看每次迭代,因为循环步骤会分组在一起。
  • 在迭代之间切换,以检查各个结果。
  • 选择循环中的某个步骤,以便在侧边抽屉中显示迭代次数。
  • 点击查看结果,即可显示循环名称和迭代次数。

案例墙

循环迭代的每个结果都会显示在案例墙上,同时还会显示循环指示信息,例如迭代次数。这有助于跟踪和区分每次迭代期间采取的操作。

使用场景示例

本部分提供了一些实用示例,说明如何使用 playbook 循环来自动执行不同类型的工作流。

扫描哈希并为恶意哈希创建工单

在此使用情形下,请执行以下步骤:

  1. 使用 VirusTotal 扫描提醒中所有文件的哈希。
  2. 自动为每个被识别为恶意的文件创建唯一的支持请求。

按照以下步骤创建剧本:

如需创建剧本,请完成以下步骤:

  1. VirusTotal - Enrich Hash 操作拖到 playbook 画布上,然后在添加循环之前对其进行配置。
  2. 针对每个循环元素拖动到画布上。
  3. 点击循环开始
    1. 参数标签页上,选择实体作为循环遍历类型。
    2. 实体菜单中选择所有实体均被标记为可疑。 此步骤可确保循环执行仅限于前一步骤中通过 VirusTotal - Enrich Hash 操作标记为可疑的实体。
  4. 创建工单操作拖到循环中。此操作的确切名称和配置因所使用的工单系统集成而异。
  5. 创建工单操作的配置中:
    1. 输入工单标题,例如 Malicious File Detected
    2. 说明字段中,使用占位符菜单插入有关循环中当前实体的详细信息(例如 Entity.IdentifierEntity.Type)。纳入与可疑实体关联的 VirusTotal 丰富信息中的所有相关信息。

对于 VirusTotal 识别为恶意软件的每个文件哈希,系统都会创建一个包含相关详细信息的唯一工单。

根据用户职位创建恶意文件的高优先级支持请求

在此使用情形中,在识别出恶意文件后(如上一个使用情形中所述),根据与文件关联的内部用户是否具有包含“CEO”的职位,创建具有不同优先级的工单。

在开始之前,请确保您已完成上一个使用情形中的初始步骤:

  • 循环之前的 VirusTotal - Enrich Hash 操作,以所有文件哈希实体为目标。
  • 一个 For Each Loop 操作,用于遍历实体,并将范围设置为所有标记为可疑的实体

如需为恶意文件创建优先级较高的支持请求,请完成以下步骤:

  1. 在循环内添加条件操作。
    1. 关闭将范围锁定到迭代切换开关,以允许访问除循环实体之外的其他提醒实体。
    2. 实体菜单中选择内部用户
    3. 配置条件以检查 Entity.job 是否包含 CEO。此操作会将优先级设置为 CRITICAL
    4. 使用 ELSE 分支来处理不涉及 CEO 的场景(这会将优先级设置为 HIGH)。
  2. 创建支持请求操作拖动到第一个分支中:
    1. 创建标题(例如 CRITICAL: Malicious File Detected - Potential CEO Impact)。
    2. 将突发事件优先级配置为 CRITICAL
    3. 说明字段中,添加与用户相关的详细信息以及来自 VirusTotal 扩充功能的信息。
  3. 将另一个创建工单操作拖动到 ELSE 分支中:
    1. 创建标题(例如 Attention: Malicious File Detected)。
    2. 将突发事件优先级配置为
    3. 说明字段中,添加与用户相关的详细信息以及来自 VirusTotal 扩充功能的信息。

对于每个恶意文件,该剧本都会检查关联的内部用户的职位。如果标题包含 CEO,则会创建 CRITICAL 优先级的支持请求。否则,系统会创建优先级为 HIGH 的支持请求。

在密码泄露时通知用户

数据泄露检测解决方案会提供一份用户名(电子邮件地址)列表,其中列出了最近发生的数据泄露事件中密码遭到入侵的用户。您希望向每位受影响的用户发送个性化的电子邮件通知,而不是向所有用户发送一封电子邮件。受影响的用户列表可在 alert.affected_users 字段中找到。

按照以下步骤创建剧本:

  1. 针对每个循环操作拖动到 playbook 画布上。
  2. 点击循环开始步骤。
    1. 参数标签页中,选择列表作为循环遍历类型。
    2. Items 字段中,使用 alert.affected_users 占位符。
  3. 如果 alert.affected_users 中的列表使用的分隔符不是英文逗号,请在分隔符字段中更新该分隔符。
  4. 电子邮件 - 发送电子邮件操作拖动到循环中。
  5. 电子邮件 - 发送电子邮件操作的配置中:
    1. 收件人字段中,使用 Loop.Item 占位符。当 List 循环遍历 alert.affected_users 列表时,Loop.Item 占位符表示正在处理的当前电子邮件地址,以便每个用户收到一封唯一的电子邮件。
    2. 配置电子邮件的主题内容,以告知用户密码已被盗用。

alert.affected_users 列表中的每位用户(电子邮件地址)都会收到一封关于其密码泄露的个性化电子邮件通知。

需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。