Dominar Graph Explorer: rastrear la huella de un usuario de principio a fin
By Mirko Peters ·
¡Bienvenido de nuevo al blog complementario del podcast! En el post de hoy vamos mucho más allá de las interfaces de administración fragmentadas que todos conocemos y con las que a veces nos cuesta…
Automatically translated with AI from the original post. Read the English original
¡Bienvenido de nuevo al blog complementario del podcast! En el post de hoy vamos mucho más allá de las interfaces de administración fragmentadas que todos conocemos y con las que a veces nos cuesta lidiar. Si alguna vez has intentado reconstruir un registro de auditoría completo de lo que un usuario concreto ha accedido, compartido o modificado en Microsoft 365, ya sabes lo desconectados que pueden sentirse los centros de administración nativos. Por eso nos sumergimos en Microsoft Graph. Gracias a la API de Graph podemos pasar con fluidez de usuarios individuales a grupos, sitios de SharePoint, archivos, vínculos externos e incluso visores activos. Si quieres seguir el audio que acompaña directamente a esta guía, no dejes de consultar el episodio relacionado Map Microsoft 365 Users, Groups, Files, and Shares with Graph.
¿Por qué M365 no está aislado?
Una de las ideas erróneas más comunes entre administradores y equipos de seguridad es que los servicios individuales de Microsoft 365 funcionan como silos seguros e independientes. En realidad, los chats de Teams, las bibliotecas de documentos de SharePoint y las carpetas de OneDrive se interconectan continuamente a través de la pertenencia a grupos subyacente y la herencia de permisos.
- Los chats de Teams, las bibliotecas de SharePoint y las carpetas de OneDrive se interconectan a través de la pertenencia a grupos.
- Una simple acción de añadir un usuario a un grupo puede desbloquear silenciosamente numerosos sitios, canales y recursos compartidos externos sin dejar un rastro de auditoría evidente en las vistas estándar.
- Tu riesgo de cumplimiento surge de estas rutas invisibles, como los vínculos de invitado colocados en chats privados, los archivos replicados en varias bibliotecas y los recursos compartidos huérfanos que quedan mucho después de terminar los proyectos.
Mapeo de la huella con Graph Explorer (puntos de contacto entre usuario y archivo)
Para entender realmente cómo se propaga el acceso en tu inquilino, necesitas un patrón de consulta repetible. Podemos ejecutar una cadena deliberada de llamadas a la API en Graph Explorer para mapear la huella completa de contactos de un usuario:
- Empieza por el usuario objetivo:
GET /v1.0/users/{userPrincipalName}?$select=id,displayName,userPrincipalName - Enumera sus pertenencias directas e indirectas:
GET /v1.0/users/{id}/memberOf?$select=id,displayName - Pasa a los recursos a los que dan acceso esos grupos. Para los grupos de Microsoft 365 y Teams, consulta el sitio de SharePoint subyacente:
GET /v1.0/groups/{groupId}/drive/root/children?$select=id,name,lastModifiedDateTime,webUrl
O enumera directamente las unidades y bibliotecas del sitio:
GET /v1.0/sites/{siteId}/drives - Obtén los permisos de los elementos y los vínculos para compartir:
GET /v1.0/drives/{driveId}/items/{itemId}/permissions?$select=id,grantedToV2,link,roles,shareId - Rastrea quién accedió a qué y cuándo, cuando esté disponible, usando los registros de auditoría e inicio de sesión:
GET /v1.0/auditLogs/signIns o /security/alerts, combinado con el contexto del archivo, sitio o recurso compartido. - Cierra el circuito volviendo a las publicaciones y mensajes de canal de Teams:
GET /v1.0/teams/{teamId}/channels/{channelId}/messages?$search="filename" (requiere endpoints beta y los permisos adecuados).
Filtros para reducir el ruido que realmente usarás
Extraer datos sin procesar de Microsoft Graph puede parecerse a beber de una manguera contra incendios. Para convertir conjuntos de datos masivos en información útil, debes usar parámetros de consulta precisos.
- Aísla los recursos compartidos externos creados en los últimos 7 días aplicando filtros de ámbito:
GET /v1.0/drives/{driveId}/items/{itemId}/permissions?$filter=link/scope eq 'anonymous' or link/scope eq 'organization'&$select=… - Aísla los tipos de archivo de riesgo añadiendo extensiones de nombre de archivo:
Añade $filter=endsWith(resourceReference/name,'.xlsm') or endsWith(resourceReference/name,'.pst') - Registra las menciones fuera de horario de términos sensibles en canales de Teams:
GET /v1.0/teams/{teamId}/channels/{channelId}/messages?$search="confidential", y después filtra los resultados por createdDateTime fuera del horario laboral habitual. - Mantén las cargas útiles ligeras y eficientes añadiendo siempre $select para devolver solo IDs, nombres, URL web, marcas de última modificación y campos de permisos mínimos.
- Limita los resultados para un triaje rápido usando $top=50 en comprobaciones puntuales, pero recuerda quitar esta restricción al exportar datos a un almacenamiento permanente.
Requisitos imprescindibles a escala empresarial (paginación y limitación de tasa)
Cuando escales estas consultas desde un único usuario de prueba hasta un inquilino empresarial con cientos de miles de objetos, el rendimiento y la fiabilidad pasan a ser fundamentales.
- Nunca terminas una extracción de datos hasta que sigues explícitamente la propiedad @odata.nextLink en cada una de las páginas de resultados.
- Respeta las respuestas HTTP 429 de limitación de tasa implementando rutinas de retroceso exponencial y asegurándote de que tu script pueda reanudarse sin problemas desde donde se quedó.
- Agrupa tus consultas con criterio. Prefiere pocas solicitudes más grandes y bien estructuradas a una avalancha de llamadas diminutas, y almacena en caché de forma agresiva las asignaciones de grupo a sitio.
- Divide los recorridos masivos del inquilino por identificadores de sitio de SharePoint específicos o por intervalos de fechas para evitar tiempos de espera agotados, y programa estas operaciones pesadas en horas de baja actividad.
Errores habituales (y soluciones rápidas)
Incluso los administradores con experiencia tropiezan al crear canalizaciones automatizadas de consultas a Graph. Ten en cuenta estas trampas habituales y sus soluciones rápidas:
- Problema: las exportaciones CSV se desajustan y se rompen a medida que cambian los esquemas con el tiempo.
Solución: usa directamente la API de Graph con transformaciones versionadas y un tratamiento robusto de los campos "desconocidos". - Problema: los identificadores mezclados, como los GUID frente a los nombres principales de usuario (UPN), rompen las uniones en la base de datos.
Solución: normaliza tus datos en un modelo semántico coherente que abarque usuarios, grupos, sitios, unidades, elementos y permisos. - Problema: el "sesgo de la primera página" ciega tu monitorización y oculta incidentes de seguridad importantes enterrados en páginas posteriores.
Solución: registra siempre el total de páginas procesadas y activa alertas si el volumen de registros esperado baja de forma inesperada. - Problema: verte inundado por un volumen inmanejable de archivos irrelevantes.
Solución: filtra de forma explícita por ámbito de vínculo, por intervalos de fecha de creación o modificación concretos y por listas de términos sensibles específicas. - Problema: los recursos compartidos de Teams que no se vinculan con los archivos subyacentes.
Solución: correlaciona las URL web de los mensajes del canal directamente con los elementos de unidad y guarda ambos identificadores únicos.
KPI de nivel ejecutivo que esto desbloquea
Transformar las salidas sin procesar de la API de Graph en métricas estructuradas da a la dirección la visibilidad que necesita con urgencia. Los indicadores clave de rendimiento que puedes desbloquear incluyen:
- Velocidad de exposición externa: medir los nuevos vínculos de invitado generados por semana, desglosados por sitio o equipo.
- Tasa de acceso a archivos sensibles: seguir los visores únicos del contenido etiquetado, separando a los usuarios internos de los invitados externos.
- Riesgo de onda expansiva por grupo: identificar los archivos que de repente se vuelven accesibles en las 24 horas posteriores a un cambio de pertenencia a un grupo.
- Circulación en la sombra: seguir los archivos sensibles que se multiplican entre varios equipos y sitios dentro de un mismo sprint.
- Eficacia de la limpieza: contar los vínculos de uso compartido revocados y medir el tiempo total hasta la remediación.
Receta de inicio rápido (flujo de copiar y pegar)
Si quieres poner en marcha ahora mismo tu primera traza de extremo a extremo en Graph Explorer, usa este flujo secuencial de copiar y pegar:
- Consultar los datos básicos del usuario y sus grupos:
/users/{upn}?$select=id,displayName
/users/{id}/memberOf?$select=id,displayName - Para cada grupo de Microsoft 365 encontrado, obtener los elementos de la unidad:
/groups/{groupId}/drive/root/children?$select=id,name,webUrl,lastModifiedDateTime&$top=200
Asegúrate de seguir @odata.nextLink - Para cada elemento de archivo, comprobar los permisos:
/drives/{driveId}/items/{itemId}/permissions?$select=id,roles,grantedToV2,link
Filtra para asegurarte de que link/scope está en ('anonymous','organization') - Exporta tus filas limpias a tu almacén de datos, incluyendo la hora del inquilino, el ID del sitio, el ID de la unidad, el ID del elemento, la URL web, el propietario, el ámbito y los datos de caducidad.
- Visualiza los datos agregados en Power BI para una supervisión continua de la organización.
Convertirlo en un panel dinámico
Las consultas puntuales en Graph Explorer son fantásticas para las investigaciones, pero la gobernanza real requiere automatización. Convierte tus consultas en un panel operativo vivo creando flujos de datos sólidos, normalizando las tablas de usuarios, grupos, sitios, unidades, elementos, permisos y mensajes, y construyendo un esquema en estrella centrado en tus elementos de archivo. Configura actualizaciones incrementales de datos basadas en las fechas de modificación y define alertas en tiempo real que se activen cada vez que aparezcan nuevos vínculos externos en contenido sensible con etiqueta.
Plan de implementación de 30 días
¿Listo para llevar esto a la práctica en toda tu organización? Sigue este marco de implementación estructurado de cuatro semanas:
- Semana 1: completa el registro de tu aplicación, asigna permisos de API de Graph con el mínimo privilegio necesario y establece consultas base con parámetros $select y $filter precisos.
- Semana 2: Desarrolla los scripts de paginación, implementa la normalización de identificadores de IDs a UPNs y ejecuta tu primera exportación de datos exitosa.
- Semana 3: Construye tu modelo de datos de Power BI y los KPI fundamentales, incluyendo el seguimiento de la exposición externa y el análisis de riesgo de propagación.
- Semana 4: Automatiza las actualizaciones de datos, configura alertas de anomalías y documenta los procedimientos operativos estándar para tus equipos de seguridad y cumplimiento.
Quién debería seguirlo
Esta metodología está diseñada específicamente para determinados roles dentro de tu organización:
- Administradores de Microsoft 365 y responsables de SecOps que sospechan que sus paneles administrativos predeterminados están ocultando zonas grises críticas.
- Equipos de cumplimiento que necesitan visibilidad de extremo a extremo sobre el uso compartido sin añadir software de terceros costoso y disperso.
- Propietarios de colaboración que son los responsables últimos de garantizar prácticas de uso compartido externo seguras y controladas.
Consejos prácticos
Ten a mano estos consejos prácticos mientras avanzas en tu camino de automatización con Graph:
- Inicia siempre tu investigación desde el usuario o desde el archivo, y luego explora en ambas direcciones para eliminar los puntos ciegos.
- Trata cualquier acción de "añadir al grupo" como un cambio de alto riesgo y revisa las implicaciones de acceso posteriores en un plazo de 24 horas.
- Mantén una lista corta y actualizada de términos sensibles para buscar en los mensajes de Teams y en los nombres de archivo, y revísala con regularidad.
- Registra con atención el número de páginas procesadas y el volumen de registros; a veces, el silencio total en tus logs es en realidad la señal de que un trabajo del pipeline se ha roto.
Conclusión
Dominar Microsoft Graph para rastrear de extremo a extremo la actividad de los usuarios cierra la brecha entre las vistas administrativas fragmentadas y la visibilidad real en toda la organización. Al pasar de silos aislados a una asignación relacional de accesos, puedes proteger de forma proactiva los datos sensibles, eliminar la circulación en la sombra y proporcionar a la dirección los KPI accionables que necesita. Para escuchar más análisis de expertos, ejemplos reales y explicaciones en profundidad de escenarios como este, asegúrate de escuchar el episodio completo en Map Microsoft 365 Users, Groups, Files, and Shares with Graph.
Suscríbete
Para análisis más profundos y recetas reales de Graph, descubre los nuevos episodios en m365.show/subscribe