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

无法调用自定义KQL函数?如何集中管理恶意IP数据表并复用

KQL查询语法错误解决方法

错误原因

in运算符要求传入标量值的集合(比如单个列的所有值),你直接传入了整个数据表maliciousIPs,导致KQL无法解析。

解决方法

方法1:修改查询条件,提取IP列值

这是最简单的修改方式,直接在in语句中提取函数返回表的IPAddress列:

let maliciousIPs = GetMaliciousIPs();
let signInsForIPs = AADSignInEventsBeta
| where Timestamp >= ago(30d)
| where IPAddress in (maliciousIPs | project IPAddress);

方法2:使用Join操作(适合大量IP场景)

当恶意IP数量较多时,join的性能优于in,推荐使用:

let maliciousIPs = GetMaliciousIPs();
AADSignInEventsBeta
| where Timestamp >= ago(30d)
| join kind=inner (maliciousIPs) on IPAddress
  • kind=inner会只保留匹配恶意IP的登录事件,符合你的需求。

方法3:调整函数返回格式(复用性更强)

修改GetMaliciousIPs函数,让它直接返回可用于in的动态数组:
首先重新创建/更新函数:

.create function GetMaliciousIPs() {
    datatable(IPAddress:string)
    [
        "62.86.18.86",
        "8.211.111.53",
        "14.178.141.190"
    ]
    | summarize make_list(IPAddress)
}

然后查询时使用:

let maliciousIPs = toscalar(GetMaliciousIPs());
let signInsForIPs = AADSignInEventsBeta
| where Timestamp >= ago(30d)
| where IPAddress in (maliciousIPs);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:57:15