【Azure Policy】借助 Azure Resource Graph 查询策略分配、符合性状态以及策略定义

简介: 本文介绍如何通过Azure Resource Graph使用KQL查询,批量导出Azure Policy的策略分配、不合规资源统计及策略定义详情,弥补门户无直接导出功能的不足,助力合规分析与治理优化。

问题描述

在 Azure 平台中,当使用Azure Policy配置了非常多的策略定义时,想快速了解这些策略对资源创建的影响和限制,并批量导出策略的方法。Azure Policy 门户确没有直接的导出功能,所以只好借助 Azure Resource Graph 查询策略分配、符合性状态以及策略定义的详细信息,实现导出的目的。


 

问题解答

Azure Policy 本身不提供批量导出按钮,但可以通过 Azure Resource Graph Explorer 编写 KQL 查询,获取策略相关数据并导出为 CSV 文件。

本文中提供了三类核心查询语句,分别用于 策略分配信息、不合规资源统计 和 策略定义详情。这些查询不仅能帮助快速定位策略影响,还能支持后续合规性分析和治理优化。

 

查询语句一:获取所有已分配策略(Policy Assignments)

KQL 语句

policyresources
| where type == "microsoft.authorization/policyassignments"
| project 
    assignmentName = name, 
    scope = tostring(properties.scope),  // 分配范围(订阅/资源组)
    policyDefinitionId = tostring(properties.policyDefinitionId), // 关联的策略定义ID
    displayName = tostring(properties.displayName),
    enforcementMode = tostring(properties.enforcementMode),// 执行模式(Enabled/Disabled)
    assignedBy = tostring(properties.metadata.assignedBy),  // 分配操作人
    createdBy = tostring(properties.metadata.createdBy)     // 创建者(服务主体/用户ID)
| order by scope asc


介绍

该查询用于列出当前 Azure 环境中所有已分配的策略,包括策略名称、分配范围(订阅或资源组)、关联的策略定义 ID、显示名称、执行模式(Enabled/Disabled)、分配人和创建者信息。

通过这些字段,管理员可以快速了解策略的应用范围和责任人,便于后续治理和审计。

查询结果可导出为 CSV 文件,支持进一步分析或归档。

 

查询语句二:统计不合规资源数量

KQL 语句


policyresources
| where type == "microsoft.policyinsights/policystates"
| where properties.complianceState == "NonCompliant"  
| summarize blockedCount=count() by 
    policyDefinitionName = tostring(properties.policyDefinitionName), 
    resourceType = tostring(properties.resourceType)
| order by blockedCount desc


介绍

该查询用于统计所有处于“不合规”状态的资源数量,并按策略名称和资源类型分组排序。

管理员可以快速识别哪些策略导致最多的合规性问题,帮助优先处理高影响策略。通过 blockedCount 字段,可以量化策略的影响范围,结合资源类型信息,制定针对性的整改计划。

此查询非常适合用于合规性报告和治理优化。

 

查询语句三:获取策略定义详情

KQL 语句

policyresources
| where type == "microsoft.authorization/policydefinitions"  // 筛选策略定义资源类型
| extend 
    policyDefinitionId = id, 
    displayName = tostring(properties.displayName),  // 策略显示名称
    description = tostring(properties.description),  // 策略描述
    effectType = tostring(properties.policyRule.then.effect)  // 策略效果(deny/audit| project 
    properties,
    name,  
    policyDefinitionId,
    displayName,
    description,
    effectType,  
    category = tostring(properties.metadata.category)  
| order by category asc

 

介绍

该查询用于获取策略定义的详细信息,包括策略 ID、显示名称、描述、策略效果(如 deny、audit)以及分类。

通过这些信息,管理员可以全面了解策略的功能和用途,便于策略优化和分类管理。结合 category 字段,可以按策略类别进行排序,快速定位特定类型的策略(如安全、网络、合规)。

此查询适用于策略库维护和治理策略审查场景

 

参考资料

使用 Azure 门户运行 Resource Graph 查询 : https://learn.microsoft.com/azure/governance/resource-graph/first-query-portal

Azure Resource Graph sample queries for Azure Policy : https://learn.microsoft.com/azure/governance/policy/samples/resource-graph-samples

Azure Policy 文档 : https://learn.microsoft.com/azure/governance/policy/



当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
8月前
|
机器学习/深度学习 数据采集 自然语言处理
基于深度学习+NLP豆瓣电影数据爬虫可视化推荐系统
本研究构建基于深度学习与NLP的豆瓣电影数据系统,融合LSTM、BERT与CNN技术,实现高效爬取、情感分析、个性化推荐与动态可视化,提升影视数据分析效率与推荐精准度,推动产业智能化升级。
|
8月前
|
存储 运维 安全
【Azure App Service】部署在应用服务上的WebJob中,为何会多出一个名为"DaaS"的 WebJob呢?
Azure App Service 中的“DaaS”WebJob是平台内置诊断工具(Diagnostics as a Service),用于性能分析、故障排查和自动化诊断。它仅在触发诊断时运行,平时不占用资源,删除后会自动重建,保留安全且不影响应用性能。
256 4
|
8月前
|
缓存 NoSQL 关系型数据库
优惠券功能设计与实现
本文从底层逻辑出发,全面拆解优惠券功能的核心设计要点,结合JDK17、MyBatis-Plus、MySQL8.0等最新稳定技术栈,提供全量可编译运行的实现代码,帮助开发者快速掌握从需求分析到落地部署的完整流程。
810 4
|
8月前
|
机器学习/深度学习 人工智能 自然语言处理
NeurIPS 2025 | Code Graph Model (CGM):图融合架构重塑代码大模型,探索AI代码研发新范式
代码图模型(CGM)通过专用适配器将仓库代码图集成到LLM的注意力机制中,在 SWE-Bench Lite 基准上实现了44.00%的问题解决率,相比先前开源方法提升了12.33%
1065 9
|
4月前
|
前端开发 应用服务中间件 Linux
【Azure App Service】PHP页面上传文件413错误的解决方案
在使用 Azure App Service(Linux + PHP) 部署 Web 应用时,如果上传文件大于1MB,就会遇到 HTTP 413(Request Entity Too Large) 错误。 # 问题解答 ### 一、HTTP 413 错误的本质含义 413 Request Entity Too Large 是标准 HTTP 状态码,表示: > 客户端提交的请求体(Request Body)大小超过了服务器当前允许的最大限制。 在 Azure App Service(Linux)环境中,这个错误并不一定来自前端网关(Frontend),而更常见的来源是 App...
1465 13
|
4月前
|
人工智能 监控 网络协议
【App Service】常规排查 App Service 启动 Application Insights 无数据的步骤 (.NET版本)
本文详解Application Insights在Azure App Service中无日志数据的三大原因及排查方法:1)网络连通性(验证到AI端点的443端口访问);2)w3wp.exe进程是否成功加载AI模块;3)DLL冲突(检查并移除重复的Microsoft.ApplicationInsights等组件)。
207 10
|
8月前
|
存储 安全 数据安全/隐私保护
Joplin:一款真正属于你的开源笔记与待办事项应用
Joplin是一款免费开源的笔记工具,支持Markdown、多端同步与端到端加密,保障数据自主权。支持全平台使用,可同步至云存储,真正实现隐私安全与知识自由管理,是信息时代的理想笔记伴侣。(239字)
1891 13
|
9月前
|
监控 应用服务中间件 API
Agentic 应用时代,Dify 全链路可观测最佳实践
本文讲述 Dify 平台在 Agentic 应用开发中面临的可观测性挑战,从开发者与运维方双重视角出发,系统分析了当前 Dify 可观测能力的现状、局限与改进方向
1068 18
Agentic 应用时代,Dify 全链路可观测最佳实践
|
9月前
|
机器人 数据挖掘 API
一个销售数据分析机器人的诞生:看 Dify 如何在 DMS 助力下实现自动化闭环
Dify 作为一款低代码 AI 应用开发平台,凭借其直观的可视化工作流编排能力,极大降低了大模型应用的开发门槛。
848 22
一个销售数据分析机器人的诞生:看 Dify 如何在 DMS 助力下实现自动化闭环