azure arm策略拒绝没有标签的资源组

时间:2018-01-11 22:21:58

标签: azure azure-resource-manager

我想写一个Azure ARM策略,如果他们没有标签,就拒绝创建资源组。这是我目前的政策规则:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-10-01-preview/policyDefinition.json",
  "if": {
    "allOf": [
      {
        "field": "tags",
        "exists": false
      },
      {
        "field": "type",
        "like": "resourceGroup*"
      }
    ]
  },
  "then": {
    "effect": "deny"
  }
} 

这并不会阻止在没有标签的情况下创建RG。

如果我将策略规则更改为:

{
  "$schema": "http://schema.management.azure.com/schemas/2015-10-01-preview/policyDefinition.json",
  "if": {
        "field": "tags",
        "exists": false
      },
  "then": {
    "effect": "deny"
  }
} 

如果所有资源(包括RG)没有标签,则会被拒绝。

所以我得出结论,"字段类型的一部分就像资源组*"条件,但我找不到正确的语法,使其按照我想要的方式工作。

这是可能的,正确的语法是什么?

(我之所以不关心是否创建了没有标签的其他资源类型,我们有一个Azure自动化Runbook,它抓取RG的标签,然后将这些应用到子资源 - 这也是我的原因想要确保人们首先用标签创建父RG。)

1 个答案:

答案 0 :(得分:2)

尝试使用此政策定义:

    "if": {
      "allOf": [
        {
          "field": "tags",
          "exists": "false"
        },
        {
          "field": "type",
          "equals": "Microsoft.Resources/subscriptions/resourceGroups"
        }
      ]
    },
    "then": {
      "effect": "deny"
    }

注意:我必须等待几分钟才能始终如一地工作。