如何在Azure中创建并应用强制标签策略 拦截无标签资源部署
强制要求资源带标签、拒绝无标签部署的Azure CLI操作指南
前提条件
- 已安装Azure CLI并通过
az login登录到目标订阅 - 当前账号拥有订阅级别的所有者或策略参与者权限
步骤1:创建自定义策略定义
运行以下命令直接创建符合要求的策略定义,仅作用于可索引资源,未携带标签的部署会被直接拦截:
az policy definition create --name "deny-untagged-indexed-resources" \ --display-name "Deny creation of indexable resources without tags" \ --description "Enforce all indexable resources to have at least one tag assigned for resource management and troubleshooting" \ --rules '{ "if": { "allOf": [ { "field": "tags", "exists": false }, { "field": "type", "notEquals": "Microsoft.Resources/subscriptions/resourceGroups" } ] }, "then": { "effect": "deny" } }' \ --mode Indexed
参数说明:
--mode Indexed限定策略仅作用于支持标签和位置的可索引资源,完全匹配需求- 上述规则默认排除了资源组的标签校验,如果你需要连资源组也强制加标签,直接删除
"field": "type", "notEquals": "Microsoft.Resources/subscriptions/resourceGroups"这一行即可
如果你需要强制指定必须存在的固定标签(比如
CostCenter、Owner等),可以把rules参数内的if块替换为以下内容,仅当资源缺少任意一个指定标签时才会拦截部署:"if": { "anyOf": [ { "field": "tags['CostCenter']", "exists": false }, { "field": "tags['Owner']", "exists": false } ] }
步骤2:将策略分配到目标订阅
策略定义创建完成后需要分配到对应范围才能生效,先获取当前订阅ID:
# 如果要操作非当前订阅,先执行az account set --subscription <订阅名称/ID>切换 subscription_id=$(az account show --query id --output tsv)
执行策略分配命令:
az policy assignment create --name "enforce-tags-subscription-assignment" \ --display-name "Enforce tag requirement for all resources in subscription" \ --policy "deny-untagged-indexed-resources" \ --scope "/subscriptions/$subscription_id" \ --enforcement-mode Default
参数说明:
--enforcement-mode Default表示策略直接生效,会真实拦截不符合要求的部署;如果需要先验证合规情况不拦截,可改为DoNotEnforce,此时只会生成合规性报告不会拒绝部署- 如果需要排除部分资源组不受该策略约束,可添加
--not-scopes "/subscriptions/$subscription_id/resourceGroups/<要排除的资源组名>"参数,多个排除项用空格分隔
步骤3:验证策略效果
你可以尝试部署一个不带标签的测试资源,部署请求会直接被策略拒绝,即代表配置生效。
如果需要查看当前订阅的合规性统计,可运行以下命令:
az policy state summarize --scope "/subscriptions/$subscription_id" --policy-definition-name "deny-untagged-indexed-resources"
注意事项
- 该策略仅拦截新的部署请求,不会处理已存在的无标签存量资源,如需批量给存量资源加标签可使用Azure资源管理器的批量操作功能
- 如有特殊资源类型不需要强制加标签,可在策略规则的
if块中添加对应资源类型的排除规则即可
内容的提问来源于stack exchange,提问作者Sam Bayo
相关产品推荐
相关产品推荐

