编辑Azure Policy默认拒绝模板时遇'tagName1'不允许错误,求排查
Azure Policy标签拒绝规则错误排查与修复
核心错误点
- 参数定义语法不合法:原代码中
tagName的参数对象未正确闭合},导致tagName1被错误嵌套在tagName的定义内,直接触发'tagName1'不允许的语法错误。 - 标签判断逻辑错误:尝试通过一次
concat拼接两个标签参数生成字段路径的写法完全错误,会生成类似tags[tagNameValuetagName1Value]的无效字段表达式,无法正确检测标签是否存在。
修正后的完整Policy代码
{ "mode": "All", "policyRule": { "if": { "allOf": [ { "field": "type", "equals": "Microsoft.Resources/subscriptions/resourceGroups" }, { "field": "[concat('tags[', parameters('tagName'), ']')]", "exists": "false" }, { "field": "[concat('tags[', parameters('tagName1'), ']')]", "exists": "false" } ] }, "then": { "effect": "deny" } }, "parameters": { "tagName": { "type": "String", "metadata": { "displayName": "Tag Name", "description": "Name of the tag, such as 'environment'" } }, "tagName1": { "type": "String", "metadata": { "displayName": "Project", "description": "Name of the tag, such as 'ProjectX'" } } } }
说明
- 修复了参数定义的语法问题,给
tagName参数添加了闭合},让tagName1成为独立的顶层参数。 - 拆分了标签存在性判断逻辑,分别对
tagName和tagName1对应的标签添加exists检查,确保两个标签都不存在时才触发拒绝效果(如果需要任意一个不存在就拒绝,把allOf改成anyOf即可)。
内容的提问来源于stack exchange,提问作者user770022
相关产品推荐
相关产品推荐

