ポリシーによって許可されていない要求エラーを解決する

Azure Resource Manager テンプレート (ARM テンプレート) または Bicep ファイルをデプロイすると、デプロイするリソースの 1 つが既存の Azure Policy に準拠していない場合に RequestDisallowedByPolicy エラーが発生します。

症状

デプロイ中に、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"}

id 文字列の {guid} プレースホルダーは、Azure サブスクリプション ID を表します。 policyAssignment または policyDefinition の名前は、id 文字列の最後のセグメントです。

原因

組織は、組織の標準を適用し、コンプライアンスを大規模に評価するためのポリシーを割り当てます。 ポリシーに違反するリソースをデプロイしようとすると、デプロイはブロックされます。

たとえば、サブスクリプションに、ネットワーク インターフェイス上のパブリック IP を禁止するポリシーを設定できます。 パブリック IP アドレスを使用してネットワーク インターフェイスを作成しようとすると、ポリシーによってネットワーク インターフェイスの作成がブロックされます。

解決策

ARM テンプレートまたは Bicep ファイルをデプロイするときに RequestDisallowedByPolicy エラーを解決するには、デプロイをブロックしているポリシーを見つける必要があります。 そのポリシー内で、ポリシーに準拠するようにデプロイを更新できるよう、ルールを確認する必要があります。

エラー メッセージには、エラーの原因となったポリシー定義とポリシー割り当ての名前が含まれています。 ポリシーに関する詳細情報を取得するには、これらの名前が必要です。

ポリシー定義の詳細を取得するには、az policy definition show を使用します。

az policy definition show --name {policy-name}

ポリシー割り当ての詳細を取得するには、az policy assignment show を使用します。

az policy assignment show --name {assignment-name} --resource-group {resource-group-name}

ポリシー定義内に、ポリシーと適用される規則の説明が表示されています。 ルールを確認し、ARM テンプレートまたは Bicep ファイルを規則に準拠するように更新してください。 たとえば、規則で公衆ネットワーク アクセスが無効であると示されている場合は、対応するリソース プロパティを更新する必要があります。

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