El auge de la computación en la nube, y en particular de las ofertas de Plataforma como Servicio (PaaS) y Contenedor como Servicio (CaaS), está cambiando la forma en que las empresas implementan y operan sus aplicações comerciales. Uno de los desafíos más importantes al diseñar aplicações en la nube es elegir servicios de nube totalmente administrados que reduzcan costos y tareas operativas que consumen mucho tiempo sin comprometer la seguridad.
Esta publicación de blog le muestra cómo alojar aplicações en Microsoft Azure App Service y protegerlas con NGINX Plus para evitar ataques de Internet.
Microsoft Azure App Service es una plataforma de nivel empresarial y totalmente administrada que permite a las organizaciones implementar aplicaciones web, API y móviles en Microsoft Azure sin administrar la infraestructura subyacente, como se muestra en la Figura 1. Azure App Service proporciona las siguientes características principales:
Con Azure App Service, Microsoft proporciona una forma rica y rápida de ejecutar aplicações web en la nube. De hecho, los desarrolladores pueden desarrollar sus aplicações localmente con ASP.NET, Java, Node.js, PHP y Python e implementarlas fácilmente en Azure App Service con Microsoft Visual Studio o la CLI de Azure. Los equipos de DevOps también pueden beneficiarse de la función de implementación continua de Azure App Service para implementar versiones de aplicação de forma rápida y fiable en múltiples entornos.
Las aplicações en Azure App Service pueden acceder a otros recursos implementados en Azure o pueden establecer conexiones a través de VPN con recursos corporativos locales.
Básicamente, una aplicação creada con Azure App Service se expone directamente a Internet y se asigna a un subdominio de azurewebsites.net . Para mayor seguridad, puedes proteger tu aplicación con terminación SSL o con protocolos de autenticación y autorización como OAuth2 o OpenID Connect (OIDC). Sin embargo, no es posible personalizar la red con reglas de seguridad de entrada y salida detalladas ni aplicar middleware como un firewall de aplicação web (WAF) para evitar ataques maliciosos o exploits que provienen de Internet.
Si ejecuta aplicações confidenciales en Azure App Service y desea protegerlas, puede usar Azure App Service Environments (ASE). Un ASE es un entorno aislado implementado en una red virtual y dedicado a las aplicações de un solo cliente. De esta forma obtienes mayor control sobre el tráfico entrante y saliente de la red de aplicação .
Con ASEs puedes implementar aplicaciones web, API, móviles o de funciones dentro de un entorno más seguro a muy alta escala, como se muestra en la Figura 2.
Hay dos versiones del ASE: ASE v1 y ASE v2. En esta publicación analizamos ASE v2.
Puede crear un nuevo ASE v2 manualmente mediante el Portal de Azure o automáticamente mediante Azure Resource Manager.
Al crear un nuevo ASE, debe elegir entre dos tipos de implementación:
En el siguiente ejemplo, elegimos un ASE ILB para evitar el acceso desde Internet. Por lo tanto, las aplicações implementadas en nuestro ASE solo son accesibles desde máquinas virtuales (VM) que se ejecutan en la misma red. Los siguientes dos comandos usan Azure Resource Manager y la CLI de Azure para aprovisionar un nuevo ILB ASE v2 :
$ modo de configuración de Azure arm $ grupo de implementación de Azure crear mi-grupo-de-recursos mi-nombre-de-implementación --template-uri https://raw.githubusercontent.com/azure/azure-quickstart-templates/master/201-web-app-asev2-ilb-create/azuredeploy.json
Si, por otro lado, quieres que tu aplicación sea accesible desde Internet, tendrás que protegerla contra atacantes maliciosos que podrían intentar robar información confidencial almacenada en tu aplicação.
Para proteger las aplicações en la capa 7 en un ASE, tiene dos opciones principales:
(Puede sustituir un controlador de entrega de aplicaciones personalizadas con capacidades WAF, pero no cubrimos ese caso de uso aquí).
La elección de la solución depende de sus limitaciones de seguridad. Por un lado, Azure Aplicação Gateway proporciona una solución llave en mano para el cumplimiento de la seguridad y no requiere que usted mantenga la infraestructura subyacente. Por otro lado, implementar NGINX Plus en máquinas virtuales le brinda una pila poderosa con más control y flexibilidad para ajustar sus reglas de seguridad.
Elegir entre Azure Aplicação Gateway y NGINX Plus para equilibrar la carga y proteger las aplicações creadas dentro de un ASE requiere una buena comprensión de las características que ofrece cada solución. Si bien Azure Aplicação Gateway funciona para casos de uso simples, para casos de uso complejos no proporciona muchas de las características que vienen estándar en NGINX Plus.
En la siguiente tabla se compara la compatibilidad con las características de seguridad y equilibrio de carga en Azure Aplicação Gateway y NGINX Plus. Más detalles sobre las características de NGINX Plus aparecen debajo de la tabla.
función | Puerta de enlace de aplicação de Azure | NGINX Plus |
---|---|---|
Capacidad de mitigación | Capa de aplicação (Capa 7) | Capa de aplicação (Capa 7) |
Compatible con HTTP | ✅ | ✅ |
Compatible con HTTP/2 | ❌ | ✅ |
Compatible con WebSockets | ❌ | ✅ |
Descarga de SSL | ✅ | ✅ |
Capacidades de enrutamiento | Decisión simple basada en la URL de solicitud o afinidad de sesión basada en cookies | Capacidades de enrutamiento avanzadas |
Listas de control de acceso basadas en direcciones IP | ❌ (debe definirse en el nivel de aplicación web en Azure) | ✅ |
Puntos finales | Cualquier dirección IP interna de Azure, dirección IP pública de Internet, máquina virtual de Azure o servicio en la nube de Azure | Cualquier dirección IP interna de Azure, dirección IP pública de Internet, máquina virtual de Azure o servicio en la nube de Azure |
Compatibilidad con Azure Vnet | Aplicações tanto internas (Vnet) como orientadas a Internet | Aplicações tanto internas (Vnet) como orientadas a Internet |
WAF | ✅ | ✅ |
Ataques volumétricos | Parcial | Parcial |
Ataques de protocolo | Parcial | Parcial |
Ataques a la capa de aplicaciones | ✅ | ✅ |
Autenticación básica HTTP | ❌ | ✅ |
Autenticación JWT | ❌ | ✅ |
SSO de OpenID Connect | ❌ | ✅ |
Como puede ver, NGINX Plus y Azure Aplicação Gateway actúan como ADC con funciones de equilibrio de carga de capa 7 más un WAF para garantizar una protección sólida contra vulnerabilidades y exploits web comunes.
NGINX Plus proporciona varias características adicionales que faltan en Azure Aplicação Gateway:
Para mayor seguridad, puede implementar Azure DDoS Protection para mitigar amenazas en las capas 3 y 4 , complementando las características de mitigación de amenazas de capa 7 proporcionadas por Azure Aplicação Gateway o NGINX Plus.
La Figura 3 muestra cómo combinar NGINX Plus y Azure App Service para proporcionar un entorno seguro para ejecutar aplicações comerciales en producción. Esta estrategia de implementación utiliza NGINX Plus por sus funciones de equilibrio de carga y WAF.
La implementación combina los siguientes componentes:
Entorno de Azure App Service : esta implementación de muestra utiliza dos aplicações web de muestra ( Web App 1 y Web App 2 ) para demostrar cómo proteger y equilibrar la carga de diferentes aplicaciones web con NGINX Plus. En NGINX Plus, usted distribuye solicitudes a diferentes aplicações web configurando bloques ascendentes
distintos y realiza el enrutamiento de contenido según URI con bloques de ubicación
. A continuación se muestra la configuración mínima de NGINX Plus que cumple este objetivo (aquí todas las solicitudes van al mismo grupo ascendente):
backend ascendente { dirección IP del servidor de su ASE-ILB ; } servidor { ubicación / { proxy_set_header Host $host; proxy_pass http://backend; } }
Azure también admite grupos de recursos como una forma sencilla de agrupar los recursos de Azure para una aplicação de manera lógica. El uso de un grupo de recursos no tiene ningún impacto en el diseño y la topología de la infraestructura, y no los mostramos aquí.
Un conjunto de escalado de máquinas virtuales de Azure le brinda el poder de la virtualización con la capacidad de escalar en cualquier momento sin tener que comprar ni mantener el hardware físico que admite el escalado. Sin embargo, usted sigue siendo responsable del mantenimiento de la máquina virtual mediante la realización de tareas como configuración, aplicación de parches, actualizaciones de seguridad e instalación del software que se ejecuta en ella.
En la arquitectura que se muestra en la Figura 4, las instancias NGINX Plus se implementan para alta disponibilidad activa-activa dentro de un conjunto de escalado de máquinas virtuales de Azure. Una configuración activa-activa es excelente porque todas las máquinas virtuales NGINX Plus pueden manejar una solicitud entrante enrutada por Azure Load Balancer, lo que le brinda una capacidad rentable.
Con los conjuntos de escalado de máquinas virtuales de Azure, también puede configurar fácilmente el escalado automático de instancias de NGINX Plus en función del uso promedio de la CPU. En este caso, debes tener cuidado de sincronizar los archivos de configuración de NGINX Plus. Puede utilizar la función de compartir configuración de NGINX Plus para este propósito, como se describe en la Guía de administración de NGINX Plus .
Al usar Azure App Service para sus aplicações en la nube y NGINX Plus delante de sus aplicaciones web, API y backends móviles, puede equilibrar la carga y proteger estas aplicações a escala global. Al usar NGINX Plus junto con Azure App Service, obtiene una infraestructura con equilibrio de carga completo y un alto nivel de protección contra exploits y ataques de la web. Esto garantiza un diseño robusto para ejecutar aplicações críticas en producción de forma segura.
Descripción general de las aplicaciones web (Microsoft)
Introducción a los entornos de App Service (Microsoft)
Cree una puerta de enlace de aplicação con un firewall de aplicação web mediante el portal de Azure (Microsoft)
Comparar las características de NGINX Open Source y NGINX Plus (NGINX)
Equilibrio de carga HTTP (NGINX)
El coautor invitado Cedric Derue es arquitecto de soluciones y MVP de Microsoft en Altran. El coautor invitado Vincent Thavonekham es director regional de Microsoft y MVP de Azure en VISEO.
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.