监视自动化规则和 playbook 的运行状况

为了确保 Microsoft Sentinel 服务中安全业务流程、自动化和响应操作的正常运行和性能,请通过监视自动化规则和 playbook 的执行日志来跟踪自动化规则和 playbook 的运行状况。

为相关利益干系人设置运行状况事件通知,以便其随后可以采取措施。 例如,定义并发送电子邮件,在票证系统中创建新票证等等。

本文介绍如何使用 Microsoft Sentinel 的运行状况监视功能在 Microsoft Sentinel 中跟踪自动化规则和 playbook 的运行状况。 有关详细信息,请参阅 Microsoft Sentinel 中的审核和运行状况监视

使用 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 表列架构

状态、错误和建议的步骤

对于“自动化规则运行”状态,可能显示以下状态

  • 成功:规则已成功执行,触发所有操作

  • 部分成功:规则已执行并触发了至少一个操作,但有些操作失败了

  • 失败:由于以下原因之一,自动化规则未运行任何操作

    • 条件评估失败。
    • 条件满足,但第一个操作失败。

对于“playbook 已触发”状态,可能显示以下状态

  • 成功:已成功触发 playbook

  • 失败:无法触发 playbook

    注意

    “成功”仅表示自动化规则已成功触发 playbook。 但不会告知 playbook 何时开始或结束、playbook 中操作的结果或 playbook 的最终结果。

    若要查找此信息,请查询逻辑应用诊断日志。 有关详细信息,请参阅获取完整的自动化图片

错误说明和建议的操作

错误说明 建议的操作
Could not add task: <TaskName>
找不到事件/警报。
确保事件/警报存在,然后重试。
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

后续步骤