Resolver errores para la solicitud no permitida por la directiva

Al implementar una plantilla de Azure Resource Manager (plantilla de ARM) o un archivo de Bicep, obtendrá el error RequestDisallowedByPolicy cuando uno de los recursos que se van a implementar no cumple con una instancia de Azure Policy existente.

Síntoma

Durante una implementación, es posible que reciba un error RequestDisallowedByPolicy que le impida crear un recurso. La CLI de Azure, Azure PowerShell y el registro de actividad de Azure Portal muestran información similar sobre el error. Los elementos clave son el código de error, la asignación de directiva y la definición de directiva.

"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"}

En la cadena id, el marcador de posición {guid} representa un id. de suscripción de Azure. El nombre de un objeto policyAssignment o policyDefinition es el último segmento de la cadena id.

Causa

La organización asigna directivas para aplicar los estándares de la organización y evaluar el cumplimiento a gran escala. Si intenta implementar un recurso que infringe una directiva, la implementación se bloquea.

Por ejemplo, la suscripción puede tener una directiva que impida las direcciones IP públicas en las interfaces de red. Si intenta crear una interfaz de red con una dirección IP pública, la directiva le impide crear la interfaz de red.

Solución

Para resolver el error RequestDisallowedByPolicy al implementar una plantilla de ARM o un archivo de Bicep, debe encontrar qué directiva está bloqueando la implementación. Dentro de esa directiva, debe revisar las reglas para que pueda actualizar la implementación para cumplir con la directiva.

En el mensaje de error incluye los nombres de la definición de directiva y la asignación de directiva que han causado el error. Necesita estos nombres para obtener más información sobre la directiva.

Para obtener más información sobre una definición de directiva, use az policy definition show.

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

Para obtener más información sobre una asignación de directiva, use az policy assignment show.

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

Dentro de la definición de directiva, verá una descripción de la directiva y las reglas que se aplican. Revise las reglas y actualice la plantilla de ARM o el archivo de Bicep para cumplir las reglas. Por ejemplo, si la regla indica que el acceso a la red pública está deshabilitado, debe actualizar las propiedades de recursos correspondientes.

Para más información, consulte los siguientes artículos.