使用 playbook 循环自动执行任务

支持:

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

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

支持的循环类型

Playbook 循环支持遍历以下数据类型:

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

构建循环

Playbook 循环由循环开始 步骤和相应的循环结束 步骤组成。您希望为列表中的每个项重复执行的操作将放置在 这两个步骤之间。

循环开始

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

  • 您可以在循环开始 步骤中为循环分配名称。此 名称会显示在循环开始循环结束步骤中。
  • 此步骤定义了循环遍历 参数 (实体列表 ),并为所选类型配置了特定设置。
  • 此步骤可让您配置循环达到其 迭代次数上限(最多 1,000 次迭代)或遇到问题时的行为。
  • 循环成功启动后,系统会显示对勾标记。

循环结束

循环结束 步骤标志着循环的结束。

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

在循环中定义操作

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

遍历实体的循环

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

对于对实体执行操作的操作(例如 VirusTotal - Enrich Hash), 该操作会自动限定在循环中的当前实体范围内。实体 循环中使用的占位符也仅引用当前循环实体。

为了说明这一点,请考虑以下使用场景: 扫描哈希值并为恶意 哈希值创建工单

遍历实体的高级循环

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

  • 当开关处于开启状态时,实体数据和占位符仅限于 当前循环实体。
  • 当开关处于关闭状态时,实体数据和占位符可以访问所有提醒 实体,具体取决于 实体 菜单中的配置。
    • 使用 Entity 占位符访问提醒范围内的实体数据。
    • 使用 Loop.Entity 仅引用当前循环实体。

为了说明这一点,请考虑以下使用场景: 根据用户职位为恶意 文件创建优先级工单

遍历列表的循环

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

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

为了说明这一点,请考虑以下使用场景: 向用户通知泄露的密码

在循环中使用块

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

如果循环遍历实体,则块会包含 将范围锁定到迭代 开关。此开关控制块中的操作 访问实体数据的方式:

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

在块中使用循环

您可以将循环放置在 playbook 块内,以执行重复性任务作为 块逻辑的一部分。这样,您就可以在 playbook 的限定范围内遍历项或实体。

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

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

配置 Playbook 循环操作

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

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

限制

审批链接 在 Playbook 循环内不受支持。

循环内支持的步骤数量为 100。

使用视图和 playbook 循环

本部分介绍了自定义微件和预构建微件如何在视图中显示来自 playbook 循环的信息,并介绍了直观呈现循环生成的数据的重要方面。

自定义微件

虽然您无法直接引用内部循环步骤中的占位符,但可以在循环执行期间汇总结果并在 微件中显示这些结果。如需在自定义微件中显示汇总结果,请在循环中使用上下文值 (例如,使用 附加到上下文值 操作,该操作来自 工具 增强功能)。

预构建微件

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

Playbook 模拟器中的循环

Playbook 模拟器为包含循环和块的 playbook 提供了详细的直观呈现。它还支持嵌套结构,例如嵌套在块内的循环,以及嵌套在循环内的块。在模拟器 查看器中,步骤从上到下显示(最旧的在顶部,最新的在 底部),并自动滚动以显示最新活动。

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

支持请求概览

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

以下部分介绍了微件、playbook 查看器和 案例墙如何呈现与这些循环相关的信息。

微件

支持请求概览 中的预构建微件会显示其 相应操作的结果。如果操作在循环内运行,微件会 动态更新以显示最新循环迭代的结果。

Playbook 查看器

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

Playbook 查看器以分层结构显示循环和块。 这种组织方式有助于您直观呈现嵌套流程的流程,并 了解每个步骤的上下文。

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

  • 查看每次迭代,因为循环步骤会分组在一起。
  • 在迭代之间导航以检查各个结果。
  • 选择循环中的一个步骤,以便在侧边 抽屉式导航栏中显示迭代编号。
  • 点击查看结果 以显示循环名称和迭代编号。
  • 点击 终止 Playbook 以手动结束 playbook 执行 从而处理不需要的或过多的迭代。

案例墙

循环迭代的每个结果都会显示在案例墙上,并附有 循环指示(例如迭代编号)。这有助于跟踪和 区分每次迭代期间执行的操作。

使用场景示例

本部分提供了有关如何使用 playbook 循环自动执行不同类型工作流的实用示例。

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

在此使用场景中,请执行以下步骤:

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

使用以下步骤创建 playbook:

完成以下步骤以创建 playbook:

  1. VirusTotal - Enrich Hash 操作拖动到 playbook 画布上 并在添加循环之前对其进行配置。
  2. For Each Loop 拖动到画布上。
  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 的场景(这会将优先级设置为 )。
  2. 创建工单 操作拖动到第一个分支中:
    1. 创建标题(例如 CRITICAL: Malicious File Detected - Potential CEO Impact)。
    2. 将事件优先级配置为CRITICAL
    3. 说明 字段中,添加有关 用户的相关详细信息以及来自 VirusTotal 扩充的信息。
  3. 将另一个创建工单 操作拖动到 ELSE 分支中:
    1. 创建标题(例如 Attention: Malicious File Detected)。
    2. 将事件优先级配置为
    3. 说明 字段中,添加有关 用户的相关详细信息以及来自 VirusTotal 扩充的信息。

对于每个恶意文件,playbook 都会检查关联的内部用户的 职位。如果职位包含 CEO,则会创建CRITICAL 优先级工单。否则,它会创建 优先级工单。

向用户通知泄露的密码

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

使用以下步骤创建 playbook:

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

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

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