监视分析规则的运行状况并审核其完整性

为了确保在 Microsoft Sentinel 服务进行全面、不间断且无篡改的威胁检测,请通过监视分析规则的执行见解以及查询运行状况和审核日志,跟踪分析规则的运行状况和完整性,使其保持最佳性能。

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

本文介绍如何使用 Microsoft Sentinel 的审核和运行状况监视功能在 Microsoft Sentinel 中跟踪分析规则的运行状况和完整性。

重要

SentinelHealth 和 SentinelAudit 数据表目前为预览版。 请参阅 Azure 预览版的补充使用条款,了解适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。

总结

  • Microsoft Sentinel 分析规则运行状况日志:

    • 此日志捕获记录分析规则运行的事件,以及这些运行的最终结果 - 成功还是失败,以及失败的原因。
    • 对于每次运行的分析规则,日志还会记录:
      • 规则的查询捕获了多少事件。
      • 事件数是否超过规则中定义的阈值,导致规则触发警报。

    这些日志收集在 Log Analytics 的 SentinelHealth 表中。

  • Microsoft Sentinel 分析规则审核日志:

    • 此日志捕获相应记录对任何分析规则所做的更改的事件,包括以下详细信息:
      • 已更改的规则的名称。
      • 更改了规则的哪些属性。
      • 更改前后的规则设置状态。
      • 做出更改的用户或标识。
      • 更改的源 IP 和日期/时间。
      • 等等。

    这些日志收集在 Log Analytics 的 SentinelAudit 表中。

使用 SentinelHealth 和 SentinelAudit 数据表(预览版)

若要从上述表中获取审核和运行状况数据,必须先为工作区启用 Microsoft Sentinel 运行状况功能。 有关详细信息,请参阅为 Microsoft Sentinel 启用审核和运行状况监视

启用运行状况功能后,会在为自动化规则和 playbook 生成的第一个成功或失败事件时创建 SentinelHealth 数据表。

了解 SentinelHealth 和 SentinelAudit 表事件

SentinelHealth 表中记录以下类型的分析规则运行状况事件:

以下类型的分析规则审核事件记录在 SentinelAudit 表中:

运行查询以检测运行状况和完整性问题

为了获得最佳结果,应对这些表上的“预生成函数”、_SentinelHealth() 和 _SentinelAudit() 生成查询,而不是直接查询表。 这些函数可确保在更改表本身的架构时保持查询的后向兼容性。

查询应首先筛选表以查找与分析规则相关的数据。 使用 SentinelResourceType 参数。

_SentinelHealth()
| where SentinelResourceType == "Analytics Rule"

如果需要,可以进一步筛选列表以查找特定类型的分析规则。 为此,请使用 SentinelResourceKind 参数。

| where SentinelResourceKind == "Scheduled"

# OR

| where SentinelResourceKind == "NRT"

下面是一些可帮助你入门的示例查询:

  • 查找未成功运行的规则:

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | where Status != "Success"
    
  • 查找已“自动禁用”的规则:

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | where Reason == "The analytics rule is disabled and was not executed."
    
  • 按原因计算成功或失败的规则和运行次数:

    _SentinelHealth()
    | where SentinelResourceType == "Analytics Rule"
    | summarize Occurrence=count(), Unique_rule=dcount(SentinelResourceId) by Status, Reason
    
  • 查找规则删除活动:

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | where Description =="Analytics rule deleted"
    
  • 按规则名称和活动名称查找与规则相关的活动:

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | summarize Count= count() by RuleName=SentinelResourceName, Activity=Description
    
  • 按调用方名称(执行该活动的标识)查找与规则相关的活动:

    _SentinelAudit()
    | where SentinelResourceType =="Analytic Rule"
    | extend Caller= tostring(ExtendedProperties.CallerName)
    | summarize Count = count() by Caller, Activity=Description
    

状态、错误和建议的步骤

对于“计划分析规则运行”或“NRT 分析规则运行”,你可能会看到以下任何状态和说明:

  • 成功:规则已成功执行,生成 <n> 警报。

  • 成功:规则已成功执行,但未达到生成警报所需的阈值 (<n>)。

  • 失败:这些是规则失败的可能说明,以及可对其执行的操作。

    说明 补救
    运行查询时发生内部服务器错误。
    查询执行超时。
    找不到查询中引用的表。 验证是否已连接相关数据源。
    运行查询期间发生语义错误。 尝试通过编辑和保存(无需更改任何设置)重置分析规则。
    查询调用的函数使用保留字命名。 删除或重命名函数。
    运行查询期间发生语法错误。 尝试通过编辑和保存(无需更改任何设置)重置分析规则。
    工作区不存在。
    发现此查询使用的系统资源过多,无法运行。 查看并优化分析规则。 请查看我们的 Kusto 查询语言概述最佳做法文档。
    找不到查询调用的函数。 验证工作区中是否存在查询调用的所有函数。
    找不到查询中使用的工作区。 验证查询中的所有工作区是否都存在。
    没有运行此查询的权限。 尝试通过编辑和保存(无需更改任何设置)重置分析规则。
    没有对查询中的一个或多个资源的访问权限。
    找不到查询引用的存储路径。
    查询被拒绝访问存储路径。
    此工作区中定义了多个具有相同名称的函数。 删除或重命名冗余函数,并通过编辑和保存重置规则。
    此查询未返回任何结果。
    此查询中不允许有多个结果集。
    查询结果包含的每行字段数不一致。
    由于数据引入时间较长,规则的运行延迟。
    规则的运行因临时问题而延迟。
    警报因临时问题未扩充。
    警报因实体映射问题未扩充。
    由于警报大小限制为 32 KB,在警报 <name> 中删除了 <number> 个实体。
    由于实体映射问题,在警报 <name> 中删除了 <number> 个实体。
    查询生成了 <number> 个事件,超过了具有每行警报事件分组配置的 <rule type> 规则允许的 <limit> 个结果的上限。 为前 <limit -1> 个事件生成了每行警报,并生成了一个额外的聚合警报来解释所有事件。
    - <number> = 查询返回的事件数
    - <limit> = 对于计划规则,当前为 150 个警报,对于 NRT 规则,则为 30 个
    - <rule type> =“计划”或 NRT

使用审核和运行状况监视工作簿

  1. 要使工作簿在工作区中可用,必须从 Microsoft Sentinel 内容中心安装工作簿解决方案:

    1. 在 Microsoft Sentinel 门户中,从“内容管理”菜单中选择“内容中心(预览版)”。

    2. 在“内容中心”的搜索栏中输入“运行状况”,然后在结果中“独立”下方的“工作簿”解决方案中选择“分析运行状况和审核”

      Screenshot of selection of analytics health workbook from content hub.

    3. 在详细信息窗格中选择“安装”,然后选择在此按钮原处出现的“保存”。

  2. 当解决方案指示它已安装时,从“威胁管理”菜单中选择“工作簿”。

    Screenshot of indication that analytics health workbook solution is installed from content hub.

  3. 在“工作簿”库中选择“模板”选项卡,在搜索栏中输入“运行状况”,然后从结果中选择“分析运行状况和审核”

    Screenshot of selecting analytics health workbook from template gallery.

  4. 在详细信息窗格中选择“保存”以创建工作簿的可编辑且可用副本。 创建复制时,选择“查看保存的工作簿”。

  5. 进入工作簿后,首先选择要查看的订阅和工作区(可能已选择),然后定义 TimeRange 以根据需要筛选数据。 使用“显示帮助”开关显示工作簿的就地说明。

    Screenshot of analytics rule health workbook overview tab.

此工作簿中有三个选项卡式部分:

概述选项卡

“概述”选项卡显示运行状况和审核摘要:

  • 所选工作区中分析规则运行状态的运行状况摘要:运行数量、成功和失败数量,以及失败事件的详细信息。
  • 所选工作区中分析规则活动的审核摘要:不同时间的活动数量、按类型列出的活动数量,以及按规则列出的不同类型的活动数量。

“运行状况”选项卡

在“运行状况”选项卡中可以向下钻取特定的运行状况事件。

Screenshot of selection of health tab in analytics health workbook.

  • 按状态(成功/失败)和规则类型(计划/NRT)筛选整个页面数据。
  • 查看选定时间段内成功和/或失败的规则运行的趋势(根据状态筛选器查看)。 可以在趋势图中使用“时间刷”查看原始时间范围的子集。 Screenshot of analytics rule runs over time in analytics health workbook.
  • 按原因筛选页面的其余内容。
  • 查看所有分析规则的运行总数(在饼图中按状态按比例显示)。
  • 接下来的表显示运行的唯一分析规则数量,按规则类型和状态细分。
    • 选择一种状态可以筛选该状态的剩余图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 Screenshot of number of rules run by status and type in the analytics health workbook.
  • 查看每种状态以及该状态的可能原因数量。 (只会显示所选时间范围内运行中表示的原因。)
    • 选择一种状态可以筛选该状态的剩余图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 Screenshot of number of unique reasons by status in analytics health workbook.
  • 接下来,查看这些原因的列表,以及规则运行总数和运行的唯一规则数。
    • 选择一个原因以根据该原因筛选下面的图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 Screenshot of rule runs by unique reason in analytics health workbook.
  • 其后是运行的唯一分析规则列表,以及最新结果与成功和/或失败趋势线(根据选择用于筛选列表的状态显示)。
    • 选择一个规则以向下钻取并显示一个新表,其中包含该规则的所有运行(在选定的时间范围内)。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除该表。 Screenshot of list of unique rules run, with status and trendlines, in analytics health workbook.
  • 如果在上面的列表中选择了一个规则,将显示一个新表,其中包含所选规则的运行状况详细信息。 Screenshot of list of runs of selected analytics rule, in analytics health workbook.

“审核”选项卡

在“审核”选项卡中可以向下钻取特定的审核事件。

Screenshot of selection of audit tab in analytics health workbook.

  • 按审核规则类型(计划/融合)筛选整个页面数据。
  • 查看选定时间段内分析规则的已审核活动趋势。 可以在趋势图中使用“时间刷”查看原始时间范围的子集。 Screenshot of trending audit activity in analytics health workbook.
  • 查看已审核的事件数,按活动和规则类型细分。
    • 选择一个活动以根据该活动筛选下面的图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 Screenshot of counts of audit events by activity and type in analytics health workbook.
  • 按规则名称查看已审核的事件数。
    • 选择一个规则名称以根据该规则筛选下面的表,并向下钻取和显示一个新表,其中包含该规则的所有活动(在选定时间范围内)。 (参阅以下屏幕截图。)
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 Screenshot of audited events by rule name and caller in analytics health workbook.
  • 按调用方(执行活动的标识)查看已审核的事件数。
  • 如果在上面所述的图表中选择了某个规则名称,则会出现另一个表,其中显示了该规则的已审核活动。 选择 ExtendedProperties 列中以链接形式显示的值以打开一个边侧面板,其中显示了对规则所做的更改。 Screenshot of audit activity for selected rule in analytics health workbook.

后续步骤