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

KQL中ipv4_is_in_range搭配datatable校验IP不生效的解决方法

错误原因

你当前写法的核心问题是误用了union运算符:

  • union的作用是纵向合并多个表的行,合并后的结果集中,来自SigninLogs的行不存在checkIP字段(值为空),来自srcIPs的行不存在IPAddress字段(值为空)
  • ipv4_is_in_range()接收到空参数时无法完成匹配判断,因此要么查询无结果,要么换用extend时会返回大量不符合要求的行
正确实现方案

要实现登录日志IP和自定义IP范围列表的批量匹配,有两种经过验证的可用写法:

  • 通用兼容写法(适配所有Kusto环境版本)
let srcIPs = datatable (checkIP:string) [
'127.0.0.1/24',
'8.8.8.8',
'1.1.1.1/16'
];
SigninLogs
// 为两表添加公共关联键实现笛卡尔积关联,让每条日志能匹配到所有待校验IP段
| extend joinKey = 1
| join kind=inner (srcIPs | extend joinKey = 1) on joinKey
// 过滤IP落在目标范围内的记录
| where ipv4_is_in_range(IPAddress, checkIP)
// 去重,避免同一条日志匹配多个IP段时出现重复结果
| distinct *
  • 高性能内置算子写法(适合IP范围列表条目较多的场景,执行效率更高)
let srcIPs = datatable (checkIP:string) [
'127.0.0.1/24',
'8.8.8.8',
'1.1.1.1/16'
];
SigninLogs
// 直接调用内置IP查找算子完成匹配,无需手动写关联逻辑
| evaluate ipv4_lookup(srcIPs, IPAddress, checkIP)

补充说明:如果待匹配的IP段包含IPv6地址,将对应函数替换为ipv6_is_in_range()或ipv6_lookup()即可,逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:06:10