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 las prácticas recomendadas de Google Cloud para ayudar 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á dirigida a desarrolladores y propietarios de apps que deseen escalar su aplicación con un balanceador de cargas y proteger sus aplicaciones de ataques de denegación de servicio distribuido (DDoS) y basados en la Web con un firewall de aplicación web (WAF).
Arquitectura
En el siguiente diagrama, se muestra la arquitectura que se describe en este documento.
En esta arquitectura, la aplicación tiene balanceo de cargas con balanceadores de cargas de aplicaciones externos globales, que distribuyen el tráfico HTTP y HTTPS en varias instancias de backend, en varias regiones. Cloud CDN acelera las aplicaciones orientadas a Internet a través de los puntos de presencia perimetrales (PoP) de Google y funciona con el balanceador de cargas de aplicaciones externo global para entregar contenido a los usuarios. Los backends están protegidos por las políticas de seguridad de Google Cloud Armor que proporcionan filtros de capa 7 a través de la limpieza de las solicitudes entrantes de ataques web comunes o de otros atributos de capa 7, lo que ayuda a bloquear el tráfico antes de que llegue a los servicios de backend con balanceo de cargas. 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 orientadas a Internet, que proporciona el Cross‐Cloud Network. Las políticas de seguridad de Google Cloud Armor evalúan la solicitud, a partir de las políticas de seguridad perimetral de Google Cloud Armor. Si se permite la solicitud y Cloud CDN puede entregarla, el contenido se recupera de la caché de Google Cloud Armor y se envía al usuario. Si la solicitud da como resultado un error de caché, se evalúa a través de las políticas de backend y, luego, según las reglas de la política, que el servidor de backend rechaza o entrega.
Componentes de la arquitectura
En el diagrama anterior, se incluyen los siguientes componentes:
Balanceador de cargas de aplicaciones externo global: este balanceador de cargas de aplicaciones es un balanceador de cargas de capa 7 basado en proxy que te permite ejecutar y escalar tus servicios. El balanceador de cargas de aplicaciones distribuye el tráfico HTTP y HTTPS a los backends alojados en una variedad de plataformas de Google Cloud. El balanceador de cargas de aplicaciones tiene las siguientes funciones:
- Backend configurable: esta arquitectura usa dos grupos de instancias administrados (MIG) en diferentes regiones, pero puedes configurar cualquier backend que admite el balanceador de cargas de aplicaciones externo global. Puedes usar el mismo balanceador de cargas para aplicaciones de GKE, Cloud Run, Cloud Functions y App Engine, así como los alojados de forma local y en otras nubes con una configuración de backend diferente. Para obtener más información, consulta Descripción general del balanceador de cargas de aplicaciones.
- División del tráfico: puedes usar el balanceador de cargas de aplicaciones para la administración del tráfico, incluida la administración de las versiones de software; para ello, envía diferentes usuarios a diferentes servidores de 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 administración de tráfico más complejos. Para obtener más información acerca de las opciones de configuración adicionales, consulta los tiempos de espera y reintentos configurables y determina tu modo de balanceo preferido.
Cloud CDN: La plataforma de Cloud CDN actúa como una caché. Se implementa con el servidor de origen para proporcionar el kit completo de funciones de Cloud CDN, incluidos QUIC y HTTP/2, así como los controles de enrutamiento y almacenamiento en caché. Este enfoque permite que la aplicación escale de forma global sin comprometer el rendimiento y, además, reduzca el ancho de banda y los costos de procesamiento de frontend. La configuración predeterminada que usa el frontend global se basa en las prácticas recomendadas de entrega de contenido y las prácticas recomendadas de seguridad web de Cloud CDN.
Google Cloud Armor: Este componente incluye protección contra DDoS y reglas de WAF. La arquitectura tiene la siguiente configuración básica de Google Cloud Armor, que ayuda a mitigar contra vectores de amenaza comunes:
Protección predeterminada contra 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 Google Cloud Armor evalúe decenas de firmas de tráfico distintas a través de referencias a reglas con nombre previo, en lugar de requerir que definas cada firma de forma manual.
Una configuración básica de la política de seguridad perimetral de Google Cloud Armor para filtrar las solicitudes entrantes y controlar el acceso a los servicios de backend protegidos y los buckets de Cloud Storage.
Productos usados
En esta arquitectura de referencia, se usan los siguientes productos de Google Cloud:
Consideraciones del diseño
En esta sección, se proporciona orientación para ayudarte a usar este documento como punto de partida para desarrollar una arquitectura que cumpla con tus requisitos específicos de seguridad, confiabilidad, eficiencia operativa, costo y rendimiento.
Security, privacy, and compliance
En esta sección, se describen los factores adicionales que debes tener en cuenta cuando usas esta arquitectura de referencia para implementar la aplicación web.
Establece un modelo de referencia de seguridad
Para ayudarte a mejorar aún más la seguridad, la arquitectura que se describe en este documento también es compatible con el plano de bases empresarial. El plano ayuda a las organizaciones que usan Google Cloud a establecer un modelo de referencia seguro para todas las cargas de trabajo futuras, incluida la configuración de Identity and Access Management (IAM), Cloud Key Management Service y Security Command Center.
Protege los datos del usuario con Cloud CDN
En esta arquitectura, te recomendamos que no almacenes en caché contenido específico del usuario.
Para almacenar en caché tipos de contenido HTML (text/html
) y JSON (application/json
), configura encabezados de control de caché explícitos en la
respuesta de Cloud CDN. Asegúrate de no almacenar en caché los datos de un usuario y
entregarlos a todos los usuarios.
Controla el acceso a tu aplicación con IAP
La arquitectura también es compatible con Identity-Aware Proxy (IAP). IAP verifica la identidad del usuario y, luego, determina si se le debe permitir el acceso a una aplicación. Si deseas habilitar IAP para el balanceador de cargas de aplicaciones para el modo externo global o el modo clásico, debes habilitarlo en los servicios de backend del balanceador de cargas. Google Cloud Armor evalúa las solicitudes HTTP/HTTPS entrantes antes de que se envíen para el balanceo de cargas de aplicaciones. Si Google Cloud Armor bloquea una solicitud, IAP no la evalúa. Si Google Cloud Armor permite una solicitud, IAP evalúa esa solicitud. La solicitud se bloquea si IAP no la autentica. Para obtener más información, consulta Integra Google Cloud Armor con otros productos de Google.
Optimización de costos
Como regla general, el uso de Cloud CDN junto con Google Cloud Armor puede ayudar a minimizar el efecto de los cargos de transferencia de datos.
Cloud CDN
Los objetos estáticos que se entregan al cliente desde la caché no pasan a través del balanceador de cargas. Una estrategia eficaz de almacenamiento en caché puede reducir la cantidad de datos salientes que procesa el balanceador de cargas y disminuir tus costos.
Google Cloud Armor
Google Cloud Armor te ayuda a reducir los costos, ya que evita que se cobre por el tráfico no deseado en tu cuenta. Las solicitudes que bloquea Google Cloud Armor no generan una respuesta desde tu app, lo que reduce de forma eficaz la cantidad de datos salientes que procesa el balanceador de cargas. El efecto en tus costos depende del porcentaje de tráfico no deseado que bloquean las políticas de seguridad de Google Cloud Armor que implementas.
Los costos finales también pueden variar según la cantidad de servicios o aplicaciones que desees proteger, la cantidad de políticas y reglas de Google Cloud Armor que tengas, el llenado y la salida de caché, y el volumen de datos. Para obtener más información, consulta lo siguiente:
- Precios de Google Cloud Armor
- Precios de Cloud Load Balancing
- Precios de Cloud CDN
- Para encontrar el precio de tu situación de implementación específica, consulta la calculadora de precios de Google Cloud.
Deployment
Para implementar esta arquitectura de referencia, usa el
ejemplo de Terraform.
Para obtener más información, consulta el archivo 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 en la carpeta de Terraform es la siguiente:
- Repositorio de código fuente: el ejemplo de protección de aplicación web es parte del repositorio de protección de API y aplicaciones web (WAAP).
- CD y CI: la carpeta de compilación
contiene los siguientes archivos descriptivos para 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 nombres de ramas.
- El repositorio incluye una opción de implementación en entornos múltiples
(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 canalización y los cambios se integran a una versión nueva una vez que se completa. Cuando extraigas el kit de herramientas por primera vez, la solución se cargará al proyecto de Google Cloud que elegiste.
¿Qué sigue?
Obtén más información sobre las prácticas recomendadas para los productos de Google Cloud que se usan en esta arquitectura de referencia:
- Prácticas recomendadas de seguridad web
- Prácticas recomendadas para el rendimiento del balanceador de cargas de aplicaciones externo
- Prácticas recomendadas para la entrega de contenido
- Prácticas recomendadas para ajustar las reglas de WAF de Google Cloud Armor
Cloud Armor Enterprise: Las capacidades de Google Cloud Armor en esta arquitectura están disponibles en el nivel Standard de Google Cloud Armor. Inscribir tu proyecto en Cloud Armor Enterprise te permite usar funciones adicionales como las siguientes:
- Threat Intelligence, con esta opción puedes permitir o bloquear el tráfico a balanceadores de cargas de aplicaciones externos según varias categorías de datos de inteligencia de amenazas.
- Protección adaptable, que ayuda a proteger tus aplicaciones, sitios web y servicios de Google Cloud contra ataques DDoS de capa 7, como inundaciones HTTP, así como otras actividades maliciosas de alta frecuencia (a nivel de la aplicación) de la capa 7. Protección adaptable compila modelos de aprendizaje automático que detectan actividad anómala y alertan sobre ella, generan una firma que describe el posible ataque y generan una regla de WAF personalizada de Google Cloud Armor para bloquear la firma.
- Visibilidad de ataques DDoS, que proporciona visibilidad a través de las métricas y de registros de eventos, como intentos de ataque volumétricos de capa 3 y capa 4.
- Servicios adicionales, como asistencia de respuestas DDoS y protección contra facturas DDoS. Para obtener más información, consulta Descripción general de Cloud Armor Enterprise.
Para obtener más información sobre las arquitecturas de referencia, los diagramas y las prácticas recomendadas, explora Cloud Architecture Center.
Colaboradores
Autores:
- Lihi Shadmi | Gerente de producto
- David Tu | Ingeniero de Atención al cliente
Otros colaboradores:
- Alex Maclinovsky | Arquitecto empresarial
- Anderson Duboc | Ingeniero de Atención al cliente
- Grant Sorbo | Arquitecto de Soluciones
- Michele Chubirka | Representante de seguridad de Cloud
- Rob Harman | Gerente ingeniero de soluciones técnicas
- Susan Wu | Gerente de Productos Salientes