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

为了确保在 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. 在“内容中心”的搜索栏中输入“运行状况”,然后在结果中“独立”下方的“工作簿”解决方案中选择“分析运行状况和审核”

      从内容中心选择分析运行状况工作簿的屏幕截图。

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

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

    指示已从内容中心安装分析运行状况工作簿解决方案的屏幕截图。

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

    从模板库中选择分析运行状况工作簿的屏幕截图。

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

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

    分析规则运行状况工作簿概述选项卡的屏幕截图。

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

概述选项卡

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

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

“运行状况”选项卡

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

在分析运行状况工作簿中选择运行状况选项卡的屏幕截图。

  • 按状态(成功/失败)和规则类型(计划/NRT)筛选整个页面数据。
  • 查看选定时间段内成功和/或失败的规则运行的趋势(根据状态筛选器查看)。 可以在趋势图中使用“时间刷”查看原始时间范围的子集。 分析运行状况工作簿中不同时间的分析规则运行的屏幕截图。
  • 按原因筛选页面的其余内容。
  • 查看所有分析规则的运行总数(在饼图中按状态按比例显示)。
  • 接下来的表显示运行的唯一分析规则数量,按规则类型和状态细分。
    • 选择一种状态可以筛选该状态的剩余图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 分析运行状况工作簿中按状态和类型列出的已运行规则数量的屏幕截图。
  • 查看每种状态以及该状态的可能原因数量。 (只会显示所选时间范围内运行中表示的原因。)
    • 选择一种状态可以筛选该状态的剩余图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 分析运行状况工作簿中按状态列出的唯一原因数量的屏幕截图。
  • 接下来,查看这些原因的列表,以及规则运行总数和运行的唯一规则数。
    • 选择一个原因以根据该原因筛选下面的图表。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。 分析运行状况工作簿中按唯一原因列出的规则运行的屏幕截图。
  • 其后是运行的唯一分析规则列表,以及最新结果与成功和/或失败趋势线(根据选择用于筛选列表的状态显示)。
    • 选择一个规则以向下钻取并显示一个新表,其中包含该规则的所有运行(在选定的时间范围内)。
    • 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除该表。 分析运行状况工作簿中运行的唯一规则列表以及状态和趋势线的屏幕截图。
  • 如果在上面的列表中选择了一个规则,将显示一个新表,其中包含所选规则的运行状况详细信息。 分析运行状况工作簿中所选分析规则的运行列表的屏幕截图。

“审核”选项卡

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

在分析运行状况工作簿中选择审核选项卡的屏幕截图。

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

后续步骤