Resolución de conflictos: escalado automático de aplicaciones web de Azure con Azure Application Gateway y WAF
Descripción del problema: actualmente estoy diseñando una solución en Azure que requiere capacidades de escalado automático para mi aplicación web para garantizar la escalabilidad y un firewall de aplicaciones web (WAF) para proteger contra vulnerabilidades comunes, como ataques de inyección XSS y SQL. Sin embargo, me enfrento a un dilema con respecto al uso de Azure Application Gateway con WAF y el equilibrador de carga interno de Azure Web App para el escalado automático.
Ejemplo reproducible:
- He configurado Azure Application Gateway con WAF habilitado para proporcionar funciones de seguridad para mi aplicación web.
- Además, habilité el escalado automático de mi aplicación web de Azure para ajustar dinámicamente la cantidad de instancias según la demanda de tráfico.
Comportamiento esperado: Espero que la aplicación web de Azure escale dinámicamente para manejar distintos niveles de tráfico y, al mismo tiempo, se beneficie de las características de seguridad proporcionadas por WAF.
Comportamiento real: sin embargo, me preocupan los posibles conflictos entre el equilibrador de carga de Azure Application Gateway utilizado para WAF y el equilibrador de carga interno de la aplicación web de Azure utilizado para el escalado automático. No estoy seguro de si tener dos equilibradores de carga en la arquitectura podría generar conflictos o ineficiencias.
Intentos de resolver:
- Investigué la documentación y las mejores prácticas de Azure, pero no encontré una guía clara sobre la integración del escalado automático de aplicaciones web de Azure con Azure Application Gateway y WAF.
- He considerado arquitecturas alternativas pero no he identificado una solución que cumpla con los requisitos de escalabilidad y seguridad sin posibles conflictos.
Preguntás especificas:
- ¿Cuáles son las mejores prácticas para integrar el escalado automático de Azure Web App con Azure Application Gateway y WAF para garantizar tanto la escalabilidad como la seguridad?
- ¿Existen conflictos o consideraciones conocidas al utilizar varios equilibradores de carga en esta arquitectura?
- ¿Cómo puedo diseñar mi solución para aprovechar el escalado automático para la escalabilidad y el WAF para la seguridad sin introducir posibles conflictos o ineficiencias?
Azure Application Gateway y el equilibrador de carga interno de Azure Web App pueden funcionar juntos sin conflictos. Este es el por qué:
Azure Application Gateway opera en la capa de aplicación (Capa 7) del modelo OSI y maneja el tráfico HTTP/HTTPS. Enruta el tráfico según patrones de URL, por lo que puede alojar varios sitios web detrás de una única IP. También proporciona capacidades WAF.
El equilibrador de carga interno de Azure Web App funciona en una capa inferior y distribuye el tráfico entrante a las instancias disponibles de su aplicación web. No conoce Application Gateway; simplemente recibe solicitudes y las enruta a instancias disponibles.
Cuando habilita el escalado automático para su aplicación web de Azure, Azure ajusta automáticamente la cantidad de instancias según su configuración de escalado automático y la carga de su aplicación. Luego, el equilibrador de carga interno distribuye el tráfico entrante entre todas las instancias disponibles.
Entonces, en tu configuración:
Application Gateway recibe las solicitudes HTTP/HTTPS entrantes, aplica reglas WAF y reenvía las solicitudes a la aplicación web de Azure.
El equilibrador de carga interno de la aplicación web de Azure recibe las solicitudes de Application Gateway y las distribuye a las
instancias disponibles.
No hay conflicto entre los dos, ya que operan en diferentes niveles y tienen diferentes responsabilidades. Esta configuración le permite beneficiarse de las capacidades WAF de Application Gateway y la característica de escalado automático de Azure Web App.
Recuerde configurar las sondas de estado personalizadas en Application Gateway para que apunten a la ruta correcta en su aplicación web, de modo que pueda determinar con precisión el estado de sus instancias de aplicación web.