Descubrir los puntos ciegos de cumplimiento de M365 con Microsoft Graph
By Mirko Peters ·
¡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
¡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/alertso/security/alerts_v2Permisos 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/dlpIncidentso 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/casesRutas secundarias:
/custodians,/searches,/reviewSets,/noncustodialDataSources,/operationsPermisos 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/signInsPermisos de aplicación:
AuditLog.Read.All,Directory.Read.AllUso: 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.nextLinky 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-iden los logs
Patrones de scripting (PowerShell o Python)
Select y expand: solicita solo los campos necesarios,
$select=…y$expand=…para las entidades anidadasFiltra y acota en el tiempo:
$filter=createdDateTime ge {ISO8601}para las consultas deltaPagina: recorre
@odata.nextLinken un bucle; nunca des por hecho que los resultados caben en una sola páginaNormaliza: 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)
Estandariza la salida: CSV/JSON con nombres de campo coherentes (tenant, incidentId, workload, userId, userUPN, severity, status, created, lastAction, caseId)
Ingesta: deposita los archivos en una ubicación de almacenamiento segura a la que Purview pueda acceder (por ejemplo, ADLS Gen2)
Etiqueta y marca: aplica etiquetas de confidencialidad o etiquetas personalizadas (por ejemplo, "DLP-PII-High") para enrutar los datos
Paneles: Purview (o Power BI sobre los datos de Purview) para ver tendencias, responsables y antigüedad frente a los SLA
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 certificado10–20 min: script para un endpoint (alertas o casos) con paginación +
$filterpara los últimos 7 días20–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
$expando las colecciones anidadas no se analizanDatos parciales → sin paginación; solo se captura la primera página
Discrepancias en los nombres → no se combina con
/usersni con datos de RRHHPaneles 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/alertsy compara los recuentos con el portalExporta 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,$expandy 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.