Compartir a través de


Recuperar eventos a su velocidad mediante Microsoft Graph

En este artículo se describe un patrón de integración común de Microsoft Graph para un escenario empresarial que requiere un análisis de seguridad del contenido de colaboración para evitar el uso compartido, la transferencia o el uso inadecuados de datos confidenciales, como en escenarios de prevención de pérdida de datos (DLP).

Este escenario empresarial es un caso de uso no interactivo que requiere una fuente de distribución de datos de los cambios desencadenados por los usuarios que interactúan con varios sistemas de mensajería. No se basa en el comportamiento funcional de Microsoft 365 y tiene los siguientes requisitos de arquitectura:

  • Un tipo de integración de datos.
  • Un flujo de datos saliente desde los límites de Microsoft 365 a la aplicación.
  • Un volumen de datos alto para empresas medianas y grandes.
  • Latencia de datos casi en tiempo real para minimizar la pérdida de datos.

La mejor opción de integración para este escenario es usar el patrón de integración Pub/Sub habilitado por las notificaciones de cambio de Microsoft Graph, que puede entregar notificaciones de eventos, así como el contenido de un mensaje compartido, entregado a Azure Event Hubs. Este patrón permite a la aplicación recibir notificaciones de cambio de forma asincrónica y no acopla estrechamente Microsoft Graph a las aplicaciones receptoras. Este tipo de interacción de la aplicación a menudo se denomina modo de extracción.

En el diagrama siguiente se muestra la arquitectura de esta solución.

Diagrama que muestra el servicio de notificación de Microsoft Graph que interactúa con Microsoft Entra ID, Azure Event Hubs, app services, function apps y el servicio de destino.

Componentes de la solución

La arquitectura de la solución incluye los siguientes componentes:

  • Azure Event Hubs, que permite ingerir un gran volumen de mensajes pequeños, menos de 1 MB, en un segundo con baja latencia y almacenarlos para su procesamiento consecutivo.
  • Azure App Service, que permite compilar y hospedar aplicaciones web, back-end móviles y API RESTful en el lenguaje de programación preferido, sin administrar la infraestructura. Ofrece escalado automático y alta disponibilidad, admite Windows y Linux y permite implementaciones automatizadas desde GitHub, Azure DevOps o cualquier repositorio de Git.
  • Microsoft Entra ID, que es necesario para administrar la autenticación para las API de Microsoft Graph y admite permisos delegados y de aplicación para habilitar el flujo de OAuth.
  • Aplicación de funciones, que es un componente sin servidor que permite escalar horizontalmente para ráfagas de nuevas notificaciones y tiene una lógica de negocios para procesar notificaciones y enviarlas a un servicio de destino.
  • Servicios de notificaciones de Microsoft Graph, que administran suscripciones de notificaciones y entregan notificaciones de cambios a los clientes.

Consideraciones

Las siguientes consideraciones admiten el uso de este patrón de integración:

  • Disponibilidad: Azure Event Hubs proporcionan alta disponibilidad en varias zonas de disponibilidad.

  • Latencia: Azure Event Hubs puede procesar millones de eventos por segundo con baja latencia.

  • Escalabilidad: Azure Event Hubs proporcionar almacenamiento y retención de eventos durante un máximo de 90 días en función del nivel de servicio, lo que permite que la aplicación personalizada consuma y procese eventos a su propio ritmo.

  • Complejidad de la solución: esta solución requiere código personalizado para mantener suscripciones y claves de cifrado para procesar los datos. Dado que esta solución no requiere elasticidad y la capacidad de reaccionar ante un volumen inesperado de eventos, es menos complejo que la integración con webhooks en modo de inserción. Esta solución tiene complejidad media.