Azure Policy配置问题:无法强制密钥保管库秘钥添加标签
问题解决:Azure Policy强制Key Vault秘钥添加标签失效
核心原因
Key Vault的秘钥(secrets)属于数据平面资源,你当前使用的mode: "All"仅覆盖Azure管理平面资源的操作,无法拦截数据平面的秘钥创建请求,因此策略不生效。而内置策略针对的是Key Vault本身(管理平面资源,类型Microsoft.KeyVault/vaults),所以能正常强制标签。
修改后的策略代码
将策略的mode改为Microsoft.KeyVault.Data,同时修正语法错误,调整后的完整策略如下:
{ "properties": { "displayName": "Require a tag on key vault secrets", "policyType": "Custom", "mode": "Microsoft.KeyVault.Data", "description": "Enforces existence of a tag on key vault secrets", "metadata": { "category": "Tags" }, "version": "1.0.0", "parameters": { "tagName": { "type": "String", "metadata": { "displayName": "Tag Name", "description": "Name of the tag, such as 'teamName'" } } }, "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.KeyVault/vaults/secrets" }, { "field": "[concat('tags[', parameters('tagName'), ']')]", "exists": "false" } ] }, "then": { "effect": "deny" } } }, "id": "<policy-definition-location>", "type": "Microsoft.Authorization/policyDefinitions", "name": "<name>", "systemData": { ... } }
关键修改点
- 模式调整:
mode: "Microsoft.KeyVault.Data"是专门针对Key Vault数据平面资源(秘钥、密钥、证书等)的策略模式,确保秘钥创建操作会被策略评估。 - 语法修正:移除了
metadata中category字段末尾的多余逗号,删除了自定义策略不需要的versions数组。
验证步骤
- 重新部署修改后的策略定义。
- 将策略分配到目标订阅/资源组。
- 尝试创建未添加指定标签的Key Vault秘钥,此时操作会被策略拒绝,符合预期。
内容的提问来源于stack exchange,提问作者Athanasius
相关产品推荐
相关产品推荐

