InsightConnect工作流最佳实践

欢迎来到InsightConnect工作流构建最佳实践页面!我们很高兴你能来。如果你从来没有建立过工作流,需要一些想法来帮助你开始,首先看看我们的构建工作流文档

当您准备开始构建时,请参考此页面以获得工作流最佳实践和格式帮助。

工作流名称

         
1
with ( )

避免在工作流名称中使用大写的连接词,例如.将工作流名称中的所有其他单词视为专有名词。

例子:

  • 从Slack中使用OSInt充实指标
  • 从微软团队禁用活动目录中的用户帐户
  • 从Slack在Cherwell创建票
  • Block Host with Checkpoint Firewall from Slack
  • 获取资产详情并使用InsightVM扫描资产
    • 该工作流使用API触发器,因此 不需要
  • 使用Microsoft Teams中的InsightVM扫描资产
  • 使用VirusTotal的威胁情报充实InsightIDR警报

安全术语

在使用安全术语时,应将所有首字母缩略词大写,例如知识产权IP地址.只要特定于供应商的术语不适用,我们建议您在为特定用例创建工作流时使用以下术语:

用例 建议项
使某物暂时或无限期地失效 暂停
找到并清除某种数据 搜索和删除
隔离设备 隔离
拒绝用户访问或阻止到或从特定端点的流量 禁止

此外,我们建议使用以下这些术语的简写版本,以帮助您的工作流程文本简洁:

术语 速记版本
IP地址 知识产权
MAC地址 MAC
SHA256散列 SHA256
InsightIDR 印尼盾
InsightVM 虚拟机
InsightConnect 图标

供应商特定的术语

只要有可能,请使用软件供应商提供的最新命名术语。例如,VMware Carbon Black EDR遗产的当前名称是什么炭黑反应的名字。下面的术语示例包含了我们对微软软件命名的一些建议:

  • 微软团队-使用全名,因为团队经常超载。
  • Azure的广告
  • Office 365-别忘了使用空间。不要使用o365Office365
  • 活动目录

要注意软件供应商如何在他们的产品名称中使用大写和空格。以下产品是常见的例子:

  • Darktrace
  • CrowdStrike
  • 检查NGFW

工作流标记

下面的例子是工作流标签的好选择:

  • 报警和通知
  • 应用程序管理
  • 资产清单
  • 云安全
  • 凭证管理
  • 数据浓缩
  • 数据工具
  • DevOps
  • 进攻的安全
  • 补救管理
  • 报告和分析
  • 威胁检测与响应
  • 用户管理
  • 脆弱性管理

工作流步骤

需要用户更改用户输入的步骤应该具备change_me作为这些步骤的输入。

ChatOps

对于具有不同供应商的类似充实工作流,过载触发器,以便在发布单个消息时触发所有工作流。考虑一下这个例子:

@Slackbot enrich-url < url >会触发三种不同的浓缩工作流程。在ChatOps触发器步骤名称中包含触发器语法。这使得很容易找到和记住触发器命令是什么:

enrich-url触发! enrich-url触发

松弛

         
1
@Rapid7 InsightConnect ( | = " " = " ")

触发命令应该用任何东西作为前缀,并且应该使用小写命令和破折号。这是因为机器人必须被显式地标记,因此当机器人被标记时,我们期望一个聊天命令(例如,block-host).

在Slack中发布消息时,最好的做法是使用线程并在触发工作流的地方进行回复。这样,只有触发步骤需要用户配置,因为通道和ID可以在所有后续的Slack步骤中动态传递:

  • 使用{{[“松弛的消息触发”]。[信息]。[channel_id]}}变量Slack Channel
  • 使用{{[“松弛的消息触发”]。[信息]。[t]}}线程变量

微软团队

         
1
! < verb-with-many-words >(<单身param > | < param1 > = < value1 > " < param2 > = < value2 >)

团队工作流程必须附加一个,应使用小写命令和破折号。这是因为它不是机器人,我们需要一个特殊字符来表明这是一个命令,而不仅仅是一个用户正在输入的不应该被触发的测试(例如,block-host !).

在Teams中发布消息时,最佳实践是使用线程并在触发工作流的地方进行回复。这样,只有触发器步骤需要用户配置,因为通道和ID可以在所有后续Teams步骤中动态传递。

  • 使用{{[“微软团队触发”]。[channel_name]}}团队通道的变量
  • 使用{{[“微软团队触发”]。[team_name]}}变量作为团队名称

内置的步骤

  • 计时器的步骤
    • 在触发器名称中指示定时器的频率(例如,“每日触发器”)。
  • 决策的步骤
    • 步骤名应该以问题的形式表示(例如,“在VirusTotal中找到哈希?”)。
  • 循环步骤
    • 循环步骤应该命名为<动词> < >集合(例如,“处理电子邮件”,“充实IDR警报”)
  • 用于聊天触发工作流的模式匹配步骤
    • 如果使用聊天触发器,请使用的自动指标提取功能团队松弛而不是模式匹配,如果可能的话。
    • 如果必须使用Pattern match匹配聊天命令,则尽可能多地匹配命令,这样聊天工作流就会超载,而不会导致不相关的工作流运行。
    • 对于Slack来说,如果萃取的话unblock-hostblock-host命令,然后一个指示符来阻止,使用下面的表达式:
         
1
<.* >{{命令:/ block-host /}}{{指示器:/ . * /}}

这将匹配Slack机器人ID (< ABC123 >),两block-hostunblock-host并将它们存储在一个叫做命令,以及后面的任何指示符,并将其存储在一个被调用的变量中指示器

  • 行动步骤
    • 作为一般规则,在步骤名称中包含操作名称。
    • 运用你最好的判断。如果操作名称完全不是描述性的,则以更描述性的方式命名步骤(例如,“删除电子邮件”、“扫描资产”、“列表调查”)。

工作流构建原则

在本节中,您将发现工作流构建技巧和技巧的列表,以及有用的内置特性,这些特性使构建工作流时很容易操作变量和数据。

  • 如果工作流是由ChatOps命令触发的,请让用户知道工作流已经通过在触发器之后立即发布到聊天线程中来触发。这让用户有信心知道命令在工作,而不需要等待工作流完成。
  • 自动提取指标聊天集成的功能可以很容易地从聊天消息中提取变量和安全指标,以便稍后在工作流中使用。
  • 使用全球的工件在所有工作流程中全局存储数据。全局工件允许您利用来自现有工作流的输出或数据,并创建可以在多个工作流中重用的数据,从而提高整个组织的效率。
  • 使用循环输出允许将整个步骤循环的输出作为工作流中后续步骤中的单个数据点处理。
  • 使用模式匹配步骤匹配特定格式的数据与正则表达式,并将该格式定义为一个变量,您可以在以后的工作流程中使用。当自动指标提取功能不适用时,模式匹配步骤是数据提取的一个很好的选择。
  • 在过程中使用工件步骤来描述功能并对工作流进行评论!

先进的工作流模式

下面列出了一些更高级的工作流模式,如使用列表作为Python3的输入,在对象上使用正则表达式,从工件中删除换行,Slack消息和Teams消息。

使用列表作为Python3的输入

用藏物检查是否空虚。

         
python
1
def运行参数个数
2
进口ast
3.
4
如果'{{["Split Nested to List"].[List]}}' '
5
list1'{{["Split Nested to List"].[List]}}' '
6
list1astliteral_evallist1
7
其他的
8
list1
9
10
如果'{{["将顶层拆分为列表"].[列表]}}' '
11
用于'{{["将顶层拆分为列表"].[列表]}}' '
12
用于astliteral_eval用于
13
其他的
14
用于
15
16
list1扩展用于
17
out_list列表list1
18
-列表排序
19
返回“列表”out_list

使用Handlebars确保没有空数组:

         
1
{“列表”:“{{#如果[\“\”]。[列表]}}{{[\“\”]。[列表]}}{{其他}}”[]{{/如果}}}

在对象上使用正则表达式

将任何变量用引号括起来,将其转换为字符串。

从工件中删除新行

  • {{~ #每个}}
  • {{一}}
  • {{~ /每个}}