Saltar al contenido

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

4 minutos de lectura
0

Quiero permitir que solo direcciones IP específicas accedan a mi API de REST de Amazon API Gateway.

Descripción breve

Para permitir que solo direcciones IP específicas accedan a tu API de REST, crea una política de recursos que deniegue el acceso a todas las demás direcciones IP.

Después de adjuntar la política de recursos a la API de REST, los usuarios con permisos pueden llamar a la API desde direcciones IP especificadas. Tu API deniega las llamadas desde cualquier otra dirección IP y muestra un error «HTTP 403 Forbidden».

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

Nota: Puedes usar políticas de recursos para las API HTTP de API Gateway.

Resolución

Configuración de un método de API

Para probar el acceso, usa tu API de REST de API Gateway existente o crea una API de REST de ejemplo. Si utilizas la API del ejemplo de PetStore, continúa con la Creación y asociación de una política de recursos.

Para crear una integración simulada para tu API de REST existente, sigue estos pasos:

  1. Abre la consola de API Gateway.
  2. Elige tu API de REST.
  3. En el panel Recursos, en Métodos, elige Crear método.
  4. En Tipo de método, selecciona CUALQUIERA.
  5. En Tipo de integración, elige Simulación.
    Nota: La integración simulada responde a cualquier solicitud que le llegue.
  6. Selecciona Crear método.

Creación y asociación de la política de recursos

Sigue estos pasos:

  1. Abre la consola de API Gateway.
  2. Elige tu API de REST.
  3. En el panel de navegación, selecciona Política de recursos.
  4. Selecciona Crear política.
  5. En Política de recursos, introduce la siguiente 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"]
            }
          }
        }
      ]
    }
    Nota: Sustituye sourceIpOrCIDRBlock por las direcciones IP a las que deseas conceder acceso. Utiliza la notación CIDR para especificar un rango de direcciones IP, como ["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]. La condición aws:SourceIp solo funciona para rangos de direcciones IP públicas. Para permitir el acceso a rangos de direcciones IP privadas, utiliza la condición aws:VpcSourceIp. En aws:VpcSourceIp, introduce la dirección IP privada del cliente HTTP que invoca el punto de enlace de la API privada a través del punto de enlace de nube virtual privada (VPC) de la interfaz. Solo puedes invocar puntos de enlace de API privadas en API Gateway a través de un punto de enlace de VPC de la interfaz.
  6. Selecciona Guardar cambios.

Para encontrar las direcciones IP privadas que llaman a tu API de REST, consulta los registros de Amazon CloudWatch. Para obtener más información, consulta Tutorial: Visualización de registros de CloudWatch.

Despliegue de la API

Sigue estos pasos:

  1. Abre la consola de API Gateway.
  2. Elige tu API de REST.
  3. En el panel Recursos de tu API de REST, selecciona Desplegar API.
  4. En Etapa de despliegue, elige Nueva etapa.
  5. En Nombre de la etapa, introduce un nombre. Por ejemplo, escribe v1 o demo.
  6. Selecciona Desplegar.

Importante: Debes volver a implementar la API de REST cada vez que modifiques su política de recursos.

Prueba de la política de recursos

Según tu sistema operativo (SO), ejecuta uno de los siguientes comandos para probar un entorno con una dirección IP permitida.

Entornos Linux, Unix y macOS:

curl -IX GET https://yourInvokeUrl/

Windows PowerShell:

curl https://yourInvokeUrl/

Nota: Reemplaza https://yourInvokeUrl/ por la URL de invocación de tu API de REST.

Si has configurado la política de recursos correctamente, el entorno permitido recibirá una respuesta «HTTP 200 OK». Vuelve a ejecutar el mismo comando desde un entorno sin una dirección IP permitida. Un entorno denegado recibirá un error «HTTP 403 Forbidden».

Para probar tu política de recursos, también puedes usar la aplicación Postman en el sitio web de Postman.

Nota: Si no tienes acceso a varios entornos, inicia una instancia de Amazon Elastic Compute Cloud (Amazon EC2). A continuación, agrega la dirección IP de la instancia a la política de recursos de tu API y vuelve a desplegarla.

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 las API de REST en API Gateway