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

Sentinel工作簿多参数带默认值的KQL查询构建及写法验证

多可选参数的Azure Sentinel工作簿KQL查询实现

你的写法是否正确?

你的查询整体逻辑是可行的,核心思路通过判断参数是否为空来决定是否应用过滤条件,完全符合"未输入参数返回全量数据、输入则按条件过滤"的需求,但存在几个细节需要优化:

  • format_ipv4仅支持IPv4地址,若用户输入IPv6会直接报错,建议替换为parse_ipv4_or_ipv6,同时兼容IPv4和IPv6类型
  • toint(dst_port_input)、toint(protocol_input)如果遇到非数字输入会返回null,导致对应过滤条件永远不匹配,可添加isint做前置校验,避免异常
  • 字段名需保持一致:你提到表列是protocol,但查询中用了proto,若实际表列是protocol,需修正该字段名

适配4个可选参数的优化KQL查询

以下是兼顾逻辑正确性和健壮性的查询写法,直接在where子句中整合参数判断,无需额外定义flag变量,更简洁易维护:

let src_ip_input = '{src_ip}';
let dst_ip_input = '{dst_ip}';
let dst_port_input = '{dst_port}';
let protocol_input = '{protocol}';

table('Flow_Events_CL')
| where 
    // 处理源IP可选过滤
    (isempty(src_ip_input) or src_ip == parse_ipv4_or_ipv6(src_ip_input))
    // 处理目的IP可选过滤
    and (isempty(dst_ip_input) or dst_ip == parse_ipv4_or_ipv6(dst_ip_input))
    // 处理目的端口可选过滤,先校验输入为数字
    and (isempty(dst_port_input) or (isint(dst_port_input) and dst_port == toint(dst_port_input)))
    // 处理协议可选过滤,先校验输入为数字
    and (isempty(protocol_input) or (isint(protocol_input) and protocol == toint(protocol_input)))
// 按小时聚合流量数量
| summarize count() by bin(TimeGenerated, 1h)

如果你的工作簿参数允许用户输入协议名称(如TCP、UDP)而非数字,可添加协议映射逻辑,示例如下:

let src_ip_input = '{src_ip}';
let dst_ip_input = '{dst_ip}';
let dst_port_input = '{dst_port}';
let protocol_input = '{protocol}';

// 协议名称转数字映射
let protocol_map = dynamic({"TCP":6, "UDP":17, "ICMP":1});
let protocol_value = case(
    isempty(protocol_input), -1,
    protocol_input in bag_keys(protocol_map), protocol_map[protocol_input],
    isint(protocol_input), toint(protocol_input),
    -1
);

table('Flow_Events_CL')
| where 
    (isempty(src_ip_input) or src_ip == parse_ipv4_or_ipv6(src_ip_input))
    and (isempty(dst_ip_input) or dst_ip == parse_ipv4_or_ipv6(dst_ip_input))
    and (isempty(dst_port_input) or (isint(dst_port_input) and dst_port == toint(dst_port_input)))
    and (protocol_value == -1 or protocol == protocol_value)
| summarize count() by bin(TimeGenerated, 1h)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 22:10:36