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
.
Función del firewall
En el entorno estándar de App Engine, el firewall de App Engine puede permitir que determinado tráfico interno omita el firewall. Esto significa que si configuras la regla default
en deny
, no se bloquean las solicitudes de ciertos servicios destinados al entorno estándar de App Engine. Todos son tipos de tráfico solicitados en la configuración de la app o enviados desde la misma app. Las solicitudes que omiten las reglas de firewall de esta manera incluyen las siguientes:
- Solicitudes de preparación
- Trabajos de Cloud Scheduler con HTTP de App Engine (incluido Cron de App Engine)
- Tareas de App Engine en Cloud Tasks (incluidas las listas de tareas en cola de App Engine)
Para las aplicaciones que usan el entorno estándar de App Engine y los servicios integrados a los entornos de ejecución de la primera generación, las notificaciones de la API de correo heredada también omiten el firewall.
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 |
---|---|---|
Cloud Storage o Blobstore | 0.1.0.30/32 | No aplicable |
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 |
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 o 0.1.0.2/32 |
Recuperación de URL | 0.1.0.40/32 | 0.1.0.40/32 |
Instancias de Compute Engine con Acceso privado a Google habilitado | 0.0.0.0/32 | 0.0.0.0/32 |
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 de0.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).
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.
Si deseas obtener información para cambiar el tiempo de vencimiento predeterminado del contenido estático o evitar que este se almacene en caché, consulta Vencimiento de la caché.Para evitar que la salida del contenido dinámico del código de la app 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 en Crea firewalls si deseas obtener información para configurar las reglas de firewall de App Engine.