监视分析规则的运行状况并审核其完整性
为了确保在 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 表中记录以下类型的分析规则运行状况事件:
计划分析规则运行。
NRT 分析规则运行。
有关详细信息,请参阅 SentinelHealth 表列架构。
以下类型的分析规则审核事件记录在 SentinelAudit 表中:
创建或更新分析规则。
已删除分析规则。
有关详细信息,请参阅 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
使用审核和运行状况监视工作簿
要使工作簿在工作区中可用,必须从 Microsoft Sentinel 内容中心安装工作簿解决方案:
在 Microsoft Sentinel 门户中,从“内容管理”菜单中选择“内容中心(预览版)”。
在“内容中心”的搜索栏中输入“运行状况”,然后在结果中“独立”下方的“工作簿”解决方案中选择“分析运行状况和审核”。
在详细信息窗格中选择“安装”,然后选择在此按钮原处出现的“保存”。
当解决方案指示它已安装时,从“威胁管理”菜单中选择“工作簿”。
在“工作簿”库中选择“模板”选项卡,在搜索栏中输入“运行状况”,然后从结果中选择“分析运行状况和审核”。
在详细信息窗格中选择“保存”以创建工作簿的可编辑且可用副本。 创建复制时,选择“查看保存的工作簿”。
进入工作簿后,首先选择要查看的订阅和工作区(可能已选择),然后定义 TimeRange 以根据需要筛选数据。 使用“显示帮助”开关显示工作簿的就地说明。
此工作簿中有三个选项卡式部分:
概述选项卡
“概述”选项卡显示运行状况和审核摘要:
- 所选工作区中分析规则运行状态的运行状况摘要:运行数量、成功和失败数量,以及失败事件的详细信息。
- 所选工作区中分析规则活动的审核摘要:不同时间的活动数量、按类型列出的活动数量,以及按规则列出的不同类型的活动数量。
“运行状况”选项卡
在“运行状况”选项卡中可以向下钻取特定的运行状况事件。
- 按状态(成功/失败)和规则类型(计划/NRT)筛选整个页面数据。
- 查看选定时间段内成功和/或失败的规则运行的趋势(根据状态筛选器查看)。 可以在趋势图中使用“时间刷”查看原始时间范围的子集。
- 按原因筛选页面的其余内容。
- 查看所有分析规则的运行总数(在饼图中按状态按比例显示)。
- 接下来的表显示运行的唯一分析规则数量,按规则类型和状态细分。
- 选择一种状态可以筛选该状态的剩余图表。
- 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。
- 查看每种状态以及该状态的可能原因数量。 (只会显示所选时间范围内运行中表示的原因。)
- 选择一种状态可以筛选该状态的剩余图表。
- 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。
- 接下来,查看这些原因的列表,以及规则运行总数和运行的唯一规则数。
- 选择一个原因以根据该原因筛选下面的图表。
- 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。
- 其后是运行的唯一分析规则列表,以及最新结果与成功和/或失败趋势线(根据选择用于筛选列表的状态显示)。
- 选择一个规则以向下钻取并显示一个新表,其中包含该规则的所有运行(在选定的时间范围内)。
- 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除该表。
- 如果在上面的列表中选择了一个规则,将显示一个新表,其中包含所选规则的运行状况详细信息。
“审核”选项卡
在“审核”选项卡中可以向下钻取特定的审核事件。
- 按审核规则类型(计划/融合)筛选整个页面数据。
- 查看选定时间段内分析规则的已审核活动趋势。 可以在趋势图中使用“时间刷”查看原始时间范围的子集。
- 查看已审核的事件数,按活动和规则类型细分。
- 选择一个活动以根据该活动筛选下面的图表。
- 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。
- 按规则名称查看已审核的事件数。
- 选择一个规则名称以根据该规则筛选下面的表,并向下钻取和显示一个新表,其中包含该规则的所有活动(在选定时间范围内)。 (参阅以下屏幕截图。)
- 通过选择图表右上角的“清除选择”图标(类似于“撤消”图标)来清除筛选器。
- 按调用方(执行活动的标识)查看已审核的事件数。
- 如果在上面所述的图表中选择了某个规则名称,则会出现另一个表,其中显示了该规则的已审核活动。 选择 ExtendedProperties 列中以链接形式显示的值以打开一个边侧面板,其中显示了对规则所做的更改。
后续步骤
- 了解 Microsoft Sentinel 中的审核和运行状况监视。
- 在 Microsoft Sentinel 中启用审核和运行状况监视。
- 监视自动化规则和 playbook 的运行状况。
- 监视数据连接器的运行状况。
- 请参阅有关 SentinelHealth 和 SentinelAudit 表架构的详细信息。