使用 playbook 中的流程

支持的语言:

本文档介绍了 Flow 组件如何使用分支系统做出决策,从而指导剧本的后续步骤。

条件流程对于让 playbook 能够做出决策至关重要,可根据传入的提醒数据、之前的操作结果或用户输入,将支持请求路由到不同的路径。

以下是可用的流程选项:

  • 条件:基于占位符、现有案例数据和之前的操作流程的复杂条件。
  • 选择题:分析师必须手动回答的问题。

添加条件流

本部分介绍如何使用条件流在剧本中创建动态分支逻辑。

添加单个条件流

如需添加单个“条件”流程,请按以下步骤操作:

  1. 响应 > Playbook 页面上,点击打开步骤选择器
  2. 步骤选择中,选择流程部分。
  3. 根据您构建 playbook 的方式,将条件拖动到相应步骤或两个操作之间。
  4. 双击相应条件以打开对话框。
  5. 选择所需的实体。如果您使用的是占位符,则占位符的范围限定为此实体组。
  6. 确定要创建多少个分支。每个分支之间都有一个 OR
  7. 为每个分支选择并添加参数,如下所示:
    1. 从现有占位符列表中选择要评估的相关占位符。对于新用户,如果您尚未提取任何提醒,则此属性为空。
    2. 选择所需的运算符(例如等于不包含
    3. 选择一个值。
  8. 定义“后备分支”以避免条件失败。如果某个条件基于之前的操作,而其中一项操作失败(并被跳过),则该条件会继续执行回退分支,而不是停止。如需选择后备分支,请参阅定义后备分支
  9. 点击保存。该剧本现在有三个分支:1、2 和 E(其他)。
  10. 为(至少)一个分支设置结果,以将 playbook 标记为已完成。

添加多选题流程

  1. 选择题条件拖动到最后一步框中。
  2. 点击单选题以打开对话框。
  3. 添加一个问题,并根据需要添加任意数量的答案。
  4. 点击保存。该剧本有四个分支。
  5. 为至少一个分支设置结果,以将其标记为完成。

添加“条件”流程

如需添加“条件”流程,请按以下步骤操作:

  1. 条件拖到最终步骤框中。
  2. 点击条件以打开相应对话框。
  3. 决定要创建多少个分支。每个分支之间都有一个 OR
  4. 添加参数:选择所需参数。该列表仅显示相应剧本中的操作脚本结果。
  5. 选择所需的运算符:等于/不等于包含/不包含开头为大于/小于
  6. 选择值(操作结果)。
  7. 您可以为每个分支添加更多参数,并选择逻辑运算符:ANDOR
  8. 点击保存。该剧本打开了三个分支:12Else
  9. 为至少一个分支设置结果,以完成剧本。

定义后备分支

  1. 在某个流程(条件)中,选择要用作回退分支的分支。此示例使用 Branch – not risky。 您无需添加回退分支。
  2. 当 playbook 运行时,如果之前的操作失败,playbook 会选择回退分支并继续运行。

管理步骤失败

playbook 步骤可能会在执行期间失败。默认情况下,剧本在某个步骤失败时会停止,这是一项至关重要的安全机制,可防止继续使用不完整或不正确的数据。不过,在某些情况下,即使某个步骤未返回预期结果,您也希望 playbook 继续运行。对于扩充操作,这一点尤其重要,因为您要查找的数据可能并非在所有情况下都存在。您可以决定是停止 playbook 还是跳到下一步。如果失败的步骤对决策至关重要,您可以在下一步中检查上一步是否失败,并相应地决定如何继续(例如,如果某个步骤失败,则转到回退分支)。

失败时跳过

对于任何操作,您都可以将其配置为在失败时跳过相应步骤。启用此设置后,即使操作运行失败或返回错误,剧本也会继续执行下一步。

如需启用此设置,请按以下步骤操作:

  1. 双击操作块以打开其设置抽屉。
  2. 设置标签页中,前往如果步骤失败部分。
  3. 选择跳过此步骤

使用条件进行高级错误处理

“失败时跳过”选项适用于基本情况,但更可靠的方法是使用条件流程创建专门的错误处理路径。这样一来,当某个步骤失败时,playbook 就可以采取不同的操作,例如通知分析师或记录错误。

如需创建错误处理路径,请按以下步骤操作:

  1. 在可能会失败且您想要为其定义特定失败路径的操作之后,添加一个条件流程块。
  2. 双击条件块以打开其对话框。
  3. 前往设置标签页,然后在如果上一个操作失败部分中,选择要将流程导向哪个分支。重要提示:如果上一个操作失败条件并非只是检查是否存在任何先前的失败;它会检查当前条件的评估中使用的结果所对应的先前操作是否失败。如果该相关操作失败,则无法确定条件,并且流程会定向到所选分支。这样一来,您就可以处理依赖项失败的情况,防止条件无法解析。
  4. 在此失败分支中,您可以添加发送通知电子邮件、创建任务或记录失败等操作。

例如,假设有一个 playbook 尝试解析用户的所有者。如果“Resolve User Owner”操作失败(例如,用户在 Active Directory 中不存在),该 playbook 不会停止。相反,条件块会检测到故障,并将流程定向到另一个分支,在该分支中,它可以向安全团队发送有关数据缺失的电子邮件,从而确保 playbook 继续运行而不会中断。<

移除流

从剧本中移除流程时,系统会提示您移除整个分支还是仅移除其中的一个方面。

合并分支

您可以将 playbook 的不同分支合并为一个分支。为此,请从一个分支中拖动某个操作,然后将其放到另一个分支的最终步骤框中。剧本可以在此之后继续,也可以在此结束。

逻辑运算符在条件中的运作方式

本部分阐明了 playbook 中的条件运算符如何评估包含单个或多个项(例如,提醒中的实体或事件)的字段。了解字段是字符串还是列表对于剧本逻辑至关重要。

数据类型在条件评估中的作用

运算符行为(EqualsContains)因数据类型而异:

  • 单项上下文:包含一个实体的提醒中的 [Entity.Identifier] 等字段会被视为单个字符串
  • 多项内容情境:如果提醒包含多个实体,则同一字段为字符串列表

equalscontains 的运算符行为

以下部分将讨论这些运算符的运作方式。

Equals 运算符

Equals 运算符直接比较两个值。

  • 单项字段(字符串)检查是否完全匹配。
    • 假设 [Entity.Identifier]"Tom"
    • 然后,条件 if [Entity.Identifier] equals "Tom"True
  • 多项字段(列表)检查整个列表是否等于指定字符串。列表永远不会等于单个字符串。
    • 假设 [Entity.Identifier] 是列表 (Tom, Kai)
    • 这样,条件 if [Entity.Identifier] equals "Tom, Kai" 始终为 False。这是因为 [Entity.Identifier] 是一个列表,而“Tom, Kai”是一个字符串。

Contains 运算符

Contains 运算符也会因数据类型而异:

  • 单项字段(字符串)执行子字符串搜索。如果字符串包含相应值,则返回 True
    • 假设 [Entity.Identifier]"user-1234"
    • 然后,条件 if [Entity.Identifier] contains "user"True
  • 多项字段(列表)会检查列表中的项是否完全匹配。系统不会执行子字符串搜索
    • 假设 [Entity.Identifier] 是一个列表 ("UserA@corp.com", "UserB@corp.com")。
    • 然后,条件 if [Entity.Identifier] contains "corp"False

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