将列表中的部分字符串与字段匹配
Match partial string from list with field
我正在尝试使用 Azure 中的日志 analytics/Sentinel 中的 Kusto 检查字段是否包含列表中的值。
该列表包含顶级域,但我只想匹配这些顶级域的子域。列表值 example.com 应与 forum.example.com 或 api.example.com.
等值匹配
我得到了以下代码,但它只进行完全匹配。
let domains = dynamic(["example.com", "amazon.com", "microsoft.com", "google.com"]);
DeviceNetworkEvents
| where RemoteUrl in~ (domains)
| project TimeGenerated, DeviceName, InitiatingProcessAccountUpn, RemoteUrl
我尝试使用 endswith,但无法让它与列表一起使用。
has_any() 似乎对你有用:
let domains = dynamic(["example.com", "amazon.com", "microsoft.com", "google.com"]);
DeviceNetworkEvents
| where RemoteUrl has_any(domains)
| project TimeGenerated, DeviceName, InitiatingProcessAccountUpn, RemoteUrl
请注意,您还可以使用 has_any_index() 来获取数组中匹配的项目
为了将 URL 与域列表正确匹配,您需要从这些域构建正则表达式,然后使用 matches regex
运算符。
确保正确构建正则表达式,以免出现以下情况:
- example.com.hacker.com
- hackerexample.com
- hacker.com/example.com
- 等等...
我正在尝试使用 Azure 中的日志 analytics/Sentinel 中的 Kusto 检查字段是否包含列表中的值。
该列表包含顶级域,但我只想匹配这些顶级域的子域。列表值 example.com 应与 forum.example.com 或 api.example.com.
等值匹配我得到了以下代码,但它只进行完全匹配。
let domains = dynamic(["example.com", "amazon.com", "microsoft.com", "google.com"]);
DeviceNetworkEvents
| where RemoteUrl in~ (domains)
| project TimeGenerated, DeviceName, InitiatingProcessAccountUpn, RemoteUrl
我尝试使用 endswith,但无法让它与列表一起使用。
has_any() 似乎对你有用:
let domains = dynamic(["example.com", "amazon.com", "microsoft.com", "google.com"]);
DeviceNetworkEvents
| where RemoteUrl has_any(domains)
| project TimeGenerated, DeviceName, InitiatingProcessAccountUpn, RemoteUrl
请注意,您还可以使用 has_any_index() 来获取数组中匹配的项目
为了将 URL 与域列表正确匹配,您需要从这些域构建正则表达式,然后使用 matches regex
运算符。
确保正确构建正则表达式,以免出现以下情况:
- example.com.hacker.com
- hackerexample.com
- hacker.com/example.com
- 等等...