Las API se han vuelto cada vez más destacadas en la forma en la que las empresas y los clientes acceden a los servicios, tanto interna como externamente. Internamente, las API se usan para acceder a aplicaciones de línea de negocio, soluciones creadas internamente e integraciones de terceros. Externamente, más empresas buscan ser productivos y monetizar sus API. Teniendo en cuenta esta tendencia, API Management se convierte en un componente central para un enfoque estándar de administración, gobernanza y publicación de API para audiencias internas y externas.
Con la ayuda de Azure Application Gateway, ahora es posible proteger y restringir el acceso de las API que se proporcionan mediante Azure API Management. En este artículo, se describe una solución en la que puede administrar las API internas y externas mediante una única instancia de API Management. Puede mantener una posición segura de estar expuesta directamente mediante Internet, pero en su lugar se accede a ella mediante una instancia de Application Gateway.
Nota:
Esta arquitectura se usa como base de las instrucciones para Azure API Management en las zonas de aterrizaje de Azure en Cloud Adoption Framework.
Arquitectura
Este diagrama de arquitectura comienza con un cuadro que abarca todo y representa el ámbito de una suscripción, una zona DNS privada donde se resolverán los dominios privados y el ámbito de una red virtual llamada red virtual APIM-CS. En la parte superior de la suscripción hay un cuadro que indica que se trata de una carga de trabajo local. El cuadro tiene un icono de servidor dentro de él. Una canalización indica una conexión de sitio a sitio o Azure ExpressRoute se conecta a la instancia de API Management de la suscripción de Azure. Siete cuadros más pequeños están dentro del cuadro grande que muestra la suscripción de Azure. Cuatro de los cuadros están en la fila superior y tres están en la fila inferior. Cada cuadro individual representa una subred independiente, con un grupo de seguridad de red adjunto. Desde la parte izquierda, hay una dirección IP pública que está asociada a Azure Application Gateway en el cuadro de la izquierda de la fila superior. Application Gateway también reside dentro de uno de los siete cuadros más pequeños, con la subred llamada App GW. A la derecha hay otro cuadro que contiene la instancia de API Management, con la subred llamada APIM. Junto a él se encuentra el tercer cuadro de la fila superior, que contiene un punto de conexión privado para la instancia de Azure Functions en la subred llamada PE. El cuadro más a la derecha de la fila superior es la subred de back-end que contiene las aplicaciones de funciones de Azure, el plan de Azure App Service de la función y la cuenta de almacenamiento asociada a la aplicación de funciones. En la fila inferior, comenzando por la izquierda, hay un cuadro que contiene Azure Bastion en la subred Bastion. El segundo cuadro contiene la máquina virtual de jumbox de administración en la subred Jump Box. El último cuadro de la fila inferior es el agente de DevOps incluido en la subred de DevOps. En la parte inferior derecha de la imagen, hay tres recursos compartidos con sus respectivos iconos. De izquierda a derecha, son los siguientes cuadros: almacén de claves, Application Insights y área de trabajo de Log Analytics. Hay dos conjuntos de flujos de trabajo. El primer flujo de trabajo se indica con círculos negros y el otro flujo de trabajo se indica con círculos azules, que se explicarán en secciones posteriores. El flujo de trabajo negro indica el acceso de las API que están disponibles externamente. El flujo comienza desde el usuario que accede a la dirección IP pública. A continuación, la flecha apunta en la dirección de la instancia de Application Gateway, desde la instancia de Application Gateway al punto de conexión privado y desde el punto de conexión privado hasta la aplicación de funciones. El flujo de trabajo azul comienza desde un servidor local, con una flecha que apunta a la instancia de API Management, mediante un icono de canalización que indica una conexión de sitio a sitio o con ExpressRoute. El resto del flujo es el mismo que se ha descrito anteriormente: de API Management al punto de conexión privado y del punto de conexión privado a la función de Azure.
En esta arquitectura, se supone que hay directivas en vigor del acelerador de zonas de aterrizaje de Azure y que el grupo de administración controla la estructura en sentido descendente.
Descargue un archivo Visio de esta arquitectura.
Flujo de trabajo
Escenario híbrido (círculos azules)
Este escenario requiere una conexión de sitio a sitio o de Azure ExpressRoute al entorno local.
- Una aplicación local requiere acceso a una API interna que se proporciona mediante Azure API Management.
- API Management se conecta a las API de back-end hospedadas en Azure Functions. Esta conexión se realiza mediante un punto de conexión privado, que está disponible mediante el plan Premium de Azure Functions y se hospeda en su propia subred.
- El punto de conexión privado accede de forma segura a la API interna hospedada en Azure Functions.
Escenario de acceso externo (círculos negros)
- Una aplicación externa accede a una dirección IP pública o un FQDN personalizado, que está asociado a Azure Application Gateway.
- Application Gateway actúa como firewall de aplicaciones web, que requiere certificados PFX para la terminación SSL.
- API Management se conecta a las API de back-end, que se hospedan en Azure Functions, mediante un punto de conexión privado. Este punto de conexión está disponible mediante el plan Premium de Azure Functions y se hospeda en su propia subred.
- El punto de conexión privado accede de forma segura a la API disponible externamente hospedada en Azure Functions.
Componentes
Esta arquitectura utiliza los siguientes componentes:
Azure API Management es un servicio administrado que permite administrar servicios en entornos híbridos y de varias nubes. API Management actúa como una fachada para abstraer la arquitectura de back-end y proporciona control y seguridad para la observabilidad y el consumo de las API para usuarios internos y externos.
Azure Functions es una solución sin servidor que permite centrarse más en bloques de código que se pueden ejecutar con una administración de infraestructura mínima. Las funciones se pueden hospedar en varios planes de hospedaje, aunque esta arquitectura de referencia usa el plan Premium debido al uso de puntos de conexión privados.
Azure Application Gateway es un servicio administrado que actúa como equilibrador de carga de capa 7 y firewall de aplicaciones web. En este escenario, la puerta de enlace de aplicaciones protege la instancia interna de APIM, lo que permite usar el modo interno y externo.
Las zonas DNS privadas de Azure DNS le permiten administrar y resolver nombres de dominio dentro de una red virtual sin necesidad de implementar una solución DNS personalizada. Una zona DNS privada se puede alinear a una o varias redes virtuales mediante vínculos de red virtual. Debido a que Azure Functions se expone mediante un punto de conexión privado que usa esta arquitectura de referencia, debe usar una zona DNS privada.
Application Insights de Azure Monitor ayuda a los desarrolladores a detectar anomalías, diagnosticar problemas y comprender los patrones de uso. Application Insights proporciona una administración y supervisión del rendimiento de las aplicaciones extensible para las aplicaciones web en directo. Se admiten varias plataformas, como .NET, Node.js, Java y Python. Admite aplicaciones hospedadas en Azure, en el entorno local, en un entorno híbrido o en otras nubes públicas. Application Insights se incluye como parte de esta arquitectura de referencia para supervisar los comportamientos de la aplicación implementada.
Log Analytics de Azure Monitor permite editar y ejecutar consultas de registro con datos de los registros de Azure Monitor, opcionalmente desde Azure Portal. Los desarrolladores pueden ejecutar consultas sencillas para un conjunto de registros o usar Log Analytics para realizar análisis avanzados. Después, pueden visualizar los resultados. Log Analytics se configura como parte de esta arquitectura de referencia para agregar todos los registros de supervisión para más análisis e informes.
Azure Virtual Machines es un recurso de proceso que se puede usar para hospedar muchas cargas de trabajo diferentes. En esta arquitectura de referencia, las máquinas virtuales se usan para proporcionar un servidor jumpbox de administración, así como para proporcionar un host para el agente de DevOps o el ejecutor de GitHub.
Azure Key Vault es un servicio en la nube que almacena y accede de forma segura a los secretos, que van desde claves y contraseñas de API hasta certificados y claves criptográficas. Esta arquitectura de referencia usa Azure Key Vault para almacenar los certificados SSL que usa la instancia de Application Gateway.
Azure Bastion es una plataforma como servicio que se aprovisiona dentro de la red virtual del desarrollador. Proporciona conectividad RDP/SSH segura a las máquinas virtuales de los desarrolladores desde Azure Portal mediante TLS. Con Azure Bastion, las máquinas virtuales ya no requieren una dirección IP pública para conectarse mediante RDP/SSH. Esta arquitectura de referencia usa Azure Bastion para acceder al servidor del agente de DevOps o del ejecutor de GitHub, o al servidor jumpbox de administración.
Si usa una herramienta de DevOps, como Azure DevOps o GitHub, los agentes o ejecutores hospedados en la nube funcionan mediante la red pública de Internet. Dado que API Management en esta arquitectura se establece en una red interna, deberá usar un agente de DevOps que tenga acceso a la red virtual. El agente de DevOps le ayudará a implementar directivas y otros cambios en las API de la arquitectura. Estas se pueden usar para dividir el proceso y permitir a los equipos de desarrollo implementar cambios para cada API. Son ejecutadas por los ejecutores de DevOps.
Alternativas
Para los servicios de back-end a los que se conecta la instancia de API Management, hay disponibles varias alternativas además de Azure Functions, que se usa en esta implementación de referencia:
- Azure App Service es un servicio basado en HTTP totalmente administrado que compila, implementa y escala aplicaciones web. Se admiten .NET, .NET Core, Java, Ruby, Node.js, PHP y Python. Las aplicaciones se pueden ejecutar y escalar en entornos basados en Windows o Linux.
- Azure Kubernetes Service ofrece clústeres de Kubernetes totalmente administrados para una experiencia integrada de integración continua y entrega continua (CI/CD), gobernanza y seguridad.
- Azure Logic Apps es una plataforma basada en la nube que crea y ejecuta flujos de trabajo automatizados. Puede encontrar un ejemplo de arquitectura de referencia en Integración empresarial básica en Azure.
- Azure Container Apps permite ejecutar microservicios y aplicaciones contenedorizadas en una plataforma sin servidor.
En el caso de las implementaciones de varias regiones, considere la posibilidad de usar Azure Front Door para proporcionar acceso rápido, confiable y seguro entre los usuarios y el contenido web estático y dinámico de las aplicaciones.
Para ver ejemplos adicionales sobre cómo puede proteger las API con Application Gateway, consulte Protección de las API con Application Gateway y API Management.
Consideraciones
Estas consideraciones implementan los pilares del marco de buena arquitectura de Azure, que es un conjunto de principios guía que se pueden usar para mejorar la calidad de una carga de trabajo. Para más información, consulte Marco de buena arquitectura de Microsoft Azure.
Confiabilidad
La confiabilidad garantiza que la aplicación pueda cumplir los compromisos contraídos con los clientes. Para más información, consulte Resumen del pilar de fiabilidad.
- Implemente al menos dos unidades de escalado de API Management que se distribuyan en dos zonas de disponibilidad por región. Este método maximiza la disponibilidad y el rendimiento.
- El emparejamiento de red virtual proporciona un gran rendimiento en una región, pero tiene un límite de escalabilidad de un máximo de 500 redes. Si necesita conectar más cargas de trabajo, use un diseño en estrella tipo hub-and-spoke o Azure vWAN.
Seguridad
La seguridad proporciona garantías contra ataques deliberados y el abuso de datos y sistemas valiosos. Para más información, consulte Introducción al pilar de seguridad.
- Las directivas de validación de API Management están disponibles para validar las solicitudes de API y las respuestas en un esquema de OpenAPI. Estas características no son un sustituto de Web Application Firewall, pero pueden proporcionar protección adicional contra algunas amenazas. La adición de directivas de validación puede tener implicaciones en el rendimiento, por lo que se recomienda usar pruebas de carga de rendimiento para evaluar su impacto en el rendimiento de la API.
- Implemente Azure Web Application Firewall (WAF) delante de API Management para proporcionar protección frente a las vulnerabilidades de seguridad comunes de las aplicaciones web.
- Aplique valores con nombre con secretos de Key Vault para proteger la información confidencial en las directivas de APIM.
- Use Application Gateway para el acceso externo de una instancia de APIM interna para proteger la instancia de APIM y para habilitar la conectividad híbrida.
- Implemente la puerta de enlace de API Management en una red virtual para admitir la conectividad híbrida y aumentar la seguridad.
- El emparejamiento de red virtual proporciona un gran rendimiento en una región, pero tiene un límite de escalabilidad de un máximo de 500 redes. Si tiene que conectar más cargas de trabajo, use un diseño en estrella tipo hub-and-spoke o Azure vWAN.
Optimización de costos
La optimización de costos trata de buscar formas de reducir los gastos innecesarios y mejorar las eficiencias operativas. Para más información, vea Información general del pilar de optimización de costos.
- Debido a la necesidad de compatibilidad con la zona de disponibilidad y la red virtual, hemos seleccionado el nivel de Premium de API Management, según los precios de cada región. Además, en esta carga de trabajo, Azure Functions se hospeda en el plan Premium debido a la necesidad de acceso de red virtual.
- Para pruebas de concepto o prototipos, se recomienda usar otros niveles de API Management (por ejemplo, Desarrollador o Estándar).
Excelencia operativa
La excelencia operativa abarca los procesos de las operaciones que implementan una aplicación y la mantienen en ejecución en producción. Para más información, consulte Introducción al pilar de excelencia operativa.
- Las configuraciones de API Management se deben representar como plantillas de ARM y debe adoptar una mentalidad de infraestructura como código.
- Use un proceso de CI/CD para administrar, crear versiones y actualizar configuraciones de API Management.
- Cree sondeos de estado personalizados para ayudar a validar el estado de la instancia de API Management. Use la dirección URL
/status-0123456789abcdef
para crear un punto de conexión de mantenimiento común para el servicio APIM en la puerta de enlace de aplicaciones. - Los certificados actualizados en el almacén de claves se rotan automáticamente en API Management, que se actualiza en un plazo de 4 horas.
- Implemente al menos dos unidades de escalado de API Management que se distribuyan en dos zonas de disponibilidad por región. Este método maximiza la disponibilidad y el rendimiento.
Implementación de este escenario
Esta arquitectura está disponible en GitHub. Contiene todos los archivos de infraestructura como código necesarios y las instrucciones de implementación.
Colaboradores
Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.
Creadores de entidad de seguridad:
- Pete Messina | Arquitecto sénior de soluciones en la nube
- Anthony Nevico | Arquitecto sénior de soluciones en la nube
Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.
Pasos siguientes
- Guía de Cloud Adoption Framework para Azure API Management en zonas de aterrizaje de Azure
- CI/CD para API Management mediante plantillas de Azure Resource Manager
- Introducción a Azure API Management
- Publicación y administración de las API con Azure API Management
- Recursos para empezar a trabajar con API Management
Consulte estos recursos clave:
- Operaciones de API
- Terminología de Azure API Management
- Acerca de API Management
- Documentación de Application Gateway
Obtenga más información sobre estos servicios clave:
- Información general sobre Azure Functions
- Zonas DNS privadas de Azure
- Introducción a Application Insights
- Introducción a Log Analytics en Azure Monitor
- Introducción a Azure Virtual Machines
- Conceptos básicos de Azure Key Vault
- ¿Qué es Azure Bastion?