【发布时间】:2021-10-06 04:14:32
【问题描述】:
我有一个 azure 自定义策略,它会检查所有存储帐户,如果它们作为选定网络没有 VNet 和子网设置,它会根据我输入的参数去修改它们以进行 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 集成,即使我在创建时选择“所有网络”
-
如果我尝试手动将任何存储帐户更改为所有网络,UI 将很快恢复为 VNet 集成,因此它什么也不做,也不会给出错误消息。使用 powershell 会得到相同的结果。
这和我理解的修改效果有点矛盾,我认为修改效果不是强制性的,它只适用于存储帐户,如果你去补救
【问题讨论】:
-
这很奇怪。当您使用 Powershell 执行此操作时,您是使用 Powershell 命令还是从 UI 进行检查?我建议你使用私人导航器,它可能与cookie有关
标签: azure azure-policy