我想创建一个自定义 Azure Policy JSON,它可以读取 Azure 资源并确保它遵循我们的标准化命名约定。例如,我正在尝试为虚拟机、云服务和 Redis 缓存设置它。
{
"if": {
"allof": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
{
"not": {
"anyOf": [
{
"field": "name",
"match": "gz?????????#?##"
}
]
}
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
"if": {
"allof": [
{
"field": "type",
"equals": "Microsoft.ClassicCompute/domainNames"
},
{
"not": {
"anyOf": [
{
"field": "name",
"match": "GZ?-??????-??#-???-??????-###"
}
]
}
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
"if": {
"allof": [
{
"field": "type",
"equals": "Microsoft.Cache/Redis"
},
{
"not": {
"anyOf": [
{
"field": "name",
"match": "gz?????????#???###"
}
]
}
}
]
},
"then": {
"effect": "[parameters('effect')]"
}
}
我不认为 Azure 允许有多个 IF,就像我尝试设置它的方式一样。我想要它做的是:
如果资源是 VM 并且不符合该约定,则进行审核。如果资源是云服务并且不符合该约定,则进行审核。如果资源是 Redis 缓存并且不符合该约定,则进行审计。