如何在Azure Sentinel工作簿中使用KQL创建各风险等级独立磁贴
解决方案
问题根因
你当前使用的KQL输出为单行多列的宽表结构,Azure Sentinel工作簿的磁贴默认绑定整个查询结果,因此无法直接拆分多列为独立磁贴。同时你代码中的count(条件)写法存在逻辑错误:count()函数会统计所有行,忽略条件判断的布尔结果,需要替换为countif()实现按条件计数。
步骤1:重写KQL为长表结构
将原来的宽表输出调整为每行对应一个风险等级的长表结构,优化后的查询如下:
InALogs_CL | summarize VeryHigh = countif(risk_level_s == "very-high" or risk_assessment_risk_level_s == "very-high"), High = countif(risk_level_s == "high" or risk_assessment_risk_level_s == "high"), Medium = countif(risk_level_s == "medium" or risk_assessment_risk_level_s == "medium"), Low = countif(risk_level_s == "low" or risk_assessment_risk_level_s == "low"), VeryLow = countif(risk_level_s == "very-low" or risk_assessment_risk_level_s == "very-low"), None = countif(risk_level_s == "none" or risk_assessment_risk_level_s == "none") // 把多列转为行结构 | evaluate pivot() | project RiskLevel = ColumnName, Count = Value
步骤2:配置独立磁贴
可选择以下任意一种方案实现需求:
方案1:批量拆分生成磁贴(推荐)
- 运行修改后的长表查询,可视化类型选择「磁贴」
- 在磁贴设置的「数据」选项卡中,找到「拆分依据」配置项,选择
RiskLevel列 - 系统会自动为每个风险等级生成独立磁贴,可单独调整每个磁贴的标题、配色、数值显示格式
方案2:单磁贴单独绑定查询
如果需要为每个磁贴单独配置筛选逻辑,可以为每个风险等级编写独立查询,例如极高风险磁贴的查询如下:
InALogs_CL | where risk_level_s == "very-high" or risk_assessment_risk_level_s == "very-high" | count
每个磁贴单独绑定对应等级的查询即可。
优化提示
可在磁贴设置中为不同风险等级配置对应警示色,比如极高风险配红色、高风险配橙色、中风险配黄色、低风险配绿色,提升可视化辨识度。
内容的提问来源于stack exchange,提问作者Shikhin Dahikar
相关产品推荐
相关产品推荐

