En este documento se proporciona una arquitectura de referencia para una aplicación web alojada en Google Cloud. La arquitectura usa un frontend global que incorpora Google Cloud prácticas recomendadas para ayudarte a escalar, proteger y acelerar la entrega de tus aplicaciones orientadas a Internet. La arquitectura incluye compatibilidad con Cloud Build, así como herramientas de integración continua (CI) y entrega continua (CD) de terceros, como Jenkins y GitLab. Esta arquitectura está pensada para desarrolladores y propietarios de aplicaciones que quieran escalar sus aplicaciones con un balanceador de carga y protegerlas frente a ataques de denegación de servicio distribuido (DDoS) y ataques web con un cortafuegos de aplicaciones web (WAF).
Arquitectura
En el siguiente diagrama se muestra la arquitectura que se describe en este documento.
En esta arquitectura, la aplicación se balancea con balanceadores de carga de aplicaciones externos globales, que distribuyen el tráfico HTTP y HTTPS entre varias instancias de backend y entre varias regiones. Cloud CDN acelera las aplicaciones orientadas a Internet mediante los puntos de presencia (PoPs) perimetrales de Google y funciona con el balanceador de carga de aplicaciones externo global para distribuir contenido a los usuarios. Los back-ends están protegidos por políticas de seguridad de Google Cloud Armor que proporcionan un filtrado de capa 7. Para ello, analizan las solicitudes entrantes en busca de ataques web comunes u otros atributos de capa 7, lo que ayuda a bloquear el tráfico antes de que llegue a los servicios de back-end con balanceo de carga. La protección contra ataques DDoS volumétricos está habilitada de forma predeterminada.
Cuando un usuario solicita contenido de tu servicio, esa solicitud se envía al frontend global para aplicaciones accesibles desde Internet, que proporciona Cross-Cloud Network. Las políticas de seguridad de Cloud Armor evalúan la solicitud, empezando por las políticas de seguridad perimetrales de Cloud Armor. Si se permite la solicitud y Cloud CDN puede completarla, el contenido se recupera de la caché de Cloud Armor y se envía al usuario. Si la solicitud da como resultado un fallo de caché, las políticas de backend la evalúan y, según las reglas de la política, tu servidor backend la deniega o la completa.
Componentes de la arquitectura
El diagrama anterior incluye los siguientes componentes:
Balanceador de carga de aplicación externo global: este balanceador de carga de aplicación es un balanceador de carga de capa 7 basado en proxy que te permite ejecutar y escalar tus servicios. El balanceador de carga de aplicaciones distribuye el tráfico HTTP y HTTPS a backends alojados en varias Google Cloud plataformas. Application Load Balancer tiene las siguientes características:
- Backend configurable: esta arquitectura usa dos grupos de instancias gestionados (MIGs) en diferentes regiones, pero puedes configurar cualquier backend que admita el balanceador de carga de aplicaciones externo global. Puedes usar el mismo balanceador de carga para aplicaciones de GKE, Cloud Run, Cloud Run Functions y App Engine, así como para las alojadas en las instalaciones y en otras nubes, con una configuración de backend diferente. Para obtener más información, consulta el artículo Introducción a Application Load Balancer.
- División del tráfico: puedes usar el balanceador de carga de aplicaciones para gestionar el tráfico, incluida la gestión de versiones de software, enviando a diferentes usuarios a distintos servidores backend. En la arquitectura descrita en este documento, hay una división del tráfico simple de 60/40. Sin embargo, puedes cambiar esta división para crear esquemas de gestión del tráfico más complejos. Para obtener información sobre otras opciones de configuración, consulta los tiempos de espera y reintentos configurables y determina el modo de balanceo que prefieras.
Cloud CDN: la plataforma Cloud CDN actúa como caché. Se implementa con el servidor de origen para proporcionar el conjunto completo de funciones de Cloud CDN, incluidas QUIC y HTTP/2, así como controles de enrutamiento y almacenamiento en caché. Este enfoque permite que tu aplicación se escale a nivel mundial sin que el rendimiento se vea afectado, así como reducir los costes de ancho de banda y de computación del frontend. La configuración predeterminada que usa el frontend global se basa en las prácticas recomendadas de distribución de contenido y las prácticas recomendadas de seguridad web de Cloud CDN.
Cloud Armor: este componente incluye la protección frente a DDoS y reglas de WAF. La arquitectura tiene la siguiente configuración básica de Cloud Armor, que ayuda a mitigar los vectores de amenazas habituales:
Protección predeterminada frente a ataques DDoS volumétricos (capa 3 y capa 4).
Reglas de WAF preconfiguradas basadas en el conjunto de reglas principales de ModSecurity CRS 3.3. Estas reglas permiten que Cloud Armor evalúe docenas de firmas de tráfico distintas haciendo referencia a reglas con nombres predefinidos, en lugar de tener que definir cada firma manualmente.
Una configuración básica de la política de seguridad perimetral de Cloud Armor para filtrar las solicitudes entrantes y controlar el acceso a los servicios de backend protegidos y a los cubos de Cloud Storage.
Productos usados
Esta arquitectura de referencia usa los siguientes Google Cloud productos:
Factores del diseño
En esta sección se ofrecen directrices para ayudarte a usar este documento como punto de partida para desarrollar una arquitectura que cumpla tus requisitos específicos de seguridad, fiabilidad, eficiencia operativa, coste y rendimiento.
Seguridad, privacidad y cumplimiento
En esta sección se describen otros factores que debe tener en cuenta al usar esta arquitectura de referencia para implementar la aplicación web.
Establecer una configuración de seguridad básica
Para mejorar aún más la seguridad, la arquitectura descrita en este documento también es compatible con el plan de bases de Enterprise. Este plan ayuda a las organizaciones que usan Google Cloud a establecer una base segura para todas las cargas de trabajo futuras, incluida la configuración de Gestión de Identidades y Accesos (IAM), Cloud Key Management Service y Security Command Center.
Proteger los datos de los usuarios con Cloud CDN
En esta arquitectura, te recomendamos que no almacenes en caché contenido específico de usuarios.
Para almacenar en caché los tipos de contenido HTML (text/html
) y JSON (application/json
), defina encabezados cache-control explícitos en la respuesta de Cloud CDN. Asegúrate de no almacenar en caché los datos de un usuario y
de no mostrárselos a todos los usuarios.
Controlar el acceso a una aplicación con IAP
La arquitectura también es compatible con Identity-Aware Proxy (IAP). IAP verifica la identidad de un usuario y, a continuación, determina si se le debe permitir acceder a una aplicación. Para habilitar IAP en el balanceador de carga de aplicación en modo externo global o clásico, debes habilitarlo en los servicios de backend del balanceador de carga. Cloud Armor evalúa las solicitudes HTTP o HTTPS entrantes antes de que el balanceador de carga de aplicaciones las envíe para balancearlas. Si Cloud Armor bloquea una solicitud, IAP no la evalúa. Si Cloud Armor permite una solicitud, IAP la evalúa. La solicitud se bloquea si IAP no autentica la solicitud. Para obtener más información, consulta el artículo sobre la integración de Cloud Armor con otros productos de Google.
Optimización de costes
Como norma general, usar Cloud CDN junto con Cloud Armor puede ayudar a minimizar el efecto de los cargos por transferencia de datos salientes.
Cloud CDN
Los objetos estáticos que se sirven al cliente desde la caché no transitan por el balanceador de carga. Una estrategia de almacenamiento en caché eficaz puede reducir la cantidad de datos salientes que procesa el balanceador de carga y, por tanto, los costes.
Google Cloud Armor
Cloud Armor te ayuda a reducir los costes, ya que evita que se te cobre por el tráfico no deseado. Las solicitudes que bloquea Cloud Armor no generan una respuesta de tu aplicación, por lo que se reduce la cantidad de datos salientes que procesa el balanceador de carga. El efecto en tus costes depende del porcentaje de tráfico no deseado que se bloquea con las políticas de seguridad de Cloud Armor que implementes.
Los costes finales también pueden variar en función del número de servicios o aplicaciones que quieras proteger, del número de políticas y reglas de Cloud Armor que tengas, de la entrada y salida de caché y del volumen de datos. Para obtener más información, consulta lo siguiente:
- Precios de Cloud Armor
- Precios de Cloud Load Balancing
- Precios de Cloud CDN
- Para consultar el precio de tu caso de implementación específico, consulta la Google Cloud calculadora de precios.
Implementación
Para desplegar esta arquitectura de referencia, usa el ejemplo de Terraform.
Para obtener más información, consulta el README
.
La carpeta web_app_protection_example
incluye el archivo
(main.tf
). El código de este archivo crea la arquitectura descrita en este documento y proporciona asistencia adicional para la implementación automática.
La estructura de carpetas de la carpeta de Terraform es la siguiente:
- Repositorio de código fuente: The Web Application Protection Example forma parte del repositorio Web Application and API Protection (WAAP).
- CD y CI: la carpeta de compilación
contiene los siguientes archivos descriptivos de Jenkins, GitLab y Cloud Build:
- Jenkins: este repositorio incluye el archivo de Jenkins, que contiene las reglas que ejecuta la canalización.
- GitLab: este repositorio incluye un archivo YAML.gitlab-ci que contiene las reglas que ejecuta la canalización de GitLab.
- Cloud Build: este repositorio incluye el archivo de Cloud Build, que contiene las reglas basadas en los nombres de las ramas.
- El repositorio incluye una opción para la implementación en varios entornos (producción y desarrollo). Para obtener más información, consulta el archivo
README
.
Cuando confirmas un cambio en cualquier rama en la que se basa tu canalización, esos cambios activan una ejecución de la canalización y se integran en una nueva versión una vez que se completa. Cuando extraigas el conjunto de herramientas por primera vez, la solución se cargará en el Google Cloud proyecto que hayas elegido.
Siguientes pasos
Consulte más información sobre las prácticas recomendadas de los Google Cloud productos utilizados en esta arquitectura de referencia:
- Prácticas recomendadas de seguridad web
- Prácticas recomendadas para mejorar el rendimiento de los balanceadores de carga de aplicación externos
- Prácticas recomendadas para la distribución de contenido
- Prácticas recomendadas para activar las reglas de WAF de Cloud Armor
Cloud Armor Enterprise: Las funciones de Cloud Armor de esta arquitectura están disponibles en el nivel Cloud Armor Standard. Al registrar tu proyecto en Cloud Armor Enterprise, puedes usar funciones adicionales, como las siguientes:
- Inteligencia contra amenazas: le permite permitir o bloquear el tráfico a balanceadores de carga de aplicaciones externos en función de varias categorías de datos de inteligencia contra amenazas.
- Adaptive Protection, que ayuda a proteger tus Google Cloud aplicaciones, sitios web y servicios frente a ataques DDoS de capa 7, como inundaciones HTTP, así como otras actividades maliciosas de alta frecuencia de capa 7 (a nivel de aplicación). Adaptive Protection crea modelos de aprendizaje automático que detectan y alertan sobre actividades anómalas, generan una firma que describe el posible ataque y generan una regla de WAF de Cloud Armor personalizada para bloquear la firma.
- Visibilidad de los ataques DDoS: proporciona visibilidad a través de métricas, así como el registro de eventos como los intentos de ataque volumétrico de capa 3 y capa 4.
- Servicios adicionales, como asistencia para responder a ataques DDoS y protección de la factura contra ataques DDoS. Para obtener más información, consulta la descripción general de Cloud Armor Enterprise.
Para ver más arquitecturas de referencia, diagramas y prácticas recomendadas, consulta el centro de arquitectura de Cloud.
Colaboradores
Autores:
- Lihi Shadmi | Responsable de Producto
- David Tu | Ingeniero de clientes
Otros colaboradores:
- Alex Maclinovsky | Arquitecto empresarial
- Anderson Duboc | Ingeniero de clientes
- Grant Sorbo | Arquitecto de soluciones
- Michele Chubirka | Cloud Security Advocate
- Rob Harman | Responsable de Ingeniería de Soluciones Técnicas
- Susan Wu | Responsable de producto