Azure策略检查是否为空值

问题描述 投票:0回答:1

我需要一个用于标记的 Azure 策略。我希望在创建资源组时,用户需要定义一个标签。该策略还应该检查tagvaule是不是空的。

我已经尝试了以下内容。

{
  "properties": {
    "displayName": "Require a tag Billto and a value that is not empty",
    "policyType": "Custom",
    "mode": "All",
    "description": "Enforces a required tag and its value on resource groups.",
    "metadata": {
      "category": "Tags",
    },
    "parameters": {
      "tagName": {
        "type": "String",
        "metadata": {
          "displayName": "Tag Name",
          "description": "Name of the tag, such as 'Billto'"
        }
      },
      "tagValue": {
        "type": "String",
        "metadata": {
          "displayName": "Tag Value",
          "description": "Value of the tag, such as 'Costcenter'"
        }
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
          },
          {
            "field": "[concat('tags[', parameters('tagName'), ']')]",
            "exists": "false"
          },
          {
            "value": "[concat('tags[', parameters('tagValue'), ']')]",
            "equals": ""
          }
        ]
      },
      "then": {
        "effect": "deny"
      }
    }
  }

谁能帮帮我,给我正确的代码? 谢谢,托马斯

azure tags policy notnull azure-policy
1个回答
0
投票

该策略定义将拒绝给定标签为空值或完全没有标签的资源组。

{
  "properties": {
    "mode": "All",
    "parameters": {
      "tagName": {
        "type": "String",
        "metadata": {
          "displayName": "Tag Name",
          "description": "Name of the tag, such as 'Billto'"
        }
      }
    },
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.Resources/subscriptions/resourceGroups"
          },
          {
            "anyOf": [
              {
                "field": "[concat('tags[', parameters('tagName'), ']')]",
                "exists": false
              },
              {
                "field": "[concat('tags[', parameters('tagName'), ']')]",
                "equals": ""
              }
            ]
          }
        ]
      },
      "then": {
        "effect": "deny"
      }
    }
  }
}

分解如下:

  1. parameters('tagName') 解析为参数tagName的值。在本例的其余部分,我们将使用 Billto 作为标签名称。
  2. "field": "[concat('tags[', parameters('tagName'), ']')]" 解析为 "field": "tags[Billto]"
  3. "field": "tags[Billto]" 会得到 价值Billto 标签。
  4. 如果资源没有一个 Billto 标签,该 Billto 标签不会有一个值,所以 "exists" : false 将是真实的,政策将拒绝。如果 Billto 标签的值为空,那么 "equals": "" 将是真实的,而政策将拒绝。
© www.soinside.com 2019 - 2024. All rights reserved.