Neurons Workflow Builder
Ivanti Neurons(功能)已被弃用,取而代之的是新的 Ivanti Neurons 机器人体验。 请参阅迁移到 Neurons 机器人了解更多信息。
Neurons 工作流程包括一系列可自动执行不同业务流程的连接阶段,可用于发现、提供见解和采取措施。 您可以使用 Neurons Builder 从头创建自定义 Neurons 工作流程,或根据您的业务需求编辑预建 Neurons 工作流程以便对其进行自定义。
Neuron 设置
使用“Neurons 设置”面板配置 Neurons 工作流程。可用的设置取决于 Neuron 的类型。
名称:Neuron 的名称。
类别:从下拉列表中选择类别:合规性、用户工作效率、业务连续性或资源优化。
目标组:选择自定义或所有设备。 如果选择自定义,请从所有可用公共设备组的下拉列表中进行选择。 设备组在设备 > 设备组中进行设置。
状态配置:在非活动与活动之间切换状态。 Neuron 设置为活动时,您可以使用计划设置来确定何时运行 Neuron。 填写以下字段:
- 重复:每日或每周
- 频率:分钟或小时
- 间隔:如果选择小时,则数值范围为 1 到 24。 选择分钟时数值范围为 30 到 55,间隔为 5 分钟。
- 开始时间:日期和时间
- 结束时间:日期和时间
名称:Neuron 的名称。
状态配置:在未发布与已发布之间切换状态。 Neuron 设置为已发布时,将显示操作显示名称以便为操作命名。 此名称将会显示在设备视图的操作面板中。
我的阶段
左侧的我的阶段面板包含所有默认和已安装的阶段。 存在不同类别的阶段:
其他查询和操作可以在库中找到,并可添加到我的阶段中。 有关库的详细信息,请转至 Neurons(功能)。
- 查询:用于显示和筛选满足指定条件的设备信息。 例如,显示可用磁盘空间小于 10% 的设备。 此查询阶段的输出和上下文可传递到 Neurons 工作流程中的后续阶段。 每个查询包含一个设置,可在未返回任何结果时控制 Neuron 的行为。 默认情况下选中只有返回结果时,Neuron 才会继续复选框。 这就意味着,如果在线设备未返回任何结果,Neurons 工作流程将不会继续运行。 例如,如果清除此复选框,Neuron 工作流程将会继续运行;在发出问题尚未被发现的肯定确认警报时,这可能会非常有用。
- 操作:操作阶段利用自动化结构来执行操作,例如发送电子邮件或在用户设备上执行自定义 PowerShell。 有些操作可使用变量。 请参阅变量以了解详细信息。
- 通用:包括:
- 筛选结果:筛选根据筛选器属性定义所捕获的查询信息。 请参阅筛选器以了解详细信息。
- Neuron 警报:用于在 Neurons 主页上生成警报。
- 自定义:您可利用 Bash 操作、自定义 JavaScript、PowerShell 操作和查询以及 osquery 创建定制的操作和查询。 库 > 阶段编辑器中创建的所有自定义阶段将会在安装之后显示在此处。
Neurons 工作流程高级示例中提供如何使用 osquery 和 PowerShell 的示例。
工作区
将阶段拖动至工作区以构建 Neurons 工作流程。 单击阶段可显示以下选项:
单击以从 Neuron 删除阶段。
单击以向其他阶段添加连接器。
单击以断开阶段之间的连接。
阶段设置
在您将一个阶段拖到工作区并且其已突出显示后,将打开阶段设置面板,使用该设置可配置和自定义每个阶段。
点击阶段信息可查看阶段的描述和所有相关联的属性。 可将这些内容用作筛选查询结果的标准。
连接
每个阶段都必须连接至其他阶段,以便运行 Neurons 工作流程。 突出显示阶段,然后点击连接器箭头 并将其拖动到要连接的阶段。随即打开连接面板,您可以在其中自定义连接类型和样式以及线粗细和样式。 您还可以更改颜色并添加标签。
筛选器
您可以根据可自定义的属性筛选查询结果。 在将内置的查询阶段连接到筛选器时,“属性”下拉列表将列出可选择的所有可用属性。 要查看属性的详细信息,请转至查询阶段设置面板并选择阶段信息。
您还可以使用预览查询功能来评估所有目标设备,并使用结果表格来查看可以筛选的值的格式和范围。
自定义查询(如 osquery、PowerShell 和 BASH)不会自动填充筛选器属性 - 必须基于查询返回(或可以在预览查询中查看)的列名称手动输入这些内容。
您可以将多个查询按顺序连接在一起。 如果执行此操作,那么所有结果将组合起来并可进行筛选,或者在诸如“发送电子邮件”和“创建 ISM 票证”这样的操作阶段中使用。 您可以更改已连接的筛选器的比较行为,以便其应用 AND 或 OR 逻辑来确定结果。
变量
变量可用于在阶段之间传递信息,并将一个操作的输出传递给其他操作。 变量可用于以下阶段:
- Neuron 警报
- 发送电子邮件
- 创建票证 (ISM)
插入变量
要插入变量,请打开相应阶段的阶段设置:Neurons 警报、发送电子邮件、创建票证 (ISM)。 在相关字段中,使用键盘快捷键(Ctrl+空格键)打开可用变量的下拉列表,然后选择您想要使用的变量:
- Neuron 名称:[[Workflow.Name]] - Neuron 的名称,例如 列入黑名单的软件
- 组名称:[[Workflow.Assistant]] - Neuron 所在的 Neuron 类别的名称,例如 合规性
- NeuronURL:[[Workflow.Url]] - Neuron 唯一运行编号实例的链接
- 启动用户:[[Initiation.User]] - 运行手动实例的用户的名称
- 启动用户 ID:[[Initiation.User]] - 运行手动实例的用户的 ID
- 所有设备名称:${Ivanti.Devices} - 查询返回的设备名称列表(由逗号分隔)
- 所有设备数据:${Ivanti.Results} - 查询返回的所有设备数据列表
- 设备计数:${Ivanti.Results.length} - 查询返回的设备的数量
- 覆盖范围 - 已响应:已响应的设备的数量
- 覆盖范围 - 错误:响应失败的设备的数量(包含错误)
- 覆盖范围 - 百分比:已响应的设备的百分比
有一些使用变量的模板可供使用。 针对较为复杂的要求,Neuron 警报和电子邮件中的字段支持 javascript,但这里采用 handlebarsjs
例如,要在电子邮件中返回设备列表,可以使用以下变量:
<ul class="devicelist">
{{#each Ivanti.Results}}
<li>{{this.deviceName}}</li>
{{/each}}
</ul>
管理错误
理想情况下,所有 Neurons 将在每次指定的所有设备上成功运行。 然而,有时候不是每件事都能成功。 Neurons 工作流程包括一些用于提高成功率的功能,您还可以进行一些设计决定和配置设置,以提高成功率并帮助您管理发生的任何错误。
超时
在等待工作流程完成与在工作流程失败之后不要让它持续很长时间之间,需要取得平衡。 适当的超时应用于工作流程的每个阶段。 查询阶段的超时为 15 秒,操作阶段的超时为 5 分钟,目标操作阶段的超时为 25 分钟。
跳过运行
计划运行仅在前一运行完成后才会开始。 Neuron 的运行日志用 指示已跳过的运行。
错误分支
当某个阶段运行时,工作流程会记录该阶段成功和失败的设备。 可以在“阶段输出”中查看这些结果。 如果该阶段仅在某些目标设备上成功,则阶段和运行均会标记为部分成功 ,并且工作流程仅在该阶段成功的设备上继续进行。您可以通过添加错误分支来改进工作流程设计,以便更主动地处理这种情况。
要添加错误分支:
- 打开所需的工作流程。
- 从我的阶段面板中的通用部分,在操作阶段下方添加筛选结果阶段。
- 将“操作”阶段连接到“筛选结果”阶段。
- 点击“筛选结果”阶段。
- 在阶段设置面板中,将逻辑设置为 AND,将属性设置为操作状态,将比较设置为等于,将值设置为已失败。
- 将类似的“筛选结果”阶段连接到相同“操作”阶段,但将值设置为已完成。
您现在具有错误分支,其将成功的设备与失败的设备分开。 - 在已完成筛选结果阶段下,完成工作流程设计。
- 在失败筛选结果阶段下,添加发送电子邮件操作阶段以报告失败,或者添加其他适当操作以尝试继续进行工作流程。
Neurons 工作流程高级示例
以下示例说明了如何构建 Neurons 工作流程以及使用自定义查询和操作:
支持对查询进行参数化,以便在 Neurons 中轻松地重用查询。 在使用编辑器并将其保存为可重用的库节点时支持此操作:
Osquery 使用 SQL 语法,例如: select * from processes where name = myprocess.exe
大多数管理员都很熟悉。
如果我们以上面的查询为例,可将其指定为以下内容:
select * from processes where name = __Name__
双下划线向 Neurons 表明应对该项目进行参数化,因此在完成保存并选择查询后,将在“设置”面板中出现名称输入框:
您还可以通过插入选项变量来填充要选择的值的下拉列表
在编辑器中,键入 op
并按 Tab 键:
替换为偏好文本和选项,然后保存为可重用的库节点:
这些选项现在将作为下拉列表提供:
Osquery 查询被分组为表格,但是如果您想将多个表格中的结果合并到一个查询中呢?
示例:您想使用注册表表格来检索注册表值:
但是您还需要 system_info 中的硬件供应商和型号
在 Neurons 中输入 osquery,如下所示:
SELECT hardware_vendor,hardware_model,
(
SELECT data FROM registry
WHERE key = 'HKEY_LOCAL_MACHINE\Software\Ivanti\Neurons'
)
temp
FROM system_info
这将返回以下内容:
然后,您可以连接筛选结果阶段,以在注册表值与特定值匹配时执行操作:
可选择筛选硬件供应商
或使用结果在电子邮件中创建格式化表格:
若要执行此操作:
- 从“磁盘空间不足”模板开始。
- 编辑带 <th> 标签且具有首选列名称的部分。
- 编辑具有相应 <td> 标签的部分,以使用预览中总是以此内容为前缀的列名称。 以小写开始,单词之间没有空格,后续单词应为大写。
例如 如果某个列被称为“我的设备”,则其在 <td> 部分中为 this.myDevices
可以使用 PowerShell 来查询设备(仅适用于 Windows)。 但是,查询需要以数组的形式返回结果,然后通过管道传输到 ConvertTo-Json。
示例:Get-TimeZone 将以数组形式返回结果,如下所示:
PS C:\Users\Joe.Bloggs> get-timezone
Id : GMT Standard Time
DisplayName : (UTC+00:00) Dublin, Edinburgh, Lisbon, London
StandardName : GMT Standard Time
DaylightName : GMT Summer Time
BaseUtcOffset : 00:00:00
SupportsDaylightSavingTime : True
但是,当通过管道传输到 ConvertTo-Json(PowerShell 3.0 及以上版本)时,如下所示:
PS C:\Users\Joe.Bloggs> get-timezone | convertto-json
{
"Id": "GMT Standard Time",
"DisplayName": "(UTC+00:00) Dublin, Edinburgh, Lisbon, London",
"StandardName": "GMT Standard Time",
"DaylightName": "GMT Summer Time",
"BaseUtcOffset": {
"Ticks": 0,
"Days": 0,
"Hours": 0,
"Milliseconds": 0,
"Minutes": 0,
"Seconds": 0,
"TotalDays": 0,
"TotalHours": 0,
"TotalMilliseconds": 0,
"TotalMinutes": 0,
"TotalSeconds": 0
},
"SupportsDaylightSavingTime": true
这使得 Neurons 可将数据构建为表格:
提示:如果预览查询无法正常工作,请确保组中的所有设备都能返回查询(至少具备 PowerShell 3 的 Windows 设备)。 您可以在 Neurons 设置中选择目标组。
从查询获得结果后,可以连接一个筛选阶段,以指定阶段继续运行所需满足的条件。 注意:您将需要手动键入列名称作为筛选器属性:
通过利用 Ivanti Neurons 代理和自动化结构引擎,Neurons 可以在端点上执行 PowerShell。 操作可以在最终用户的安全上下文中运行,也可以作为系统运行。
像 osquery 一样,PowerShell 操作也可以参数化,例如, 如果您需要可重用的操作来卸载有问题的 Windows 更新,可以使用 PowerShell 编辑器通过以下代码创建可重用的库节点:
wusa /uninstall /kb:__KBNumber__/quiet /norestart
可将 __KBNumber__
参数化为一个选项,您可在其中输入想删除的更新的编号:
通过从库中删除,您可以从编辑器中删除自定义操作和查询:
BASH 查询/操作的工作方式与 PowerShell 完全相同,但有一个例外,BASH 没有内置的 ConvertTo-Json 功能,因此您必须创建查询以返回 JSON 格式的结果,这样其才能被 Neurons 解释。