Ir al contenido principal

Exponer de forma segura un flujo de trabajo con Azure Logic Apps como una API REST con Azure API Management

Securely exposing Azure Logic App workflows as a REST API with Azure API Management

Los servicios de integración de Azure engloban una serie de productos y servicios que se utilizan con el fin de crear flujos de trabajo automatizados para integrar diferentes sistemas heterogéneos. Uno de los casos de uso más comunes para este tipo de integración es el de exponer flujos de trabajo internos como APIs basadas en REST para aplicaciones de consumo con autenticación adicional y otros factores de calidad de servicio. Los servicios de integración de Azure hereda las ventajas de utilizar APIs REST para que las aplicaciones de consumo automaticen la ejecución de flujos de trabajo internos a través de un canal de comunicación seguro y confiable. Este enfoque se puede implementar fácilmente al utilizar tecnologías de desarrollo estándar en un corto periodo de tiempo.

Azure Logic Apps y API Management: resumen general

Haremos mención a dos servicios principales que se encuentran dentro de los servicios de integración de Azure para demostrar el caso de uso. Esos servicios son Azure API Management y Azure Logic Apps. Las Logic Apps se clasifican en dos tipos: estándar y de consumo. En este artículo utilizaremos ejemplos de Logic Apps de consumo.

Azure Logic Apps

Azure Logic Apps es el servicio de automatización del flujo de trabajo proporcionado por Azure, con diferentes disparadores y acciones adecuadas para crear flujos complejos de transformación y orquestación entre sistemas heterogéneos. La implementación de programación visual fácil de usar proporcionada dentro del portal de Azure para las Logic Apps brinda la flexibilidad necesaria para acelerar el tiempo de implementación con una experiencia mínima en codificación. Los flujos de trabajo de una Logic App se pueden desencadenar usando un evento como una solicitud HTTP, un mensaje en Azure Service Bus, un evento desde Azure Event Grid o un archivo que esté situado en una ubicación SFTP designada o en una cuenta de almacenamiento.

Azure API Management

Azure API Management permite la exposición de servicios internos a través de un conjunto estándar de APIs administrado y seguro para las aplicaciones de consumo. También aporta el espacio necesario para que los desarrolladores API puedan descubrir, suscribirse e implementar aplicaciones mediante el consumo de APIs publicadas en el portal de desarrolladores de Azure API Management. Otras características principales de la plataforma Azure API Management son la limitación de velocidad, el control detallado y el análisis API integral.

Caso de uso: flujo de trabajo de una Azure Logic App liderado por una API en Azure API Manager

Los pasos de implementación del siguiente apartado siguen este caso de uso simple en el que el flujo de trabajo de una Logic App de Azure está encabezado por una API en Azure API Manager. 

Imagen 1: Aplicación Lógica de Azure comunicándose con una API en Azure API Manager

El acceso a la Logic App está restringido mediante restricciones de IP entrantes para permitir solicitudes solo desde el administrador de la API. Además, la API está protegida con una clave de suscripción API. Usamos CURL como cliente API para demostrar solicitudes de muestra a la API.

Pasos para exponer de forma segura un flujo de trabajo de una Azure Logic App como API REST con Azure API Management

La implementación paso a paso del caso de uso anterior se describe aquí. Esto incluye configuraciones, solicitudes de muestra y respuestas a la API que ayudan a probar el escenario.

Crea el flujo de trabajo de la Logic App

Para simplificar, en este artículo tomamos un flujo simple con disparador HTTP y respondemos con datos embebidos. Se puede mejorar con cualquier lógica compleja dentro del flujo en la implementación real.

Paso 1: crear la Logic App de consumo con el nombre logic-http-mock-response.

Imagen 2: Creación de una Aplicación Lógica de consumo.

Paso 2: a continuación, crear un flujo de trabajo simple usando el diseñador de la Logic App con lo siguiente:

  • Disparador HTTP: recibe la siguiente solicitud HTTP.
{

  "request": {

    {"name":" "Paul Stewart"

  }

}

 

Imagen 3: Flujo de trabajo simple utilizando el diseñador de la Aplicación Lógica.

  • Redactar acción: preparar una respuesta JSON con el «nombre» de la solicitud de entrada.
{

  "response": "Hello Paul Stewart"

}

 

Imagen 4: Preparación de una respuesta JSON

  • Acción de respuesta: enviar la respuesta creada en Redactar acción a la persona que ejecuta la función.

Imagen 5: Acción Componer

Paso 3: guardar la Logic App y probarla usando CURL como se muestra a continuación, para asegurarte de que devuelva la respuesta esperada.

La URL se puede obtener de la página Overview (Descripción general) de la Logic App en Workflow URL (URL del flujo de trabajo).

Imagen 6: Prueba usando CURL

curl -X POST '<URL de la página de descripción general de la Logic App>' \

--header 'Content-Type: application/json' \

--data '{"request": {

   {"name":" "Paul Stewart"

}}'

Devolverá la siguiente respuesta tal y como se esperaba:

{"response":"Hello Paul Stewart"}

 

Crear la API

Tomemos la Logic App anterior como back-end para la API que se creará a continuación.

Ir a la instancia de Azure API Management. Si no está creada, puedes encontrar una guía detallada sobre cómo crear una instancia de API Management usando el portal de Azure en este artículo: https://learn.microsoft.com/en-us/azure/api-management/get-started-create-service-instance

Paso 4: ir a APIs en el menú de la izquierda, debajo de Add API (Agregar API). Seleccionar Logic App desde Create from Azure resource (Crear desde recurso de Azure).

Imagen 7: Respuesta de CURL

A continuación se abre el cuadro de diálogo para completar los detalles de la Logic App y de la API.

Imagen 8: Crear Logic App bajo Crear desde recurso de Azure

  • Logic App: hacer clic en Browse (Examinar) y seleccionar la Logic App ya creada logic-http-mock-response.

    Imagen 9: Cuadro de diálogo de API y Logic App

  • Nombre para mostrar: establecer APIM Demo API (API de demostración APIM).
  • Nombre: esto se completará automáticamente según el nombre para mostrar. Mantenerlo como está.
  • Sufijo de URL de la API: establecer como demo. Esto se agregará a la URL base para crear la URL completa de la API.

Una vez que se completan todos los detalles, debería verse así:

Imagen 10: Cuadro de diálogo de API y Logic App con los detalles completados

Si haces clic en Full (Completo) en el botón de alternancia en la parte superior, se mostrarán algunos campos más, pero por el momento se deben mantener los valores predeterminados.

Imagen 11: Cuadro de diálogo de API y Logic App (pestaña completa)

Paso 5: hacer clic en Create (Crear), esto creará la API utilizando la Logic App logic-http-mock-response como back-end.

Paso 6: una vez creada la API, hacer clic en el botón editar en la sección Frontend para actualizar la ruta del recurso.

Imagen 12: Botón de edición en la sección “Frontend”

Paso 7: en la siguiente ventana, actualizar los detalles de la siguiente manera, lo que cambiará la ruta de recursos predeterminada proporcionada de acuerdo con nuestros requisitos. Luego hacer clic en Save (Guardar) para aplicar los cambios.

Imagen 13: Actualiza los detalles en la sección “Frontend”

Se actualizará el nombre del recurso y su URL como en la siguiente imagen.

Imagen 14: Actualizando el nombre del recurso y la URL del recurso

Configurar la suscripción de la API

Para ejecutar la API, se requiere una clave de suscripción. Se incluirá en la solicitud de API dentro del encabezado Ocp-Apim-Subscription-Key.

Paso 8: para crear la clave de suscripción en el administrador de la API, ve a Subscriptions (suscripciones) en el menú de la izquierda y luego el enlace Add subscription (añadir suscripción). Aquí crearemos una clave de suscripción solo para esta API. También se puede crear para todas las API o para un producto. Puedes encontrar más detalles acerca de las suscripciones API en el siguiente enlace: https://learn.microsoft.com/en-us/azure/api-management/api-management-subscriptions 

Imagen 15: Creando una clave de suscripción en el Administrador de API

Paso 9: en la ventana de New Subscription (nueva suscripción), rellenar los datos para crear una suscripción para la APIM Demo API (API de demostración APIM) y sus respectivas claves.

Imagen 16: Completando los detalles de la nueva suscripción

Una vez creada, copiar la clave principal para la suscripción Demo-Subscription, que se puede utilizar en la solicitud de API.

Imagen 17: Copiando la clave primaria

Ejecutar la API

Paso 10: para ejecutar la API, se necesita la URL de la API. Se puede encontrar en la pestaña Test (prueba) en la ventana de configuración de API.

Imagen 18: Pestaña de prueba en la ventana de configuración de la API

Utiliza el mismo comando CURL utilizado para ejecutar la Logic App, pero con la URL anterior como la siguiente:

curl -X POST 'https://<APIM Host>/demo/mock-response'' \

--header 'Content-Type: application/json' \

--data '{"request": {

   {"name":" "Paul Stewart"

}}'

Esto dará el siguiente error de autenticación:

{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }

Imagen 19: Error de autenticación (fragmento de código)

El motivo del error es que no hemos pasado ninguna clave de suscripción en la solicitud. Después agrega el encabezado de la clave de suscripción Ocp-Apim-Subscription-Key y el valor que hemos obtenido en la sección anterior.

curl -X POST 'https://<APIM Host>/demo/mock-response'' \

--header 'Content-Type: application/json' \

--header 'Ocp-Apim-Subscription-Key: <subscription key> \

--data '{"request": {

   {"name":" "Paul Stewart"

}}'

Da la respuesta correcta, que es la misma que obtuvimos al llamar a la Logic App anteriormente, pero de una forma más segura a través del administrador de la API.

{"response":"Hello Paul Stewart"}

Imagen 20: Respuesta correcta (fragmento de código)

Restringir el acceso a la Logic App 

Cuando el servicio de la Logic App se expone a través del administrador de la API con seguridad adicional, se debe deshabilitar el acceso directo a la misma. Entonces, la única forma de acceder al disparador del flujo de trabajo HTTP es a través del administrador de la API, que brinda más seguridad, control sobre el acceso y un monitoreo más sencillo de las solicitudes a través del administrador de la API.

Paso 11: para restringir el acceso a la Logic App, ir a la ventana de Workflow settings (Configuración de flujo de trabajo) y establecer la siguiente configuración en la sección Access control configuration (Configuración de control de acceso).

Opción de acceso al disparador – Rangos de IP específicos.

Rangos de IP para disparadores – Establecer la IP pública del administrador de la API. Esto se puede encontrar en la página de descripción general del administrador de API en Virtual IP (VIP) addresses  (Direcciones IP virtuales). Configurar en el formato <public ip>/32

Imagen 21: Configuración de controles de acceso

Una vez guardada, no se podrá acceder a la URL de la Logic App como antes y generará un error de acceso como el que se muestra a continuación:

{"error":{"code":"AuthorizationFailed","message":"The client IP address 'x.x.x.x' is not in the allowed caller IP address ranges specified in the workflow access control configuration."}}

Sin embargo, todavía es accesible a través de la API que exponemos en el administrador con la clave de suscripción correcta.

Conclusión

Azure Logic Apps se utiliza para implementar flujos de trabajo complejos que se pueden ejecutar a través de solicitudes HTTP. Para hacer que el servicio sea más seguro y manejable, el flujo de trabajo HTTP se puede exponer como una API REST en Azure API Management. Podemos usar las funciones de restricción de acceso en Azure Logic Apps para deshabilitar el acceso público al flujo de trabajo y permitirlo solo a través del administrador de la API.

Con Chakray como tu socio confiable de Azure, puedes desbloquear el potencial de tu negocio a través de nuestras implementaciones innovadoras adaptadas a tus necesidades específicas. Todo lo que necesitas es una asociación sólida con Chakray, que te guiará en cada paso del camino. Siéntete libre de contactarnos para cualquier consulta que no haya sido tratada en este artículo. ¡Estamos aquí para ayudarte!

¡Habla con nuestros expertos!

Contacta con nuestro equipo y descubre las tecnologías de vanguardia que potenciarán tu negocio.

contactarnos