我创建了一个Azure策略,如果用户未使用键“ Env”或“ use”指定标签,我想拒绝创建资源组
但是当我用Env标签创建资源组时,它阻止了我,只有在我同时添加env和use标签时,它才允许我使用。
据我了解,天蓝色策略中的“ anyof”被用作“ OR”,但我的代码却没有同样的效果
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyof": [
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
}
]
},
"then": {
"effect": "deny"
}
}
根据克里斯的建议,我已经在标签名称和值上进行了研究,但这给了我政策上的错误,并且没有采用“不接受”
{
"mode": "all",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"not":{
{
"field": "tags.Env",
"equals" : "Prod"
},
{
"field": "tags.OS",
"equals" : "windows"
}
}
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {}
}
答案 0 :(得分:1)
现在,就像您提到的那样,该策略正在评估“ tags.Env不存在或tag.use不存在”。如果任何一个标签都不存在,您将被拒绝。
您要拒绝的是“ tags.Env不存在且tag.use不存在”。这意味着它们都丢失了,而这正是您要防止的。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
},
"then": {
"effect": "deny"
}
}