Azure 资源策略的 RequestDisallowedByPolicy 错误
本文说明了 RequestDisallowedByPolicy 错误的原因,它还提供了此错误的解决方案。
症状
部署过程中,可能会收到阻止创建资源的 RequestDisallowedByPolicy 错误。 以下示例显示错误:
{
"statusCode": "Forbidden",
"serviceRequestId": null,
"statusMessage": "{\"error\":{\"code\":\"RequestDisallowedByPolicy\",\"message\":\"The resource action 'Microsoft.Network/publicIpAddresses/write' is disallowed by one or more policies. Policy identifier(s): '/subscriptions/{guid}/providers/Microsoft.Authorization/policyDefinitions/regionPolicyDefinition'.\"}}",
"responseBody": "{\"error\":{\"code\":\"RequestDisallowedByPolicy\",\"message\":\"The resource action 'Microsoft.Network/publicIpAddresses/write' is disallowed by one or more policies. Policy identifier(s): '/subscriptions/{guid}/providers/Microsoft.Authorization/policyDefinitions/regionPolicyDefinition'.\"}}"
}
疑难解答
若要检索有关阻止部署的策略的详细信息,请使用以下方法之一:
PowerShell
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
在 PowerShell 中,提供该策略标识符作为 Id
参数,检索有关阻止部署的策略的详细信息。
(Get-AzPolicyDefinition -Id "/subscriptions/{guid}/providers/Microsoft.Authorization/policyDefinitions/regionPolicyDefinition").Properties.policyRule | ConvertTo-Json
Azure CLI
在 Azure CLI 中,提供策略定义的名称:
# Get all the name and displayName collection with Azure CLI
az policy definition list --query '[*].{Name: name, DisplayName: displayName}' -o table
# Replace {regionPolicyAssignment} with the specific name showed on output of previous cmdlet, e.g. feedbf84-6b99-488c-acc2-71c829aa5ffc.
az policy definition show --name {regionPolicyAssignment}
解决方案
为了安全性和符合性,订阅管理员可能会分配限制资源部署方式的策略。 例如,订阅可能具有阻止创建公共 IP 地址、网络安全组、用户定义的路由或路由表的策略。 “症状”部分中的错误消息显示策略的名称。 要解决此问题,请查看资源策略,并确定如何部署符合这些策略的资源。
有关详细信息,请参阅以下文章: