如何解决如果 IP 在范围列表中,则过滤它们
在 Kusto,我正在努力解决算法问题。我得到了很大的 IP 列表(Azure Monitor),以及要列入白名单的范围列表。如果 IP 在第二个列表的范围内,如何排除第一个列表的行?
当然我们会为此使用 e's
和 ipv4_is_in_range()
,但我不知道如何。
示例项目:
mv-apply
应该屈服:
let ranges_to_whitelist = "['127.0.0.1',10.0.0.0/28']";
let big_table_of_rows = datatable (ip_range: string) ['1.2.3.4','10.0.0.254','172.16.1.2','10.0.0.1'];
谢谢!
解决方法
如果我正确理解要求,您需要先将范围数组扩展到白名单(使用 mv-expand
或 mv-apply
),然后应用基于 ipv4_is_in_range()
的过滤器:
let ranges_to_whitelist = dynamic(['127.0.0.1','10.0.0.0/28']);
let big_table_of_rows = datatable (ip: string) ['1.2.3.4','10.0.0.254','172.16.1.2','10.0.0.1'];
big_table_of_rows
| mv-apply ip_range = ranges_to_whitelist to typeof(string) on (
where ipv4_is_in_range(ip,ip_range)
)
| project-away ip_range
ip |
---|
10.0.0.1 |
或者,对于相反的情况:
let ranges_to_whitelist = dynamic(['127.0.0.1','10.0.0.1'];
big_table_of_rows
| mv-apply ip_range = ranges_to_whitelist to typeof(string) on (
summarize countif(ipv4_is_in_range(ip,ip_range))
| where countif_ == 0
)
| project-away countif_
ip |
---|
1.2.3.4 |
10.0.0.254 |
172.16.1.2 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。