Información sobre el cortafuegos de App Engine

Un cortafuegos determina qué tráfico de red puede pasar y cuál se rechaza. Los cortafuegos se pueden aplicar al tráfico entrante (entrada), al tráfico saliente (salida) o a ambos. En App Engine, el cortafuegos de App Engine solo se aplica al tráfico entrante dirigido a tu aplicación o servicio.

Información general

El cortafuegos de App Engine se comprueba en todos los tipos de solicitudes a tu aplicación, incluidos los siguientes:

  • Tráfico web normal dirigido a la dirección appspot.com o al dominio personalizado de la aplicación.
  • Solicitudes que llegan desde Cloud Load Balancing.
  • Tráfico de fuentes internas, como máquinas virtuales (VMs) de Compute Engine y Cloud Tasks.

En los casos en los que tu aplicación esté configurada para usar otros servicios o productos de redes, es posible que tengas que crear reglas para controlar el tráfico entrante tanto en el cortafuegos de App Engine como en el cortafuegos o la configuración de seguridad de otros productos. En esta guía se describe el comportamiento general del cortafuegos de App Engine y se ofrecen detalles sobre esos casos prácticos especiales.

Reglas de cortafuegos de App Engine

Puedes configurar reglas de cortafuegos de App Engine con la consola, la CLI de Google Cloud o la API Admin. Para ello, especifica reglas que permitan o bloqueen intervalos de IP concretos. Google Cloud

De forma predeterminada, cualquier solicitud que no coincida con una regla tendrá acceso a tu aplicación. Si necesitas bloquear todas las solicitudes que no coincidan con una regla específica (excepto las solicitudes de servicios internos que se permiten de forma predeterminada), cambia la acción de la regla default a deny.

En determinadas circunstancias, el entorno flexible de App Engine puede configurar automáticamente reglas de cortafuegos a nivel de nube privada virtual (VPC), pero ten en cuenta que el cortafuegos de la VPC no interactúa con el cortafuegos de App Engine.

Permitir solicitudes entrantes de tus servicios

En la siguiente tabla se indican los intervalos de IP y el comportamiento del cortafuegos de App Engine para los servicios comunes. El intervalo de IPs que utilices dependerá de si las solicitudes entrantes se envían a una versión que se ejecuta en el entorno estándar o flexible de App Engine.

Servicio Intervalo de IP de las solicitudes enviadas al entorno estándar de App Engine Intervalo de IP de las solicitudes enviadas al entorno flexible de App Engine
Cron de App Engine 0.1.0.1/32 o 0.1.0.2/32, omite la regla de cortafuegos predeterminada si se define como denegada 0.1.0.1/32 o 0.1.0.2/32
Instancias de Compute Engine con direcciones IP externas Dirección IP externa de la instancia Dirección IP externa de la instancia
Instancias de Compute Engine sin una dirección IP externa 0.0.0.0/32 0.0.0.0/32
Instancias de Compute Engine sin una dirección IP externa que usen Cloud NAT para las conexiones salientes 0.0.0.0/32 0.0.0.0/32
Tareas de Cloud Scheduler que usan HTTP de App Engine y tareas de App Engine en Cloud Tasks (incluidas las colas de tareas de App Engine) 0.1.0.2/32, omite la regla de cortafuegos predeterminada si se define como denegación 0.1.0.2/32
Cloud Storage o Blobstore 0.1.0.30/32 No aplicable
Obtención de URL 0.1.0.40/32 0.1.0.40/32
Solicitudes de calentamiento 0.1.0.3/32, omite la regla de cortafuegos predeterminada si se define como denegación No aplicable

En función de tu caso de uso, es posible que se apliquen estas instrucciones adicionales al configurar las reglas de cortafuegos de App Engine:

  • Las solicitudes de tareas cron de App Engine recién creadas o actualizadas que se envían al entorno estándar o flexible de App Engine proceden de 0.1.0.2. En el caso de las tareas cron creadas con versiones anteriores de gcloud (anteriores a la 326.0.0), las solicitudes cron procederán de 0.1.0.1. Para obtener más información sobre cómo identificar las solicitudes del servicio Cron de App Engine, consulta el artículo Validar solicitudes cron.
  • Si tu aplicación interactúa con Cloud Load Balancing o está conectada a una red de VPC, consulta la sección Interacción con otros productos o servicios que aparece más abajo.

Ejemplo de entorno estándar de App Engine

Tu aplicación, que se ejecuta en el entorno estándar, tiene dos servicios: frontend_service y backend_service. frontend_service usa Cloud Tasks con HTTP de App Engine para enviar mensajes a backend_service. Como la regla de cortafuegos default permite las solicitudes de Cloud Tasks aunque esté configurada como deny, no es necesario que crees una regla de cortafuegos para Cloud Tasks.

Sin embargo, si quieres restringir el acceso a tu aplicación y bloquear explícitamente las solicitudes de Cloud Tasks, debes crear una deny regla de cortafuegos para el intervalo de direcciones IP 0.1.0.2/32.

Ejemplo de entorno flexible de App Engine

Tu aplicación que se ejecuta en el entorno flexible tiene dos servicios: frontend_service y backend_service, y tiene un cortafuegos configurado para denegar el tráfico de forma predeterminada. frontend_service usa Cloud Tasks con HTTP de App Engine para enviar mensajes a backend_service. Como la regla de cortafuegos default deniega las solicitudes de Cloud Tasks, tendrás que crear una regla de cortafuegos allow para 0.1.0.2/32.

Interacción con otros productos o servicios

Cloud Load Balancing

Si usas Cloud Load Balancing y NEGs sin servidor, ten en cuenta lo siguiente:

  • El balanceador de carga no interfiere ni interactúa con las reglas de cortafuegos de App Engine. Las reglas de cortafuegos de App Engine no se evalúan hasta que un NEG sin servidor dirige el tráfico a App Engine.
  • Te recomendamos que uses controles de entrada para que tu aplicación solo reciba solicitudes enviadas desde el balanceador de carga (y la VPC, si la usas). De lo contrario, los usuarios podrán usar la URL de App Engine de tu aplicación para saltarse el balanceador de carga, las políticas de seguridad de Cloud Armor, los certificados SSL y las claves privadas que se transfieren a través del balanceador de carga.

  • Si tus controles de entrada están configurados para recibir tráfico internal-and-cloud-load-balancing, deja la regla de cortafuegos de App Engine predeterminada tal cual (allow) y usa reglas de cortafuegos de aplicación web (WAF) de Google Cloud Armor.

Cortafuegos de VPC

Los cortafuegos de App Engine se configuran y se aplican independientemente de los cortafuegos basados en VPC. Las reglas de cortafuegos de VPC se aplican a los recursos que se ejecutan en la red de VPC, como las máquinas virtuales de Compute Engine, mientras que las reglas de cortafuegos de App Engine se aplican a las solicitudes entrantes a tu aplicación o servicio.

Si hay reglas de cortafuegos basadas en VPC (como las reglas de cortafuegos de VPC o las políticas de cortafuegos jerárquicas) configuradas en tu entorno de red, tanto los cortafuegos a nivel de VPC como los de App Engine deben permitir el intervalo de IP de una solicitud entrante para que tu aplicación de App Engine la reciba.

En el caso de los cortafuegos a nivel de VPC, las políticas de cortafuegos jerárquicas se evalúan antes que las reglas de cortafuegos de VPC y siguen una secuencia durante la evaluación de los cortafuegos de VPC. Las solicitudes permitidas tanto por el cortafuegos a nivel de VPC como por el cortafuegos de App Engine las recibe tu aplicación o servicio de App Engine. Si el cortafuegos de la VPC deniega las solicitudes del mismo intervalo de IPs que permite el cortafuegos de App Engine, no se permitirá el acceso a tu aplicación de App Engine.

VPC compartida

El entorno flexible de App Engine puede crear cortafuegos en función de si tu aplicación está configurada para usar una red de VPC a través de VPC compartida.

Si tu aplicación flexible de App Engine usa una VPC compartida, el entorno flexible de App Engine no crea reglas de cortafuegos automáticamente. Si necesitas controlar el acceso y permitir el tráfico en la red de VPC, puedes crear reglas de cortafuegos en la red de VPC compartida.

Además, para permitir las solicitudes de una fuente de tráfico, debe permitir el mismo intervalo de IP en el cortafuegos de la VPC y en el cortafuegos de App Engine. Si no especificas el intervalo de IP en ambos lugares (cortafuegos de VPC y cortafuegos de App Engine), no se permitirá que ese intervalo de IP acceda a tu aplicación o servicio de App Engine.

Si tu aplicación del entorno flexible de App Engine no está configurada para usar una VPC compartida, el entorno flexible de App Engine crea hasta dos reglas de cortafuegos de VPC ocultas, en función de si tu aplicación usa comprobaciones del estado divididas (opción predeterminada) o comprobaciones del estado antiguas. Estas reglas de cortafuegos ocultas permiten servir tráfico y tráfico de comprobación del estado al entorno flexible:

  • Nombre de la red: la red especificada en app.yaml o la red predeterminada si no se ha configurado ninguna.
  • Etiqueta de destino: el instance_tags especificado en el archivo app.yaml. De forma predeterminada, si no se proporcionan etiquetas de destino, el entorno flexible de App Engine genera una etiqueta única que sigue el formato aef-INSTANCE_ID. Esta etiqueta solo afecta a las instancias de de esa versión flexible específica, y la regla de cortafuegos se dirigirá a esta etiqueta.
  • Dirección del tráfico: entrada
  • Acción tras coincidencia: permitir
  • Intervalos de IP de origen: 35.191.0.0/16 y 130.211.0.0/22
  • Protocolos y puertos:
    • tcp 8443 (para comprobaciones de estado antiguas) o 10402 (para comprobaciones de estado divididas)
  • Prioridad: 1000

Impedir el acceso al contenido almacenado en caché

El cortafuegos de App Engine se encuentra detrás de mecanismos que almacenan contenido en caché, como los proxies web y los navegadores. Cuando el contenido se almacena en caché, se sirve públicamente desde la URL específica hasta que caduca y se puede acceder a él incluso después de crear nuevas reglas de firewall.

Para evitar que tu contenido se almacene en caché, usa los encabezados de respuesta HTTP Cache-Control y Expires. Para obtener más información sobre estos encabezados HTTP, incluido cómo controlar el almacenamiento en caché, consulta el artículo Evitar el almacenamiento en caché.

Siguientes pasos

Sigue las instrucciones de Crear cortafuegos para aprender a configurar reglas de cortafuegos de App Engine.