监视自动化规则和 playbook 的运行状况
为了确保 Microsoft Sentinel 服务中安全业务流程、自动化和响应操作的正常运行和性能,请通过监视自动化规则和 playbook 的执行日志来跟踪自动化规则和 playbook 的运行状况。
为相关利益干系人设置运行状况事件通知,以便其随后可以采取措施。 例如,定义并发送电子邮件,在票证系统中创建新票证等等。
本文介绍如何使用 Microsoft Sentinel 的运行状况监视功能在 Microsoft Sentinel 中跟踪自动化规则和 playbook 的运行状况。
总结
Microsoft Sentinel 自动化运行状况日志:
- 此日志捕获记录自动化规则运行的事件,以及这些运行的最终结果:成功还是失败,以及失败的原因。 日志记录规则中操作启动的总体成功或失败情况,并列出规则调用的 playbook。
- 日志还捕获记录按需(手动或基于 API)触发 playbook 的事件,包括触发它们的标识、它们是成功还是失败以及失败的原因。
- 此日志不包含 playbook 内容的执行记录,仅包含 playbook 启动成功或失败的记录。 有关 playbook 中执行的操作的日志,请参阅下面的下一个列表。
- 这些日志收集在 Log Analytics 的 SentinelHealth 表中。
重要
SentinelHealth 数据表目前仅提供预览版。 请参阅 Azure 预览版的补充使用条款,了解适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。
Azure 逻辑应用诊断日志:
- 这些日志捕获 playbook(也称为逻辑应用工作流)的运行结果及其中的操作。
- 这些日志与自动化运行状况日志配合使用时,可提供自动化运行状况的完整信息。
- 这些日志收集在 Log Analytics 的 AzureDiagnostics 表中。
使用 SentinelHealth 数据表(公共预览版)
若要从 SentinelHealth 数据表中获取自动化运行状况数据,必须先为工作区启用 Microsoft Sentinel 运行状况功能。 有关详细信息,请参阅为 Microsoft Sentinel 启用运行状况监视。
启用运行状况功能后,会在为自动化规则和 playbook 生成的第一个成功或失败事件时创建 SentinelHealth 数据表。
了解 SentinelHealth 表事件
SentinelHealth 表中记录以下类型的自动化运行状况事件:
Automation rule run。 每当满足自动化规则的条件并导致其运行时,记录此事件。 除了基本 SentinelHealth 表中的字段外,这些事件还将包括运行自动化规则所特有的扩展属性,包括规则调用的 playbook 列表。 以下示例查询将显示这些事件:
SentinelHealth | where OperationName == "Automation rule run"
Playbook was triggered。 每当从门户或通过 API 手动触发事件的 playbook 时,记录此事件。 除了基本 SentinelHealth 表中的字段外,这些事件还将包括手动触发 playbook 所特有的扩展属性。 以下示例查询将显示这些事件:
SentinelHealth | where OperationName == "Playbook was triggered"
有关详细信息,请参阅 SentinelHealth 表列架构。
状态、错误和建议的步骤
对于“Automation rule run”,可能显示以下状态:
- Success:规则已成功执行,触发所有操作。
- Partial success:规则已执行并触发了至少一个操作,但有些操作失败了。
- 失败:由于以下其中一个原因,自动化规则未运行任何操作:
- 条件评估失败。
- 条件满足,但第一个操作失败。
对于“Playbook was triggered”,可能显示以下状态:
- Success:已成功触发 playbook。
- Failure:无法触发 playbook。
注意
“Success”仅表示自动化规则已成功触发 playbook。 但不会告知 playbook 何时开始或结束、playbook 中操作的结果或 playbook 的最终结果。 若要查找此信息,请查询逻辑应用诊断日志(请参阅本文后面的说明)。
错误说明和建议的操作
错误说明 | 建议的操作 |
---|---|
Could not add task: <TaskName>。 找不到事件/警报。 |
确保事件/警报存在,然后重试。 |
Could not modify property: <PropertyName>。 找不到事件/警报。 |
确保事件/警报存在,然后重试。 |
Could not modify property: <PropertyName>。 请求过多,超出限制。 |
|
Could not trigger playbook: <PlaybookName>。 找不到事件/警报。 |
如果在尝试按需触发 playbook 时发生错误,请确保事件/警报存在,然后重试。 |
Could not trigger playbook: <PlaybookName>。 找不到 playbook,或者 Microsoft Sentinel 缺少对其的权限。 |
编辑自动化规则,在其新位置查找并选择 playbook,然后保存。 确保 Microsoft Sentinel 有权运行此 playbook。 |
Could not trigger playbook: <PlaybookName>。 包含不受支持的触发器类型。 |
确保 playbook 以正确的逻辑应用触发器开头:Microsoft Sentinel 事件或 Microsoft Sentinel 警报。 |
Could not trigger playbook: <PlaybookName>。 订阅已禁用并标记为只读。 在重新启用订阅之前,无法运行此订阅中的 playbook。 |
重新启用 playbook 所在的 Azure 订阅。 |
Could not trigger playbook: <PlaybookName>。 Playbook 已禁用。 |
在 Microsoft Sentinel 的“自动化”下的“活动 playbook”选项卡中,或在逻辑应用资源页中,启用 playbook。 |
Could not trigger playbook: <PlaybookName>。 模板定义无效。 |
playbook 定义中存在错误。 转到逻辑应用设计器以解决问题,然后保存 playbook。 |
Could not trigger playbook: <PlaybookName>。 访问控制配置限制 Microsoft Sentinel。 |
逻辑应用配置允许限制对触发 playbook 的访问。 此限制对该 playbook 有效。 请删除此限制,以便不阻止 Microsoft Sentinel。 了解详细信息 |
Could not trigger playbook: <PlaybookName>。 Microsoft Sentinel 缺少运行权限。 |
Microsoft Sentinel 需要运行 playbook 的权限。 |
Could not trigger playbook: <PlaybookName>。 Playbook 未迁移到新权限模型。 请向 Microsoft Sentinel 授予运行此 playbook 的权限并重新保存规则。 |
请向 Microsoft Sentinel 授予运行此 playbook 的权限并重新保存规则。 |
Could not trigger playbook: <PlaybookName>。 请求过多,超出工作流限制。 |
等待的工作流运行数已超过允许的最大限制。 请尝试增加触发器并发配置中 'maximumWaitingRuns' 的值。 |
Could not trigger playbook: <PlaybookName>。 请求过多,超出限制。 |
详细了解订阅和租户限制。 |
Could not trigger playbook: <PlaybookName>。 访问被禁止。 托管标识缺少配置或已设置逻辑应用网络限制。 |
如果 playbook 使用托管标识,请确保为托管标识分配了权限。 该 playbook 可能具有阻止其触发的网络限制规则,因为这些规则会阻止 Microsoft Sentinel 服务。 |
Could not trigger playbook: <PlaybookName>。 订阅或资源组已锁定。 |
请移除锁定以允许 Microsoft Sentinel 在锁定范围内触发 playbook。 详细了解锁定的资源。 |
Could not trigger playbook: <PlaybookName>。 调用方缺少对 playbook 所需的 playbook 触发权限,或者 Microsoft Sentinel 缺少对其的权限。 |
尝试按需触发 playbook 的用户缺少对 playbook 的逻辑应用参与者角色或无法触发 playbook。 了解详细信息 |
Could not trigger playbook: <PlaybookName>。 连接凭据无效。 |
在 Azure 门户的“API 连接”服务中检查连接使用的凭据。 |
Could not trigger playbook: <PlaybookName>。 Playbook ARM ID 无效。 |
全面了解自动化
Microsoft Sentinel 的运行状况监视表可跟踪 playbook 的触发,但若要监视 playbook 内部发生的情况及其运行时的结果,还必须在 Azure 逻辑应用中启用诊断以将以下事件引入到 AzureDiagnostics 表:
- {操作名称} 开始
- {操作名称} 结束
- 工作流(playbook)开始
- 工作流(playbook)结束
这些添加的事件将使你更深入地了解 playbook 中正在执行的操作。
启用 Azure 逻辑应用诊断
对于你有兴趣监视的每个 playbook,请为逻辑应用启用 Log Analytics。 确保选择“发送到 Log Analytics 工作区”作为日志目标,然后选择你的 Microsoft Sentinel 工作区。
关联 Microsoft Sentinel 和 Azure 逻辑应用日志
现在,你已经有了自动化规则和 playbook 的日志,以及工作区中各个逻辑应用工作流的日志,可以将它们关联起来以获取完整情况。 请考虑以下示例查询:
SentinelHealth
| where SentinelResourceType == "Automation rule"
| mv-expand TriggeredPlaybooks = ExtendedProperties.TriggeredPlaybooks
| extend runId = tostring(TriggeredPlaybooks.RunId)
| join (AzureDiagnostics
| where OperationName == "Microsoft.Logic/workflows/workflowRunCompleted"
| project
resource_runId_s,
playbookName = resource_workflowName_s,
playbookRunStatus = status_s)
on $left.runId == $right.resource_runId_s
| project
RecordId,
TimeGenerated,
AutomationRuleName= SentinelResourceName,
AutomationRuleStatus = Status,
Description,
workflowRunId = runId,
playbookName,
playbookRunStatus
使用“运行状况监视”工作簿
“自动化运行状况”工作簿可帮助你可视化运行状况数据,以及我们刚才提到的两种日志类型之间的相关性。 工作簿包含以下内容:
- 自动化规则运行状况和详细信息
- Playbook 触发器运行状况和详细信息
- Playbook 运行的运行状况和详细信息(需要在 playbook 级别启用 Azure 诊断)
- 每个事件的自动化详细信息
选择“通过自动化规则运行的 playbook”选项卡,查看 playbook 活动。
选择一个 playbook,在下面的向下钻取图表中查看其运行列表。
选择特定的运行以查看 playbook 中操作的结果。
后续步骤
- 了解 Microsoft Sentinel 中的审核和运行状况监视。
- 在 Microsoft Sentinel 中启用审核和运行状况监视。
- 监视数据连接器的运行状况。
- 监视分析规则的运行状况和完整性。
- 请参阅有关 SentinelHealth 和 SentinelAudit 表架构的更多信息。