Usa Google Cloud Armor, el balanceo de cargas y Cloud CDN para implementar frontends globales programables

Last reviewed 2024-04-04 UTC

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.

Arquitectura de aplicaciones web.

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:

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:

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:

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:

Colaboradores

Autores:

Otros colaboradores: