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 エラーを解決するには、リソース ポリシーを確認し、それらのポリシーに準拠しているリソースのデプロイ方法を決定します。 エラー メッセージには、ポリシー定義とポリシー割り当ての名前が表示されます。

詳細については、以下の記事を参照してください。