我想创建一个具有拒绝效果的天蓝色策略,以防止从虚拟机中删除用户分配的身份的操作不起作用,但我无法这样做,因为我们正在使用 terraform 创建虚拟机,我将在此处分配身份,这策略正在限制创建,意味着创建虚拟机时拒绝操作生效。这项新策略正在阻止创建 VM。我们需要逻辑,以便它不会阻止创建 VM 并在已存在的 VM 上强制执行,并且应仅在修改或单独 PUT 请求期间触发。 我也尝试过使用 PUT 方法 - 这样我可以通过 terraform 创建虚拟机,但如果我尝试从虚拟机中删除用户分配的身份,它将成功完成此操作。 我想知道这个案例可行吗?
{
"if": {
"allOf": [
{
"field": "type",
"equals": "Microsoft.Compute/virtualMachines"
},
{
"field": "tags['network_environment']",
"in": "[parameters('allowedEnvironments')]"
}
]
},
"then": {
"effect": "deny"
"details": {
"type": "Microsoft.Compute/virtualMachines",
"existenceCondition": {
"allOf": [
{
"not": {
"field": "identity.type",
"contains": "UserAssigned"
}
},
{
"not": {
"field": "identity.userAssignedIdentities",
"containsKey": "[parameters('userAssignedIdentityResourceId')]"
}
}
]
}
}
}
}
天蓝色政策 |拒绝从虚拟机中删除用户分配的身份的操作不起作用
Azure Policy 不支持 PUT 和 POST 等 HTTP 触发器。因此,无法允许使用用户分配的托管身份创建 VM,同时阻止将 UAMI 分配给现有 VM
ExistenceCondition
仅适用于具有AuditIfNotExists和DeployIfNotExists不拒绝操作的策略效果,请按照Deep的Stack链接操作。
或者,您可以使用 Azure 策略中的排除 绕过特定资源组的策略。这允许使用用户分配的托管身份 (UAMI) 创建指定资源组中的资源,同时仍然阻止从其他资源组中的资源中删除 UAMI
我创建了一个策略来阻止将 UAM 分配给虚拟机,但它也阻止通过任何方法(包括代码)创建虚拟机
创建或修改资源时,Azure 对这两个操作都使用 PUT 操作。因此,不可能允许使用用户分配的托管身份创建 VM 并阻止从现有 VM 中删除 UAM。