Uso de AWS WAF para proteger sus API - Amazon API Gateway

Uso de AWS WAF para proteger sus API

AWS WAF es un firewall de aplicaciones web que ayuda a proteger las aplicaciones web y las API de ataques. Le permite configurar un conjunto de reglas (denominadas lista de control de acceso web (Web ACL)) que permiten, bloquean o cuentan solicitudes web en función de las reglas y condiciones de seguridad web personalizables que defina. Para obtener más información, consulte Funcionamiento de AWS WAF.

Puede utilizar AWS WAF para proteger a la API de API Gateway de vulnerabilidades web comunes, como ataques de inyección SQL y de filtro de scripts de sitios (XSS). Esto podría afectar a la disponibilidad y el rendimiento de la API, comprometer la seguridad o consumir recursos excesivos. Por ejemplo, puede crear reglas para permitir o bloquear solicitudes de rangos de direcciones IP especificados, solicitudes de bloques CIDR, solicitudes que se originan en un país o región específico, solicitudes que contengan código SQL malintencionado o solicitudes que contengan secuencias de comandos malintencionadas.

También puede crear reglas que busquen una cadena o un patrón de expresión regular en encabezados HTTP, métodos, cadenas de consulta, URI y el cuerpo de la solicitud (limitado a los primeros 8 KB). Además, puede crear reglas para bloquear ataques de agentes de usuario específicos, bots malintencionados y scrapers de contenido. Por ejemplo, puede utilizar reglas basadas en la frecuencia para especificar el número de solicitudes web permitidas por IP de cliente en un periodo de 5 minutos actualizado constantemente.

importante

AWS WAF es su primera línea de defensa contra vulnerabilidades de la web. Cuando AWS WAF está habilitado en una API, se evalúan las reglas de AWS WAF antes que otras características del control de acceso, como, por ejemplo, las políticas de recursos, las políticas de IAM, los autorizadores de Lambda y los autorizadores de Amazon Cognito. Por ejemplo, si AWS WAF bloquea el acceso de un bloque de CIDR permitido por una política de recursos, AWS WAF tiene prioridad y no se evalúa la política de recursos.

Para habilitar AWS WAF para su API, debe hacer lo siguiente:

  1. Utilice la consola de AWS WAF, el AWS SDK o la CLI para crear una ACL web regional que contenga la combinación deseada de reglas administradas de AWS WAF y sus propias reglas personalizadas. Para obtener más información, consulte Introducción a AWS WAF y Creación y configuración de una lista de control de acceso web (ACL web).

    importante

    API Gateway necesita una ACL web regional.

  2. Asocie la ACL web regional de AWS WAF con una etapa de la API. Puede hacerlo mediante la consola de AWS WAF, el AWS SDK o la CLI o mediante la consola de API Gateway, el AWS SDK o la CLI.

Para asociar una ACL web regional de AWS WAF a una etapa de la API de API Gateway mediante la consola de API Gateway

Si desea utilizar la consola de API Gateway para asociar una ACL web regional de AWS WAF a una etapa de la API de API Gateway existente, siga estos pasos:

  1. Inicie sesión en la consola de API Gateway en https://console.aws.amazon.com/apigateway.

  2. En el panel de navegación APIs (API), elija la API y seleccione Stages (Etapas).

  3. En el panel Stages (Etapas), elija el nombre de la etapa.

  4. En el panel Stage Editor (Editor de etapas), elija la pestaña Settings (Configuración).

  5. Para asociar una ACL web regional con la etapa de la API:

    1. En la lista desplegable de ACL web de AWS WAF, elija la ACL web regional que desea asociar a esta etapa.

      nota

      Si la ACL web que necesita aún no existe, elija Crfeate WebACL (Crear WebACL). A continuación, elijaGo to AWS WAF (Ir a AWS WAF) para abrir la consola de AWS WAF en una nueva pestaña del navegador y crear una ACL web regional. A continuación, vuelva a la consola de API Gateway para asociar la ACL web con la etapa.

  6. Elija Guardar cambios.

Para asociar una ACL web regional de AWS WAF a una etapa de la API de API Gateway mediante la AWS CLI

Si desea utilizar la AWS CLI para asociar una ACL web regional de AWS WAF a una etapa de la API de API Gateway existente, llame al comando associate-web-acl, como se muestra en el siguiente ejemplo:

aws waf-regional associate-web-acl \ --web-acl-id 'aabc123a-fb4f-4fc6-becb-2b00831cadcf' \ --resource-arn 'arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod'

Asociación de una ACL web regional de AWS WAF a una etapa de la API mediante la API de REST de AWS WAF

Si desea utilizar la API REST de AWS WAF para asociar una ACL web regional de AWS WAF a una etapa de la API de API Gateway existente, llame al comando AssociateWebACL, como se muestra en el siguiente ejemplo:

import boto3 waf = boto3.client('waf-regional') waf.associate_web_acl( WebACLId='aabc123a-fb4f-4fc6-becb-2b00831cadcf', ResourceArn='arn:aws:apigateway:{region}::/restapis/4wk1k4onj3/stages/prod' )