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
.
Función de cortafuegos
En el entorno estándar de App Engine, el cortafuegos de App Engine puede permitir que determinado tráfico interno eluda el cortafuegos. Esto significa que, si asignas el valor default
a la regla deny
, las solicitudes de determinados servicios destinadas al entorno estándar de App Engine no se bloquearán. Se trata de todos los tipos de tráfico solicitados en la configuración de la aplicación o enviados desde la misma aplicación. Las solicitudes que omiten las reglas de cortafuegos de esta forma incluyen las siguientes:
- Solicitudes de preparación
- Tareas de Cloud Scheduler que usan HTTP de App Engine (incluido Cron de App Engine)
- Tareas de App Engine en Cloud Tasks (incluidas las colas de tareas de App Engine)
En las aplicaciones que usan el entorno estándar de App Engine y los servicios agrupados con los runtimes de primera generación, las notificaciones de la API Mail antigua también eluden el cortafuegos.
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 de0.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.
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 obtener información sobre cómo cambiar el tiempo de vencimiento predeterminado del contenido estático o evitar que se almacene en caché, consulta Vencimiento de la caché.Para evitar que se almacene en caché el contenido dinámico que genera el código de tu aplicación, 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 Evitar el almacenamiento en caché.
Siguientes pasos
Sigue las instrucciones de Crear cortafuegos para aprender a configurar reglas de cortafuegos de App Engine.