解決要求不受原則允許的錯誤

部署 Azure Resource Manager 範本 (ARM 範本) 或 Bicep 檔案時,若有任一要部署的資源不符合現有 Azure 原則,就會收到 RequestDisallowedByPolicy 錯誤。

徵兆

在部署期間,您可能會收到 RequestDisallowedByPolicy 錯誤,導致無法建立資源。 Azure CLI、Azure PowerShell 和 Azure 入口網站的活動記錄檔會顯示與錯誤相關的資訊。 主要元素是錯誤碼、原則指派和原則定義。

"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 訂閱識別碼。 policyAssignmentpolicyDefinition 的名稱是 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 檔案。 例如,如果規則表示已停用公用網路存取,則您必須更新對應的資源屬性。

如需詳細資訊,請參閱下列文章: