使用 playbook 循环自动执行任务

支持的平台:

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

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

支持的循环类型

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

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

构建循环

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

循环开始

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

  • 您可以在循环开始步骤中为循环指定名称。此名称会显示在循环开始和循环结束步骤中。
  • 此步骤定义了 Loop Over 参数(Entities 或 List),并为所选类型配置了具体设置。
  • 在此步骤中,您可以配置循环在达到迭代次数上限(最多 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. 打开要修改的剧本,或创建新剧本。
  3. 点击 + 打开步骤选择。
  4. 点击循环标签页。
  5. 将针对每个循环操作拖动到 playbook 画布上。这会自动创建循环开始和循环结束步骤,并提供一个指定区域,用于在其中添加操作。
  6. 配置循环开始:
    1. 点击循环开始步骤,打开针对每个循环侧边抽屉。
      1. 在参数标签页上,选择要循环遍历的内容(实体或列表)。
        • 实体:选择实体范围(所有实体、可疑实体或自定义范围)。
        • 列表:在内容字段中,手动输入或使用占位符输入内容列表。定义定界符(例如英文逗号或斜杠)以分隔各项。
      2. 在设置标签页中,配置循环的行为:
        • 操作类型:选择自动(立即启动)或手动(需要用户操作)。
        • 如果步骤失败或超出迭代次数上限:选择循环应跳过剩余项并继续,还是停止 playbook。
  7. 在循环之前或之后添加操作,以准备数据或处理循环的结果。

限制

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

一个循环中支持的步骤数为 100。

使用视图和 playbook 循环

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

自定义 widget

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

预构建的 widget

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

playbook 模拟器中的循环

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

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

支持请求概览

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

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

微件

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

Playbook 查看者

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

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

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

  • 查看每次迭代,因为循环步骤会分组在一起。
  • 在迭代之间切换,以检查各个结果。
  • 选择循环中的某个步骤,以在侧边抽屉中显示迭代次数。
  • 点击查看结果,即可显示循环名称和迭代次数。
  • 点击终止 Playbook,手动结束 Playbook 执行,以处理不必要或过多的迭代。

案例墙

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

使用场景示例

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

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

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

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

按照以下步骤创建 playbook:

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

  1. 将 VirusTotal - Enrich Hash 操作拖动到 playbook 画布上,并在添加循环之前对其进行配置。
  2. 将针对每个循环拖动到画布上。
  3. 点击循环开始。
    1. 在参数标签页上,选择实体作为循环遍历类型。
    2. 从实体菜单中选择所有被标记为可疑的实体。 此步骤可确保循环执行仅限于在上一步中被 VirusTotal - Enrich Hash 操作标记为可疑的实体。
  4. 将创建工单操作拖到循环中。此操作的确切名称和配置因所用的工单系统集成而异。
  5. 在创建工单操作的配置中:
    1. 输入门票名称,例如 Malicious File Detected。
    2. 在说明字段中,使用占位符菜单插入有关循环中当前实体的详细信息(例如 Entity.Identifier 或 Entity.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. 将另一个 Create Ticket 操作拖动到 ELSE 分支中:
    1. 创建标题(例如 Attention: Malicious File Detected)。
    2. 将突发事件优先级配置为高。
    3. 在说明字段中,添加与用户相关的详细信息以及来自 VirusTotal 扩充功能的信息。

对于每个恶意文件,该剧本都会检查关联的内部用户的工作头衔。如果标题包含 CEO,则会创建优先级为 CRITICAL 的工单。否则,它会创建 HIGH 优先级工单。

向用户发送密码泄露通知

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

按照以下步骤创建 playbook:

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

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

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