Azure 策略修改效果
Azure policy modify effect
我有一个 Azure 自定义策略,它会检查所有存储帐户,如果没有 VNet 和子网设置为 selected 网络,它会根据参数修改它们以进行 VNet 集成我进入了。我输入的参数是一个子网信息数组如下
"allowedNetworks": {
"type": "array",
"metadata": {
"description": "The list of allowed virtual networks",
"displayName": "Allowed Networks"
},
"defaultValue": [
{
"id": "/subscriptions/xxx/resourceGroups/test3/providers/Microsoft.Network/virtualNetworks/rogertest3-vnet/subnets/default",
"action": "Allow",
"state": "Succeeded"
},
{
"id": "/subscriptions/xxx/resourceGroups/test3/providers/Microsoft.Network/virtualNetworks/rogertest3-vnet/subnets/AzureBastionSubnet",
"action": "Allow",
"state": "Succeeded"
}
]
}
效果如下
"then": {
"effect": "[parameters('effect')]",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules",
"value": "[parameters('allowednetworks')]"
},
{
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
"value": "Deny"
}
]
}
}
效果很好,但是围绕这个修改效果有一些行为我有点困惑。
如果我创建一个新的存储帐户,并且它属于此策略的范围。我注意到它会自动添加此 VNet 集成,即使我在创建时 select“所有网络”
如果我尝试手动将任何存储帐户更改为所有网络,UI 会很快恢复到 VNet 集成,因此它什么也没做,也不会给出错误消息。使用 powershell 会得到相同的结果。
这和我理解的修改效果有点矛盾,我觉得修改效果不是强制的,它只适用于存储帐户,如果你去修复
其实是有意设计的,刚发现。
Modify effect给出了这个想要的状态配置效果,所以当你创建东西的时候,policy会评估它,如果符合policy,Policy就会生效。
我有一个 Azure 自定义策略,它会检查所有存储帐户,如果没有 VNet 和子网设置为 selected 网络,它会根据参数修改它们以进行 VNet 集成我进入了。我输入的参数是一个子网信息数组如下
"allowedNetworks": {
"type": "array",
"metadata": {
"description": "The list of allowed virtual networks",
"displayName": "Allowed Networks"
},
"defaultValue": [
{
"id": "/subscriptions/xxx/resourceGroups/test3/providers/Microsoft.Network/virtualNetworks/rogertest3-vnet/subnets/default",
"action": "Allow",
"state": "Succeeded"
},
{
"id": "/subscriptions/xxx/resourceGroups/test3/providers/Microsoft.Network/virtualNetworks/rogertest3-vnet/subnets/AzureBastionSubnet",
"action": "Allow",
"state": "Succeeded"
}
]
}
效果如下
"then": {
"effect": "[parameters('effect')]",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/networkAcls.virtualNetworkRules",
"value": "[parameters('allowednetworks')]"
},
{
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
"value": "Deny"
}
]
}
}
效果很好,但是围绕这个修改效果有一些行为我有点困惑。
如果我创建一个新的存储帐户,并且它属于此策略的范围。我注意到它会自动添加此 VNet 集成,即使我在创建时 select“所有网络”
如果我尝试手动将任何存储帐户更改为所有网络,UI 会很快恢复到 VNet 集成,因此它什么也没做,也不会给出错误消息。使用 powershell 会得到相同的结果。
这和我理解的修改效果有点矛盾,我觉得修改效果不是强制的,它只适用于存储帐户,如果你去修复
其实是有意设计的,刚发现。 Modify effect给出了这个想要的状态配置效果,所以当你创建东西的时候,policy会评估它,如果符合policy,Policy就会生效。