M365Con 2027 – conferencia online gratuita · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Descubrir los puntos ciegos de cumplimiento de M365 con Microsoft Graph

By ·

¡Bienvenido de nuevo al podcast y a nuestro blog técnico complementario! Si alguna vez has confiado en un panel de cumplimiento de Microsoft 365 que viene de serie y has dado por hecho que todo estaba completamente controlado, puede que te estés adentrando en una falsa sensación de seguridad…

Automatically translated with AI from the original post. Read the English original

▶ BLOGUncovering M365Compliance Blindspots…M365.FM
Titelbild: Uncovering M365 Compliance Blindspots with Microsoft Graph

¡Bienvenido de nuevo al podcast y a nuestro blog técnico complementario! Si alguna vez has confiado en un panel de cumplimiento de Microsoft 365 que viene de serie y has dado por hecho que todo estaba completamente controlado, puede que te estés adentrando en una falsa sensación de seguridad. Los paneles de cumplimiento predeterminados están diseñados como resúmenes, no como la verdad absoluta. Las señales críticas, como las coincidencias de Prevención de pérdida de datos (DLP), las acciones de eDiscovery y las alertas de seguridad subyacentes, suelen estar detrás de puntos de conexión de Microsoft Graph que requieren permisos independientes, parámetros de consulta avanzados y una correcta combinación de datos. En este análisis en profundidad, vamos a explorar por qué tus informes nativos no muestran información crucial, a detallar los puntos de conexión de Graph exactos que debes consultar y a mostrarte cómo llevar esas pruebas en bruto directamente a Microsoft Purview para generar informes claros y defendibles. Para escuchar nuestra conversación completa sobre este tema, no dejes de consultar el episodio relacionado del podcast: Find Missing Microsoft 365 Compliance Data with Graph.

Descripción general

Los paneles de cumplimiento predeterminados son resúmenes, no la verdad. Las señales críticas (coincidencias de DLP, acciones de eDiscovery, alertas de seguridad) suelen estar detrás de puntos de conexión de Graph con permisos independientes. Asignamos las API, los ámbitos y los patrones de scripting exactos para extraer pruebas de máxima fidelidad y centralizarlas en Purview para crear informes claros y defendibles.

A quién ayuda

  • Responsables de cumplimiento, legal y riesgos que necesitan pruebas listas para auditoría

  • Administradores de M365 y Entra que crean informes y automatizaciones

  • Equipos de seguridad que correlacionan la telemetría de DLP, eDiscovery y alertas

Los puntos ciegos (por qué fallan los paneles predeterminados)

  • Agregación y retraso: los resúmenes de la interfaz omiten los detalles anidados de los incidentes y la actividad reciente

  • Lagunas de alcance: las acciones de eDiscovery o las coincidencias de DLP pueden quedar fuera de las exportaciones estándar

  • Permisos divididos: los puntos de conexión /security y /compliance requieren ámbitos diferentes

  • Sin combinación de datos: los paneles rara vez relacionan los incidentes con usuarios, custodios o pasos de casos

Los puntos de conexión de Graph de mayor valor (lista para copiar)

  • Alertas de seguridad (amplitud)

    • Punto de conexión: /security/alerts o /security/alerts_v2

    • Permisos de aplicación (ejemplos): SecurityEvents.Read.All (o Alerts.Read.All en los modelos más recientes)

    • Uso: cronologías de alertas, gravedad, estado y asignaciones

  • Directivas y actividad de DLP (pérdida de datos)

    • Puntos de conexión (la disponibilidad depende del inquilino):

      • /security/dataLossPreventionPolicies (inventario de directivas)

      • /security/dlpIncidents o puntos de conexión avanzados de incidentes de DLP en el espacio de nombres de seguridad (depende del inquilino)

    • Permisos de aplicación: SecurityEvents.Read.All (y/o los ámbitos de lectura de DLP específicos disponibles)

    • Uso: coincidencias, ubicaciones (Exchange, SharePoint, Teams) y disposición

  • eDiscovery (casos y acciones)

    • /compliance/ediscovery/cases

    • Rutas secundarias: /custodians, /searches, /reviewSets, /noncustodialDataSources, /operations

    • Permisos de aplicación: eDiscovery.Read.All (y de escritura si gestionas casos)

    • Uso: estado de los casos, retenciones, custodios, exportaciones y acciones de los revisores

  • Auditoría y contexto de inicio de sesión (pruebas de respaldo)

    • /auditLogs/directoryAudits, /auditLogs/signIns

    • Permisos de aplicación: AuditLog.Read.All, Directory.Read.All

    • Uso: quién cambió qué y cuándo, y contexto de la sesión

Consejo: muchas cargas útiles de cumplimiento están muy anidadas; prevé usar $expand, paginar mediante @odata.nextLink y combinar con /users/{id} para obtener nombres para mostrar y departamentos.

Autenticación y permisos (ruta sin complicaciones)

  • Usa permisos de aplicación (entidad de servicio) para los trabajos desatendidos

  • Registra aplicaciones independientes para seguridad y para Graph básico si tu organización exige privilegios divididos

  • Concede solo los ámbitos con privilegios mínimos y almacena los secretos y certificados en Key Vault

  • Implementa un retroceso exponencial para los errores 429/503 y registra x-ms-request-id en los logs

Patrones de scripting (PowerShell o Python)

  • Select y expand: solicita solo los campos necesarios, $select=… y $expand=… para las entidades anidadas

  • Filtra y acota en el tiempo: $filter=createdDateTime ge {ISO8601} para las consultas delta

  • Pagina: recorre @odata.nextLink en un bucle; nunca des por hecho que los resultados caben en una sola página

  • Normaliza: asigna los ID de usuario y de objeto a nombres y departamentos desde el principio para que las salidas sean legibles

  • Combina para dar contexto: enriquece los incidentes con metadatos de usuario, sitio, equipo o caso antes de exportar

Cómo integrarlo en Purview (convierte los datos en decisiones)

  1. Estandariza la salida: CSV/JSON con nombres de campo coherentes (tenant, incidentId, workload, userId, userUPN, severity, status, created, lastAction, caseId)

  2. Ingesta: deposita los archivos en una ubicación de almacenamiento segura a la que Purview pueda acceder (por ejemplo, ADLS Gen2)

  3. Etiqueta y marca: aplica etiquetas de confidencialidad o etiquetas personalizadas (por ejemplo, "DLP-PII-High") para enrutar los datos

  4. Paneles: Purview (o Power BI sobre los datos de Purview) para ver tendencias, responsables y antigüedad frente a los SLA

  5. Automatizaciones: reglas para notificar a los responsables de los casos ante repeticiones o escalados; resúmenes semanales en PDF

Piloto de 30 minutos (paso a paso)

  • 0–10 min: registro de la aplicación + SecurityEvents.Read.All / eDiscovery.Read.All; crea el secreto o el certificado

  • 10–20 min: script para un endpoint (alertas o casos) con paginación + $filter para los últimos 7 días

  • 20–30 min: enriquece con /users, exporta a CSV, deposita en la ruta de ADLS y visualiza un gráfico básico

KPI que demuestran el valor

  • % de incidentes con responsable y disposición completados

  • Tiempo medio desde el incidente hasta el caso (o el revisor)

  • Cuentas o ubicaciones reincidentes por cada 30 días

  • Diferencia frente a los recuentos del panel predeterminado (cierre de brechas)

  • Tiempo de ciclo de auditoría (horas ahorradas en la preparación de evidencias)

Errores comunes (y cómo corregirlos)

  • Resultados vacíos → ámbitos incorrectos o uso de permisos delegados cuando se requieren permisos de aplicación

  • Datos incompletos → falta $expand o las colecciones anidadas no se analizan

  • Datos parciales → sin paginación; solo se captura la primera página

  • Discrepancias en los nombres → no se combina con /users ni con datos de RRHH

  • Paneles desactualizados → no hay ejecuciones programadas; añade un trabajo y alertas por fallos

Victorias rápidas de esta semana

  • Extrae los últimos 7 días de /security/alerts y compara los recuentos con el portal

  • Exporta los casos abiertos de eDiscovery y los custodios; compártelos con Legal para su validación

  • Ejecuta un barrido de incidentes DLP y marca las repeticiones; abre seguimientos en Purview

  • Programa un paquete semanal de evidencias (CSV + PDF) para un buzón de cumplimiento

Preguntas frecuentes

  • ¿Necesito ser desarrollador? No; basta con PowerShell o con scripts cortos en Python.

  • ¿Por qué permisos de aplicación? La mayoría de los endpoints de /security y /compliance requieren acceso sin interfaz y de alta confianza.

  • ¿Puedo quedarme en PowerShell? Sí; usa el SDK de Microsoft Graph PowerShell y gestiona $top, $filter, $expand y la paginación.

  • ¿Es obligatorio Purview? Estrictamente no, pero convierte el JSON sin procesar en flujos de trabajo auditables y paneles.

Conclusión

Los paneles resumen; Graph cuenta la historia completa. Consulta los endpoints adecuados, corrige la autenticación, pagina y expande los datos, y luego centraliza todo en Purview. Pasarás de cumplir por inercia a tener visibilidad demostrable y en tiempo real, sin ahogarte en exportaciones manuales. Para una conversación en profundidad y consejos de expertos sobre cómo abordar directamente estos puntos ciegos, no te pierdas nuestro episodio de podcast dedicado Find Missing Microsoft 365 Compliance Data with Graph. Sigue iterando tus scripts, protege tus permisos de aplicación y empieza a mostrar los datos que tus paneles han estado ocultando.

Entities in this article

eDiscovery Compliance Dashboards Microsoft Graph Microsoft Purview Data loss prevention (DLP) PowerShell Microsoft 365 Exchange Online JSON

Related articles

RSS