我想编写一个 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)。
最佳答案
尝试一下这个策略定义:
"if": {
"allOf": [
{
"field": "tags",
"exists": "false"
},
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
}
]
},
"then": {
"effect": "deny"
}
注意:我必须等待几分钟才能使其正常工作。
关于Azure Arm策略拒绝没有标签的资源组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48216764/