정책에서 허용하지 않는 요청에 대한 오류 해결

ARM 템플릿(Azure Resource Manager 템플릿) 또는 Bicep 파일을 배포할 때 배포할 리소스 중 하나가 기존 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 파일을 업데이트하여 규칙을 준수합니다. 예를 들어 규칙에 공용 네트워크 액세스가 비활성화되어 있다고 명시되어 있는 경우 해당 리소스 속성을 업데이트해야 합니다.

자세한 내용은 다음 문서를 참조하세요.