Dado que más cargas de trabajo se adhieren al enfoque "API-first" para su diseño, y al creciente número y gravedad de las amenazas a las aplicaciones web a través de Internet, es fundamental tener una estrategia de seguridad para proteger las API. Un paso hacia la seguridad de la API es proteger el tráfico de red mediante el patrón de enrutamiento de puerta de enlace. Use la puerta de enlace para restringir las ubicaciones de origen de tráfico y la calidad del tráfico, además de admitir reglas de enrutamiento flexibles. En este artículo se describe cómo usar Azure Application Gateway y Azure API Management para proteger el acceso a una API.
Arquitectura
En este artículo no se abordan los servicios subyacentes de la aplicación, como App Service Environment, Azure SQL Managed Instance y Azure Kubernetes Service. Esas partes del diagrama solo muestran lo que puede hacer como solución más amplia. En este artículo se analizan específicamente las áreas sombreadas, API Management y Application Gateway.
Descargue un archivo Visio de esta arquitectura.
Flujo de trabajo
Application Gateway recibe solicitudes HTTP permitidas por el grupo de seguridad de red (NSG) de su subred.
Después, el firewall de aplicaciones web (WAF) en Application Gateway comprueba la solicitud en las reglas de WAF, incluido las reglas personalizadas de geomatch. Si la solicitud es válida, la solicitud continúa.
Application Gateway configura un mecanismo de proxy de dirección URL que envía la solicitud al grupo de back-end adecuado. Por ejemplo, en función del formato de dirección URL de la llamada API:
Las direcciones URL con formato como
api.<some-domain>/external/*
pueden comunicarse con el back-end para interactuar con las API solicitadas.Las llamadas con formato
api.<some-domain>/*
van a un punto muerto ("sinkpool"), que es un grupo de back-end sin destino.
Además, Application Gateway acepta y actúa como proxy de llamadas internas, que proceden de recursos de la misma red virtual de Azure, en
api.<some-domain>/internal/*
.Por último, en el nivel de API Management, las API se configuran para aceptar llamadas con los siguientes patrones:
api.<some-domain>/external/*
api.<some-domain>/internal/*
En este escenario, API Management usa dos tipos de direcciones IP, pública y privada. Las direcciones IP públicas son para la comunicación interna en el puerto 3443 y para el tráfico de API en tiempo de ejecución en la configuración de red virtual externa. Cuando API Management envía una solicitud a un back-end público orientado a Internet, muestra una dirección IP pública como origen de la solicitud. Para obtener más información, consulte Direcciones IP del servicio API Management en una red virtual.
Una regla de enrutamiento en el nivel de Application Gateway redirige correctamente a los usuarios de
portal.<some-domain>/*
al portal para desarrolladores, de modo que los desarrolladores puedan administrar las API y sus configuraciones desde entornos internos y externos.
Componentes
Azure Virtual Network permite que muchos tipos de recursos de Azure se comuniquen de forma privada entre sí, con Internet y con las redes locales. En esta arquitectura, Application Gateway es responsable de la tunelización del tráfico de Internet público hacia esta red privada.
Azure Application Gateway es un equilibrador de carga de tráfico web que administra el tráfico a las aplicaciones web. Este tipo de enrutamiento se conoce como equilibrio de carga de capa de aplicación (OSI capa 7). En esta arquitectura, la puerta de enlace no solo se utiliza para enrutamiento, sino que también hospeda un firewall de aplicaciones web (WAF) para protegerse frente a vectores de ataque comunes basados en web.
Azure API Management es una plataforma híbrida de varias nubes para administrar las API en todos los entornos. API Management crea puertas de enlace de API modernas y coherentes para los servicios de back-end existentes. En esta arquitectura, API Management se utiliza en un modo totalmente privado para descargar dudas transversales del código API y los hosts.
Recomendaciones
Esta solución se centra en implementar la solución completa, y en probar el acceso a las API desde dentro y fuera de la red virtual de API Management. Para obtener información sobre el uso del proceso de integración de redes virtuales de API Management, consulte Integración de API Management en una red virtual interna con Application Gateway.
Para comunicarse con recursos privados en el back-end, Application Gateway y API Management deben estar en la misma red virtual que los recursos o en una red virtual emparejada.
El modelo de implementación privado interno permite que API Management se conecte a una red virtual existente, lo que hace que sea accesible desde dentro del contexto de esa red. Para habilitar esta característica, implemente los niveles Desarrollador o Premium de API Management.
Administre los certificados de App Gateway en Azure Key Vault.
Para personalizar las interacciones con los servicios, puede usar entradas CNAME.
Alternativas
Puede usar otros servicios para ofrecer un nivel similar de protección de firewall y Web Application Firewall (WAF):
- Azure Front Door
- Azure Firewall
- Soluciones de asociados, como Barracuda
- Otras soluciones disponibles en Azure Marketplace
Consideraciones
Confiabilidad
Azure Application Gateway siempre se implementa de forma de alta disponibilidad, independientemente del recuento de instancias. Para evitar el impacto de un mal funcionamiento de una zona, puede configurar Application Gateway para abarcar varias zonas de disponibilidad. Para obtener más información, consulte Escalado automático y alta disponibilidad.
Habilite la redundancia de zona para los componentes de servicio de API Management para proporcionar resistencia y alta disponibilidad. La redundancia de zona replica la puerta de enlace y el plano de control de API Management entre centros de datos en zonas separadas físicamente, lo que los hace resistentes a errores de zona. El nivel Premium de API Management es necesario para admitir zonas de disponibilidad.
API Management también admite implementaciones de varias regiones, lo que puede mejorar la disponibilidad si una región se queda sin conexión. Para más información, consulte implementación en varias regiones. En esta topología, es importante tener también una instancia de Application Gateway por región, ya que Application Gateway es un servicio regional.
Seguridad
Para obtener más información sobre la seguridad de Application Gateway, consulte Línea de base de seguridad de Azure para Application Gateway.
Para obtener más información sobre la seguridad de API Management, consulte Línea de base de seguridad de Azure para API Management.
Azure DDoS Protection, combinado con los procedimientos recomendados de diseño de aplicaciones, proporciona características mejoradas de mitigación de DDoS para ofrecer una mejor defensa frente a los ataques DDoS. Debe habilitar Azure DDOS Protection en cualquier red virtual perimetral.
Optimización de costos
El costo de esta arquitectura depende de aspectos de configuración, por ejemplo:
- Niveles de servicio
- Escalabilidad, es decir, el número de instancias asignadas dinámicamente por los servicios para admitir una demanda determinada
- Si esta arquitectura se ejecutará continuamente o solo unas horas al mes
Después de evaluar estos aspectos, vaya a la Calculadora de precios de Azure para calcular los precios.
Eficiencia del rendimiento
Application Gateway es el punto de entrada de esta arquitectura, y la característica WAF requiere capacidad de procesamiento adicional para el análisis de cada solicitud. Para permitir que Application Gateway expanda su capacidad de cálculo en el momento, es importante habilitar el escalado automático. Para obtener más información, consulte Especificación de la escalabilidad automática. Siga las recomendaciones de documentación del producto sobre el tamaño de la subred para Application Gateway. Esto garantiza que la subred sea lo suficientemente grande como para admitir la escalabilidad horizontal completa.
Para admitir escenarios altamente simultáneos, active el escalado automático de API Management. El escalado automático expande las funcionalidades de API Management en respuesta al aumento en el número de solicitudes entrantes. Para más información, consulte Escalado automático de una instancia de Azure API Management.
Implementación de este escenario
Este escenario se muestra en la publicación de la galería de inicio rápido de Azure de Application Gateway con API Management interno y aplicación web.
Pasos siguientes
Diseñe las API siguiendo buenas directrices de diseño de API web e impleméntelas con buenas prácticas de implementación de API web.
Recursos relacionados
- Información general del enrutamiento basado en URL
- Tutorial: Creación de una puerta de enlace de aplicaciones con reglas de enrutamiento basadas en rutas de dirección URL con Azure Portal
- Tutorial: Creación de una puerta de enlace de aplicaciones con redirección basada en rutas de dirección URL con la CLI de Azure