Azure リソース ポリシーに関する RequestDisallowedByPolicy エラー
この記事では、RequestDisallowedByPolicy
エラーの原因について説明し、エラーの解決策を提供します。 このエラーは、Azure Resource Manager テンプレート (ARM テンプレート) または Bicep ファイルを使用してリソースをデプロイするときに発生する可能性があります。
症状
デプロイ中に、RequestDisallowedByPolicy
エラーを受け取り、リソースを作成できないことがあります。 Azure CLI、Azure PowerShell、Azure portal のアクティビティ ログには、エラーに関する同様の情報が表示されます。 主要な要素は、エラー コード、ポリシー割り当て、ポリシー定義です。
"statusMessage": "{"error":{"code":"RequestDisallowedByPolicy", "target":"examplenic1207",
"message":"Resource `examplenic1207` was disallowed by policy. Policy identifiers:
"policyAssignment":{"name":"Network interfaces should not have public IPs",
"id":"/subscriptions/{guid}/providers/Microsoft.Authorization/policyAssignments/1111aa2222bb3333cc4444dd"}
"policyDefinition":{"name":"Network interfaces should not have public IPs",
"id":"/subscriptions/{guid}/providers/Microsoft.Authorization/policyDefinitions/83a86a26-fd1f-447c-b59d-e51f44264114"}
policyAssignment
または policyDefinition
の名前は、id
文字列の最後のセグメントです。 {guid}
プレースホルダーは、Azure サブスクリプション ID を表します。
原因
この例では、管理者がパブリック IP アドレスを使用してネットワーク インターフェイスを作成しようとしたときにエラーが発生しました。 ポリシー割り当てにより、ネットワーク インターフェイスでのパブリック IP を防止する組み込みのポリシー定義を適用できます。
ポリシー割り当てまたはポリシー定義の名前を使用して、エラーの原因となったポリシーに関する詳細を取得できます。 このコマンド例では、入力にプレースホルダーを使用します。 たとえば、山かっこを含めて、<policy definition name>
をエラー メッセージの定義名に置き換えてください。
ポリシー定義の詳細を取得するには、az policy definition show を使用します。
defname=<policy definition name>
az policy definition show --name $defname
ポリシー割り当ての詳細を取得するには、az policy assignment show を使用します。
rg=<resource group name>
assignmentname=<policy assignment name>
az policy assignment show --name $assignmentname --resource-group $rg
解決策
セキュリティやコンプライアンスについて、サブスクリプション管理者はリソースのデプロイ方法を制限するポリシーを割り当てることができます。 たとえば、パブリック IP アドレス、ネットワーク セキュリティ グループ、ユーザー定義ルート、ルート テーブルの作成を禁止するポリシーなどです。
RequestDisallowedByPolicy
エラーを解決するには、リソース ポリシーを確認し、それらのポリシーに準拠しているリソースのデプロイ方法を決定します。 エラー メッセージには、ポリシー定義とポリシー割り当ての名前が表示されます。
詳細については、以下の記事を参照してください。