我想写一个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。)
答案 0 :(得分:2)
尝试使用此政策定义:
"if": {
"allOf": [
{
"field": "tags",
"exists": "false"
},
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
}
]
},
"then": {
"effect": "deny"
}
注意:我必须等待几分钟才能始终如一地工作。