¿Cómo permito que solo direcciones IP específicas accedan a mi API de REST de API Gateway?

5 minutos de lectura
0

Quiero permitir que solo direcciones IP específicas accedan a mi API de REST de Amazon API Gateway. ¿Cómo restrinjo el acceso a mi API de REST de API Gateway?

Descripción corta

Cree una política de recursos para su API de REST que deniegue el acceso a cualquier dirección IP que no esté específicamente permitida.

Una vez que la política de recursos se adjunte a la API de REST, los usuarios que llamen a la API desde direcciones IP especificadas (usuarios permitidos) podrán acceder a la API. Se deniega el acceso a las llamadas de cualquier otra dirección IP y reciben un error HTTP 403 Forbidden.

Para bloquear direcciones IP específicas y permitir el acceso a todas las demás, consulte el Ejemplo: Cómo denegar el tráfico a una API para una dirección o un rango de direcciones IP de origen.

Nota: Las API HTTP de API Gateway actualmente no admiten políticas de recursos.

Resolución

Nota: Para el siguiente procedimiento, puede utilizar su API de REST de API Gateway existente o crear una API REST de ejemplo para realizar pruebas. Si utiliza la API de ejemplo (PetStore), pase a la segunda sección: Crear y adjuntar una política de recursos que permita que solo permite acceso a su API de REST de API Gateway a direcciones IP específicas.

Configurar un método de API

1.    Abra la consola de API Gateway.

2.    Elija su API de REST.

3.    En el panel Recursos, elija Acciones. A continuación, elija Crear método.

4.    En la lista desplegable situada debajo del nodo /resource, elija CUALQUIERA. A continuación, seleccione el icono de la marca de verificación.

5.    En el panel**/- ANY - Setup**, como Tipo de integración, elija Simulacro.

6.    Seleccione Guardar.

Nota: Una integración simulada responde a cualquier solicitud que reciba, lo que ayuda a realizar pruebas más adelante.

Crear y adjuntar una política de recursos que permita que solo permite acceso a su API de REST de API Gateway a direcciones IP específicas

1.    Abra la consola de API Gateway.

2.    En el panel de navegación de la izquierda, seleccione Política de recursos.

3.    En el cuadro de texto Política de recursos, pegue el siguiente ejemplo de política de recursos:

Ejemplo de política de recursos

{
  "Version": "2012-10-17",
  "Statement": [{
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*"
    },
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "execute-api:/*/*/*",
      "Condition": {
        "NotIpAddress": {
          "aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"]
        }
      }
    }
  ]
}

3.    Para aws:SourceIP, sustituya el valor sourceIpOrCIDRBlock por las direcciones IP específicas a las que desea conceder acceso. También puede especificar un rango de direcciones IP mediante la notación CIDR.

Ejemplo de cadena de direcciones IP públicas que aparece en la notación CIDR

["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]

**Importante:**El valor de la condición aws:SourceIp solo funciona para rangos de direcciones IP públicas. Para permitir el acceso a los rangos de direcciones IP privadas, utilice el valor de condición aws:VpcSourceIp en su lugar. A continuación, para el valor aws:VpcSourceIp, introduzca la dirección IP privada del cliente HTTP que invoca el punto de conexión de la API privada a través del punto de conexión de VPC de la interfaz. Tenga en cuenta que solo puede invocar punto de conexión de la API privada en API Gateway a través de un punto de conexión de VPC de interfaz. Para obtener más información, consulte aws:vpcSourceIP.

4.    Seleccione Guardar.

Nota: La variable $context.identity.sourceIp de sus registros de Amazon CloudWatch muestra todas las direcciones IP privadas que llaman a su API de REST. Para obtener más información, consulte Variables $context para modelos de datos, autorizadores, plantillas de mapeo y registro de acceso de CloudWatch.

Desplegar su API

1.    En el panel Recursos de su API de REST, seleccione Acciones.

2.    Elija Desplegar API.

3.    En Etapa de despliegue, elija [Nueva etapa].

4.    En Nombre de etapa, introduzca un nombre. Por ejemplo: v1 o demo.

5.    Elija Desplegar.

Importante: Debe volver a desplegar su API de REST cada vez que modifique su política de recursos.

Prueba de la política de recursos

Confirme que su API de REST devuelve una respuesta HTTP 200 OK a las direcciones IP permitidas. Para ello, pruebe la URL de invocación de la API con curl o la aplicación Postman. A continuación, ejecute otra prueba desde un entorno sin una dirección IP permitida para confirmar que la API de REST devuelve un error HTTP 403 Prohibido.

Nota: Si no tiene acceso a varios entornos para realizar pruebas, puede configurar una instancia de Amazon Elastic Compute Cloud (Amazon EC2). Si utiliza una instancia de Amazon EC2 para realizar pruebas, asegúrese de añadir primero la dirección IP de la instancia a la política de recursos de la API. A continuación, vuelva a implementar su API.

Prueba de la API de REST para detectar una respuesta HTTP 200 OK o un error HTTP 403 mediante curl

Según su sistema operativo, ejecute uno de los siguientes comandos.

**Importante:**Reemplace https://yourInvokeUrl/ por la URL de invocación de su API de REST.

Para entornos Linux, Unix y macOS, ejecute el siguiente comando:

curl -IX GET https://yourInvokeUrl/

Para Windows PowerShell, ejecute el siguiente comando:

curl https://yourInvokeUrl/

Si la política de recursos está configurada correctamente, el entorno permitido recibe una respuesta HTTP 200 OK. El entorno denegado recibe un error HTTP 403 Forbidden.


Información relacionada

Creación y asociación de una política de recursos de API Gateway a una API

Ejemplos de políticas de recursos de API Gateway

Información general del lenguaje de políticas de acceso para Amazon API Gateway

Control y administración del acceso a una API REST en API Gateway