Azure Policy 拒绝:如果资源组名称中不存在标记之一
Azure Policy Deny :if one of the tag not present in the resource group name
我已经创建了一个 Azure Policy,如果用户没有使用键 "Env" 或 "use"
指定标签,我想拒绝创建资源组
但是当我使用 Env 标签创建资源组时它阻止了我,它只允许我同时添加 env 和 use 标签。
根据我的理解 "anyof" 在 Azure 策略中用作 "OR" 但我的代码表现不一样 wa
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyof": [
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
}
]
},
"then": {
"effect": "deny"
}
}
根据 Chris 的建议,我已经对标签名称和值进行了处理,但它在策略中给我一个错误并且它没有采用 "NOT"
{
"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": {}
}
现在,正如您提到的,政策正在评估 "tags.Env doesn't exist OR tags.use doesn't exist"。如果任何一个标签都不存在,您将被拒绝。
你想要的是否认"tags.Env doesn't exist AND tags.use doesn't exist"。这意味着它们都丢失了,而这正是您要避免的。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
},
"then": {
"effect": "deny"
}
}
我已经创建了一个 Azure Policy,如果用户没有使用键 "Env" 或 "use"
指定标签,我想拒绝创建资源组但是当我使用 Env 标签创建资源组时它阻止了我,它只允许我同时添加 env 和 use 标签。
根据我的理解 "anyof" 在 Azure 策略中用作 "OR" 但我的代码表现不一样 wa
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"anyof": [
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
}
]
},
"then": {
"effect": "deny"
}
}
根据 Chris 的建议,我已经对标签名称和值进行了处理,但它在策略中给我一个错误并且它没有采用 "NOT"
{
"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": {}
}
现在,正如您提到的,政策正在评估 "tags.Env doesn't exist OR tags.use doesn't exist"。如果任何一个标签都不存在,您将被拒绝。
你想要的是否认"tags.Env doesn't exist AND tags.use doesn't exist"。这意味着它们都丢失了,而这正是您要避免的。
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "tags.Env",
"exists": false
},
{
"field": "tags.use",
"exists": false
}
]
},
"then": {
"effect": "deny"
}
}