具有预定义值的Azure策略标记

具有预定义值的Azure策略标记,azure,azure-resource-manager,azure-policy,Azure,Azure Resource Manager,Azure Policy,目前,我正在努力使用Azure策略。我想强制执行 特定标记及其值。(声音标准) 但是我想从预定义的集合中允许一个值 在创建过程中需要。例如 环境:(允许这些预定义值中的任何一个) 发展 试验 刺激 预处理 我用一些其他策略创建了一个计划,当我分配此计划时 它将仅强制选择的值,但不允许所有其他值 "properties": { "displayName": "Tag3", "policyType"

目前,我正在努力使用Azure策略。我想强制执行 特定标记及其值。(声音标准) 但是我想从预定义的集合中允许一个值 在创建过程中需要。例如

环境:(允许这些预定义值中的任何一个)

  • 发展
  • 试验
  • 刺激
  • 预处理
我用一些其他策略创建了一个计划,当我分配此计划时

它将仅强制选择的值,但不允许所有其他值

  "properties": {
    "displayName": "Tag3",
    "policyType": "Custom",
    "mode": "All",
    "metadata": {
    },
    "parameters": {
      "tags": {
        "type": "Array",
        "metadata": {
          "displayName": "Environment",
          "description": "The list of Environments"
        },
        "allowedValues": [
          "Test",
          "Dev",
          "PreProd",
          "Prod"
        ],
        "defaultValue": [
          "Prod"
        ]
      }
    },
    "policyRule": {
      "if": {
        "not": {
          "field": "tags",
          "in": "[parameters('tags')]"
        }
      },
      "then": {
        "effect": "deny"
      }
    }
  }

设置
defaultValue
而不设置
[]
。像这样:
“defaultValue”:“Prod”

有关更多详细信息,请参阅此项。

选项1:删除“defaultvalue”属性,并在分配策略时以“;”的形式提供所需值的列表单独列表:

Test;Dev;PreProd
选项2:将“defaultvalue”保留为数组,并填充所有允许的值:

"defaultvalue": [
          "Test",
          "Dev",
          "PreProd",
          "Prod"
        ]

谢谢Joey,但我在应用此策略时仍然遇到问题,只允许一个值,而不是所有数组。你知道吗?你确认你设置的“数组”是数组了吗。保存策略定义后,无法更改参数的type属性。由于type为string,因此在分配策略时只能设置一个值。如果分配了此策略,则仅允许范围内的资源。因此,如果您的类型是数组,情况就很奇怪了。有一个社区策略可以帮助您实现这一点,定义如下: