如何用KQL在MS Sentinel中查询未关联事件的SecurityAlert完整记录
解决方法
原代码问题分析
toscalar()仅返回单个标量值,无法提取所有警报ID的集合,这是你只得到一个ID的核心原因- 表名拼写错误:误用了不存在的
SecurityAlerts,正确表名为SecurityAlert - 针对数组类型的
AlertIDs,直接使用contains无法正确匹配,需先展开数组提取所有关联的警报ID
正确KQL查询语句
// 提取所有已关联到事件的警报ID集合 let AssociatedAlertIDs = SecurityIncident | mv-expand AlertIDs to typeof(string) // 展开数组,将每个AlertID转为单独行 | project AlertID = tostring(AlertIDs) // 确保ID为字符串类型,匹配SecurityAlert的SystemAlertId | distinct AlertID; // 去重,得到唯一的已关联ID集合 // 筛选SecurityAlert中未关联到事件的完整记录 SecurityAlert | where SystemAlertId !in (AssociatedAlertIDs) // 若需要调整输出字段,可添加project语句,例如:| project SystemAlertId, AlertName, Severity
关键逻辑说明
mv-expand:将SecurityIncident中数组类型的AlertIDs拆分成多行,每行对应一个独立的警报ID,解决数组无法直接匹配的问题distinct AlertID:去除重复的关联警报ID,避免重复判断!in:判断SystemAlertId是否不在已关联的ID集合中,精准筛选出未关联的警报记录
内容的提问来源于stack exchange,提问作者Max V Z
相关产品推荐
相关产品推荐

