我希望显示监视列表中的匹配记录,其中给出了 IP 地址范围。 我正在使用一个函数来比较给定的 ip 地址是否属于某个范围: ipv4_is_in_range 我可以比较监视列表中的 IP 地址,但对于范围我有问题。
带有 IP 范围的监视列表具有以下结构: IP池,信息 134.238.0.0/16,德德德德
为了比较监视列表中的 IP 地址,我使用这样的查询并且它有效:
let watchlist = (_GetWatchlist('testl') | project IPAddress);
Azure Activity
| where CallerIpAddress in (watchlist)
然后我尝试重建此查询以使用上面提到的监视列表中的 IP 范围:
let watchlist = (_GetWatchlist('testl2') | project IPpool);
AzureActivity
| where (ipv4_is_in_range(CallerIpAddress, (watchlist))
而且它不起作用...
当然,当我将范围定义为字符串时,它可以工作:
let watchlist = (_GetWatchlist('testl2') | project IPpool);
AzureActivity
| where (ipv4_is_in_range(CallerIpAddress, "134.238.0.0/16")
我确信表达式数据有问题,或者逻辑有问题……我不是KQL高手。你能帮忙吗?
上面的用户是正确的,回复不应该被否决。它发布在微软的文档中。
我认为这是因为监视列表变量是 _list_of_multiple_IP_ranges,并且函数 ipv4_is_in_range 需要单个子网作为第二个参数。 (我知道我应该把它作为评论,而不是答案,但我的声誉不允许我)