使用 playbook 中的流程
支持的语言:
本文档介绍了 Flow 组件如何使用分支系统做出决策,从而指导剧本的后续步骤。
条件流程对于让 playbook 能够做出决策至关重要,可根据传入的提醒数据、之前的操作结果或用户输入,将支持请求路由到不同的路径。
以下是可用的流程选项:
- 条件:基于占位符、现有案例数据和之前的操作流程的复杂条件。
- 选择题:分析师必须手动回答的问题。
添加条件流
本部分介绍如何使用条件流在剧本中创建动态分支逻辑。
添加单个条件流
如需添加单个“条件”流程,请按以下步骤操作:
- 在响应 > Playbook 页面上,点击打开步骤选择器。
- 在步骤选择中,选择流程部分。
- 根据您构建 playbook 的方式,将条件拖动到相应步骤或两个操作之间。
- 双击相应条件以打开对话框。
- 选择所需的实体。如果您使用的是占位符,则占位符的范围限定为此实体组。
- 确定要创建多少个分支。每个分支之间都有一个 OR。
- 为每个分支选择并添加参数,如下所示:
- 从现有占位符列表中选择要评估的相关占位符。对于新用户,如果您尚未提取任何提醒,则此属性为空。
- 选择所需的运算符(例如等于、不包含)
- 选择一个值。
- 定义“后备分支”以避免条件失败。如果某个条件基于之前的操作,而其中一项操作失败(并被跳过),则该条件会继续执行回退分支,而不是停止。如需选择后备分支,请参阅定义后备分支。
- 点击保存。该剧本现在有三个分支:1、2 和 E(其他)。
- 为(至少)一个分支设置结果,以将 playbook 标记为已完成。
添加多选题流程
- 将选择题条件拖动到最后一步框中。
- 点击单选题以打开对话框。
- 添加一个问题,并根据需要添加任意数量的答案。
- 点击保存。该剧本有四个分支。
- 为至少一个分支设置结果,以将其标记为完成。
添加“条件”流程
如需添加“条件”流程,请按以下步骤操作:
- 将条件拖到最终步骤框中。
- 点击条件以打开相应对话框。
- 决定要创建多少个分支。每个分支之间都有一个 OR。
- 添加参数:选择所需参数。该列表仅显示相应剧本中的操作脚本结果。
- 选择所需的运算符:等于/不等于、包含/不包含、开头为或大于/小于。
- 选择值(操作结果)。
- 您可以为每个分支添加更多参数,并选择逻辑运算符:AND 或 OR。
- 点击保存。该剧本打开了三个分支:1、2 和 Else。
- 为至少一个分支设置结果,以完成剧本。
定义后备分支
- 在某个流程(条件)中,选择要用作回退分支的分支。此示例使用 Branch – not risky。 您无需添加回退分支。
- 当 playbook 运行时,如果之前的操作失败,playbook 会选择回退分支并继续运行。
管理步骤失败
playbook 步骤可能会在执行期间失败。默认情况下,剧本在某个步骤失败时会停止,这是一项至关重要的安全机制,可防止继续使用不完整或不正确的数据。不过,在某些情况下,即使某个步骤未返回预期结果,您也希望 playbook 继续运行。对于扩充操作,这一点尤其重要,因为您要查找的数据可能并非在所有情况下都存在。您可以决定是停止 playbook 还是跳到下一步。如果失败的步骤对决策至关重要,您可以在下一步中检查上一步是否失败,并相应地决定如何继续(例如,如果某个步骤失败,则转到回退分支)。
失败时跳过
对于任何操作,您都可以将其配置为在失败时跳过相应步骤。启用此设置后,即使操作运行失败或返回错误,剧本也会继续执行下一步。
如需启用此设置,请按以下步骤操作:
- 双击操作块以打开其设置抽屉。
- 在设置标签页中,前往如果步骤失败部分。
- 选择跳过此步骤。
使用条件进行高级错误处理
“失败时跳过”选项适用于基本情况,但更可靠的方法是使用条件流程创建专门的错误处理路径。这样一来,当某个步骤失败时,playbook 就可以采取不同的操作,例如通知分析师或记录错误。
如需创建错误处理路径,请按以下步骤操作:
- 在可能会失败且您想要为其定义特定失败路径的操作之后,添加一个条件流程块。
- 双击条件块以打开其对话框。
- 前往设置标签页,然后在如果上一个操作失败部分中,选择要将流程导向哪个分支。重要提示:如果上一个操作失败条件并非只是检查是否存在任何先前的失败;它会检查当前条件的评估中使用的结果所对应的先前操作是否失败。如果该相关操作失败,则无法确定条件,并且流程会定向到所选分支。这样一来,您就可以处理依赖项失败的情况,防止条件无法解析。
- 在此失败分支中,您可以添加发送通知电子邮件、创建任务或记录失败等操作。
例如,假设有一个 playbook 尝试解析用户的所有者。如果“Resolve User Owner”操作失败(例如,用户在 Active Directory 中不存在),该 playbook 不会停止。相反,条件块会检测到故障,并将流程定向到另一个分支,在该分支中,它可以向安全团队发送有关数据缺失的电子邮件,从而确保 playbook 继续运行而不会中断。<
移除流
从剧本中移除流程时,系统会提示您移除整个分支还是仅移除其中的一个方面。
合并分支
您可以将 playbook 的不同分支合并为一个分支。为此,请从一个分支中拖动某个操作,然后将其放到另一个分支的最终步骤框中。剧本可以在此之后继续,也可以在此结束。
逻辑运算符在条件中的运作方式
本部分阐明了 playbook 中的条件运算符如何评估包含单个或多个项(例如,提醒中的实体或事件)的字段。了解字段是字符串还是列表对于剧本逻辑至关重要。
数据类型在条件评估中的作用
运算符行为(Equals、Contains)因数据类型而异:
- 单项上下文:包含一个实体的提醒中的
[Entity.Identifier]等字段会被视为单个字符串。 - 多项内容情境:如果提醒包含多个实体,则同一字段为字符串列表。
equals 和 contains 的运算符行为
以下部分将讨论这些运算符的运作方式。
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 专业人士的解答。