You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Sentinel中KQL查询:基于IP段监视列表匹配IP记录问题

解决KQL中IP段监视列表匹配问题

问题核心是参数类型不匹配:ipv4_is_in_range函数的第二个参数要求是单个CIDR格式的字符串,但你直接传入的watchlist是包含多行IP段的表,KQL无法将表作为该函数的输入参数,导致查询失效。

以下是两种可行的解决方案:

方案1:使用exists子查询

通过子查询检查当前AzureActivity记录的IP是否匹配监视列表中的任意一个IP段:

let watchlist = _GetWatchlist('testl2') | project IPpool;
AzureActivity
| where exists (
    watchlist
    | where ipv4_is_in_range(AzureActivity.CallerIpAddress, IPpool)
)

方案2:将IP段转为动态数组后用any遍历检查

先把监视列表中的所有IP段合并为一个动态数组,再遍历数组中的每个段进行匹配:

let watchlist = _GetWatchlist('testl2') | summarize ip_ranges = make_list(IPpool);
AzureActivity
| where watchlist.ip_ranges has_any (x => ipv4_is_in_range(CallerIpAddress, x))

补充说明

  • 单个IP查询能用in是因为in运算符支持接收表作为输入,而ipv4_is_in_range不支持,这是两者的本质区别。
  • 需确保监视列表中的IPpool列存储的是标准CIDR格式字符串(如134.238.0.0/16),格式错误会导致匹配失败。

内容的提问来源于stack exchange,提问作者Marcel Kogucik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:15:34