首页 > 解决方案 > 天蓝色政策只允许创建特定标签

问题描述

我需要配置一个 azure 策略,以确保 azure 贡献者使用一组非常具体的“允许”标签创建资源。允许的标签示例:应用程序、所有者、环境、描述、团队

如果某些人创建资源并使用标签“env”,则该策略将启动并拒绝创建资源,因为“env”不是允许的标签之一。

这在天蓝色可能吗?

标签: azureazure-policy

解决方案


下面是一个策略规则示例,它要求您在分配范围内的所有资源上列出所有标签。(这可能太多了,测试一下就知道了)

"policyRule": {
  "if": {
        "anyOf": [      
            {
                "field": "tags['application']",
                "exists": false
            },
            {
                "field": "tags['owner']",
                "exists": false
            },
            {
                "field": "tags['environment']",
                "exists": false
            },
            {
                "field": "tags['description']",
                "exists": false
            },
            {
                "field": "tags['team']",
                "exists": false
            }
        ]   
  },
  "then": {
    "effect": "deny"
  }
}

这是一个将其缩小到资源类型的示例。只喜欢虚拟机。

"policyRule": {
  "if": {
    "allOf":[
        {
            "field": "type",
            "equals": "Microsoft.Compute/virtualMachines"
        },
        "anyOf": [      
            {
                "field": "tags['application']",
                "exists": false
            },
            {
                "field": "tags['owner']",
                "exists": false
            },
            {
                "field": "tags['environment']",
                "exists": false
            },
            {
                "field": "tags['description']",
                "exists": false
            },
            {
                "field": "tags['team']",
                "exists": false
            }
        ]      
    ]         
  },
  "then": {
    "effect": "deny"
  }
}

请参阅我对主要问题的评论。此策略可能过于严格,因为某些 Azure 资源具有内置的默认标记。这些标签也将遵守此合规规则,因此如果您在大型组织中实施此规则,请小心,您可能会无意中妨碍某些用户。

如果您想将其缩小到一个资源组,您可以在您的策略分配中执行此操作,但是如果您想在您的定义中执行此操作,您可以使用资源类型Microsoft.Resources/subscriptions/resourceGroups

另请查看 Azure 内置的其他一些与标签相关的策略。 https://docs.microsoft.com/en-us/azure/azure-resource-manager/management/tag-policies


推荐阅读