azure-data-explorer - Kusto 中与静态数组的表条目比较
问题描述
我有一个多行多列的表,其中包含按用户名的登录事件。每行提供其他详细信息,例如时间、IP 地址、设备信息、位置信息等。我有另一个表,它是单行,包含多列 IPv4 范围(监视列表)。这些 IPv4 范围被认为是“恶意的”。我希望能够从 SigninLogs 表中返回数据,并将每行的 IP 地址元素与每个 IPv4 范围进行比较,以验证 IP 地址是否是“恶意”表中找到的任何 IP 范围的成员。如果此条件为真,我希望执行特定操作。对 IPv4 子网执行“范围”分析的函数是
ipv4_is_in_range(<IP Address>, <IP Range>)
我尝试了几种不同的方法,但都无济于事。这是我尝试过的策略示例:
let GetPackage = (v_IPAddress: string){
_GetWatchlist('Bad_IP_Ranges')
| summarize IPAddresses = make_list(pack_array(IPAddress))
| mv-apply IPAddresses on (
where ipv4_is_in_range(v_IPAddress, tostring(IPAddresses))
)
};
SigninLogs
| union AADNonInteractiveUserSignInLogs
| extend Malicious_IP = iff(GetPackage(IPAddress), IPAddress, "null")
| project TimeGenerated, Category, ResultType, ResultDescription, Identity, Malicious_IP, AppDisplayName
| order by TimeGenerated | take 1000
这给出了一个错误:
iff(): argument #1 must be a scalar expression
我知道它抱怨 GetPackage() 函数返回一个表格值,但如果 where 语句为真,我不知道如何强制 GetPackage() 函数只返回恶意 IP 地址。
解决方案
这里有几个新方法应该会有所帮助(请注意,它们仅在您使用 EngineV3 时可用):
推荐阅读
- javascript - 承诺解决了,但代码没有继续
- python - mysqlclient(setup.py)的构建轮...错误
- if-statement - 以多种模式闪烁 LED(嵌入式)
- ios - 表格视图错误中的文本字段委托:索引超出范围 swift
- autodesk-forge - Revit 输出压缩文件的设计自动化为空
- javascript - 将(随机)javascript数组项插入href
- google-api - YouTube 数据 API:从 Search.list 结果集中排除直播
- r - 如何根据某些条件优化粘贴单个/多个列名及其值
- javascript - 如何使用 jQuery 修复猫头鹰轮播问题
- google-cloud-spanner - 可以从 GCP Spanner 表中删除“INTERLEAVE IN PARENT”属性吗