对资源组强制执行命名约定的Azure策略无效



我有以下非常基本的策略,旨在对新的资源组强制执行命名约定。

{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/resourceGroups"
},
{
"field": "name",
"notLike": "rg-*"
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {}
}

该策略是在订阅级别和policy enforcement = enabled分配的。没有排除,正如您从策略中看到的,效果设置为deny

然而,这项政策根本没有任何效果。我可以创建新的资源组,名称类似noncompliant。。。随意此外,我已经等了30多分钟才政策生效(实际上我等了24多小时(。

有趣的是,下面的策略会生效(几乎在分配后立即生效(,其中唯一的区别是对资源类型的比较。

{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Network/virtualNetworks"
},
{
"field": "name",
"notLike": "vnet-*"
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {}
}

我真的不明白这里出了什么问题。在我还没有遇到的政策背景下,资源组有什么特别的地方吗?

我通过查看一个处理资源组的内置策略找到了它。事实上,与之比较的字符串是错误的。以下策略有效。。。

{
"mode": "All",
"policyRule": {
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Resources/subscriptions/resourceGroups"
},
{
"field": "name",
"notLike": "rg-*"
}
]
},
"then": {
"effect": "deny"
}
},
"parameters": {}
}

如果有人正在寻找一个现成的交钥匙解决方案,请查看我的azure命名约定计划,它基本上是一组策略,用于执行微软的命名约定建议。

最新更新