Información sobre firewall de App Engine

Un firewall determina qué tráfico de red se acepta y qué tráfico se rechaza. Los firewalls se pueden aplicar al tráfico entrante (entrada), el tráfico saliente (salida) o ambos. En App Engine, el firewall de App Engine solo se aplica al tráfico entrante enrutado a tu aplicación o servicio.

Descripción general

El firewall de App Engine se verifica en todos los tipos de solicitudes de tu aplicación, incluidas las siguientes:

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

En los casos en los que tu app esté configurada para usar otros servicios o productos de red, es posible que debas crear reglas a fin de controlar el tráfico entrante en el firewall de App Engine y en la configuración de firewall o seguridad de otros productos. En esta guía, se aborda el comportamiento general del firewall de App Engine y detalles sobre esos casos de uso especiales.

Reglas de firewall de App Engine

Puedes configurar reglas de firewall de App Engine con la consola de Google Cloud, Google Cloud CLI o la API de Admin si especificas reglas que permiten o bloquean rangos de IP especificados.

De forma predeterminada, cualquier solicitud que no coincida con una regla tendrá acceso a tu app. Si necesitas bloquear todas las solicitudes que no coinciden con una regla específica (sin incluir las solicitudes de servicios internos permitidos de forma predeterminada), cambia la acción default de la regla a deny.

En ciertas circunstancias, es posible que el entorno flexible de App Engine configure automáticamente las reglas de firewall a nivel de nube privada virtual (VPC), pero ten en cuenta que el firewall de la VPC no interactúa con el firewall de App Engine.

Permite solicitudes entrantes de tus servicios

En la siguiente tabla, se enumeran los rangos de IP y el comportamiento del firewall de App Engine para servicios comunes. El rango de IP que uses depende de si las solicitudes entrantes se entregan a una versión que se ejecuta en el entorno estándar de App Engine o en un entorno flexible.

Servicio Rango de IP para las solicitudes enviadas al entorno estándar de App Engine Rango de IP para 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 firewall predeterminada si está configurada para denegar 0.1.0.1/32 or 0.1.0.2/32
Instancias de Compute Engine que usan Cloud NAT para conexiones salientes Las direcciones IP de Cloud NAT configuradas Las direcciones IP de Cloud NAT configuradas
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 dirección IP externa 0.0.0.0/32 0.0.0.0/32
Trabajos de Cloud Scheduler que usan tareas HTTP de App Engine y App Engine en Cloud Tasks (incluidas las listas de tareas en cola de App Engine) 0.1.0.2/32, omite la regla de firewall predeterminada si está configurada para denegar 0.1.0.2/32
Cloud Storage o Blobstore 0.1.0.30/32 No aplicable
Recuperación de URL 0.1.0.40/32 0.1.0.40/32
Solicitudes de preparación 0.1.0.3/32, omite la regla de firewall predeterminada si está configurada para denegar No aplicable

Según tu caso de uso, estas instrucciones adicionales podrían aplicarse cuando configuras las reglas de firewall de App Engine:

  • Las solicitudes de trabajos cron de App Engine recién creados o actualizados, que se enviaron al entorno estándar o flexible de App Engine provienen de 0.1.0.2. En el caso de los trabajos cron creados con versiones anteriores de gcloud (antes de 326.0.0), las solicitudes provienen de 0.1.0.1. Para obtener más información sobre cómo identificar solicitudes del servicio cron de App Engine, consulta Valida solicitudes cron.
  • Si tu app 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 a continuación.

Ejemplo de entorno estándar de App Engine

La app 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. Debido a que la regla de firewall default permite las solicitudes de Cloud Tasks incluso si se configura en deny, no necesitas crear una regla de firewall para Cloud Tasks.

Sin embargo, si deseas restringir el acceso a tu app y bloquear explícitamente las solicitudes de Cloud Tasks, deberías crear una regla de firewall deny para el rango de IP 0.1.0.2/32.

Ejemplo de entorno flexible de App Engine

La app que se ejecuta en el entorno flexible tiene dos servicios: frontend_service y backend_service, y tiene un firewall 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. Dado que la regla de firewall default rechaza las solicitudes de Cloud Tasks, debes crear una regla de firewall allow para 0.1.0.2/32.

Interacción con otros productos o servicios

Cloud Load Balancing

Si usas Cloud Load Balancing y NEG sin servidores, ten en cuenta lo siguiente:

  • El balanceador de cargas no interfiere ni interactúa con las reglas de firewall de App Engine. Las reglas de App Engine no se evalúan hasta que un NEG sin servidores dirige el tráfico a App Engine.
  • Te recomendamos usar controles de entrada para que la app solo reciba solicitudes enviadas desde el balanceador de cargas (y la VPC, si la usas). De lo contrario, los usuarios pueden usar la URL de App Engine de tu app para omitir el balanceador de cargas, las políticas de seguridad de Google Cloud Armor, los certificados SSL y las claves privadas que se pasan a través del balanceador de cargas.

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

Firewall de VPC

Los firewalls de App Engine se configuran y se aplican de forma independiente de los firewalls basados en VPC. Las reglas de firewall 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 firewall de App Engine se aplican a las solicitudes entrantes a tu aplicación o servicio.

Si hay reglas de firewall basadas en VPC (como reglas de firewall de VPC o políticas de firewall jerárquicas) configuradas en tu entorno de red, ambos firewalls a nivel de VPC y de App Engine deben permitir que el rango de IP de una solicitud entrante reciba tu aplicación de App Engine.

Para los firewalls a nivel de VPC, las políticas de firewall jerárquicas se evalúan antes que las reglas de firewall de VPC y siguen una secuencia durante la evaluación del firewall de VPC. Tu aplicación o servicio de App Engine recibe las solicitudes permitidas por el firewall a nivel de VPC y el firewall de App Engine. Si el firewall de VPC rechaza las solicitudes del mismo rango de IP que permite el firewall de App Engine, no se permite el acceso a tu aplicación de App Engine.

VPC compartida

El entorno flexible de App Engine puede crear firewalls según si la app está configurada para usar una red de VPC mediante una VPC compartida.

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

Además, para permitir solicitudes de una fuente de tráfico, debes permitir el mismo rango de IP en el firewall de VPC y en el firewall de App Engine. Sin especificar el rango de IP en ambos lugares (firewall de VPC y firewall de App Engine), ese rango de IP no podrá acceder a tu aplicación o servicio de App Engine.

Si tu app 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 firewall de VPC ocultas, según si tu aplicación usa la división verificaciones de estado (predeterminada) o verificaciones de estado heredadas. Estas reglas de firewall ocultas permiten la entrega de tráfico y de tráfico de verificación de estado en el entorno flexible:

  • Nombre de la red: es la red especificada en app.yaml o la red predeterminada si no se configuró ninguna red.
  • Etiqueta de destino: Son las instance_tags especificadas 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 de aef-INSTANCE_ID. Esta etiqueta solo afecta a las instancias en esa versión flexible específica, y la regla de firewall se orientará a esta etiqueta.
  • Dirección del tráfico: entrada
  • Acción si hay coincidencia: permitir
  • Rangos de IP de origen: 35.191.0.0/16 y 130.211.0.0/22
  • Protocolos y puertos:
    • tcp: 8443 (para verificaciones de estado heredadas) o 10402 (para verificaciones de estado divididas)
  • Prioridad: 1000

Evita el acceso al contenido en caché

El firewall de App Engine se sitúa detrás de los mecanismos que almacenan contenido en caché, como proxies web y navegadores. Cuando el contenido se almacena en caché, se entrega de forma pública desde la URL específica hasta que vence, y se puede acceder a él incluso después de haber creado reglas de firewall nuevas.

Para evitar que el 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 y sobre cómo controlar el almacenamiento en caché, consulta Evita el almacenamiento en caché.

¿Qué sigue?

Sigue las instrucciones que se indican en Crea firewalls si deseas obtener información para configurar las reglas de firewall de App Engine.