Solucionar problemas de errores del entorno de ejecución de políticas de AccessControl

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

IPDeniedAccess

Código de error

accesscontrol.IPDeniedAccess

Cuerpo de respuesta de error

{
    "fault": {
        "faultstring": "Access Denied for client ip : client_IP",
        "detail": {
            "errorcode": "accesscontrol.IPDeniedAccess"
        }
    }
}

Ejemplo de mensaje de error

{
    "fault": {
        "faultstring": "Access Denied for client ip : 104.132.196.83",
        "detail": {
            "errorcode": "accesscontrol.IPDeniedAccess"
        }
    }
}

Causa

Este error se produce si la dirección IP del cliente o cualquier dirección IP que se haya enviado como parte de la solicitud de la API coincide con alguna de las direcciones IP especificadas en el elemento <SourceAddress> del elemento <MatchRule> de la política de control de acceso y el atributo action del elemento <MatchRule> tiene el valor DENY.

Por ejemplo, supongamos que <SourceAddress> se define como se muestra a continuación:

<SourceAddress mask="32">104.132.196.83</SourceAddress>

Si la dirección IP anterior coincide con la dirección IP del sistema cliente (indicada por la variable proxy.client.ip) o con alguna de las direcciones IP enviadas como parte de la solicitud a la API, se producirá el error.

Diagnóstico

  1. Identifica las direcciones IP a las que se ha denegado el acceso para una solicitud de API específica. Puede encontrar esta información en el elemento faultstring de la respuesta de error.

    Por ejemplo, en el siguiente faultstring, la dirección IP es 104.132.196.83:.

    "faultstring": "Access Denied for client ip : 104.132.196.83"
    
  2. Examina todas las políticas de control de acceso del proxy de API que ha fallado y determina la política específica en la que las direcciones IP especificadas en el elemento <SourceAddress> coinciden con las direcciones IP identificadas en el elemento faultstring (paso 1 anterior).

    Por ejemplo, la siguiente política define la IP <SourceAddress> como 104.132.196.83,, que coincide con lo que hay en faultstring:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <AccessControl async="false" continueOnError="false" enabled="true" name="Access-Control">
        <DisplayName>Access-Control</DisplayName>
        <Properties/>
        <IPRules noRuleMatchAction="ALLOW">
            <MatchRule action="DENY">
                <SourceAddress mask="32">104.132.196.83</SourceAddress>
            </MatchRule>
        </IPRules>
        </AccessControl>
    
  3. Determina las direcciones IP desde las que se ha enviado la solicitud a la API. Esto se puede hacer de varias formas:

    1. Usar UI Trace

      1. Captura el rastreo de la solicitud a la API que falla.
      2. En el panel de la derecha, selecciona la política de control de acceso específica que ha fallado.
      3. En el panel Detalles de la fase, comprueba el valor de la variable proxy.client.ip, tal como se muestra en la siguiente captura de pantalla de un ejemplo de traza.

        El panel Detalles de la fase muestra la dirección IP desde la que se hizo la solicitud a la API.

      4. Si no aparece, comprueba el valor de los encabezados de mensaje X-Forwarded-For o True-Client-IP.proxy.client.ip

    2. Usar informes personalizados

      Puedes crear informes personalizados para determinar si se ha devuelto un código de estado 403 durante la ejecución de la política de control de acceso en el proxy de la API y también determinar la dirección IP del cliente. Esto es especialmente útil si el problema se ha producido en el pasado o si es intermitente y no puedes capturar el seguimiento en la interfaz de usuario.

      Consulte el artículo Crear y gestionar informes personalizados para saber cómo crear informes personalizados. En el informe personalizado, elija una de las siguientes opciones:

      1. Suma de tráfico como métrica

      2. Proxy, Código de estado de la respuesta, IP del cliente proxy y X-Forwarded-For-IP como dimensiones.

      Esto debería ayudarte a determinar la dirección IP o las direcciones IP del cliente que han provocado el error.

  4. Si la dirección IP del cliente (indicada por la variable proxy.client.ip) o cualquier dirección IP que se haya enviado como parte de la solicitud de la API coincide con las direcciones IP especificadas en el elemento <SourceAddress> del elemento <MatchRule> de la política de control de acceso, donde el atributo action tiene el valor DENY, esa es la causa del error.

    En el ejemplo que se muestra arriba, el valor definido en la variable de referencia proxy.client.ip (como se ve en la captura de pantalla del seguimiento anterior) coincide con la dirección IP definida en el elemento <SourceAddress> de la política de control de acceso, lo que provoca la respuesta de error:

    "faultstring": "Access Denied for client ip : 104.132.196.83"
    
    

Resolución

Si la política de control de acceso tiene como objetivo denegar el acceso a las solicitudes de la API procedentes de las direcciones IP específicas que se indican en faultstring, el mensaje de error es el esperado. En este caso, no es necesario que hagas nada más.

Sin embargo, si determinas que se puede dar acceso a las solicitudes de API a las direcciones IP específicas del proxy de API, modifica la política de control de acceso para permitir el acceso a esas direcciones IP. También puedes quitar la política de control de acceso del proxy de API si no quieres denegar el acceso a ninguna dirección IP.

Aquí tienes un ejemplo que muestra cómo permitir el acceso solo a una dirección IP específica 104.132.196.83 y denegar el acceso al resto:

<AccessControl name="ACL">
  <IPRules noRuleMatchAction = "DENY">
    <MatchRule action = "ALLOW">
      <SourceAddress mask="32">104.132.196.83</SourceAddress>
    </MatchRule>
  </IPRules>
</AccessControl>