Maîtriser Graph Explorer : retracer le parcours d’un utilisateur de bout en bout
By Mirko Peters ·
Bienvenue dans le blog d’accompagnement du podcast ! Dans l’article d’aujourd’hui, nous dépassons largement les interfaces d’administration fragmentées que nous connaissons tous et avec lesquelles nous peinons parfois…
Automatically translated with AI from the original post. Read the English original
Bienvenue dans le blog d’accompagnement du podcast ! Dans l’article d’aujourd’hui, nous allons bien au-delà des interfaces d'administration fragmentées que nous connaissons tous et avec lesquelles nous peinons parfois. Si vous avez déjà essayé de reconstituer une piste d'audit complète de ce à quoi un utilisateur donné a accédé, ce qu’il a partagé ou modifié dans Microsoft 365, vous savez à quel point les centres d'administration natifs peuvent paraître décousus. C’est pourquoi nous allons explorer en profondeur Microsoft Graph. En exploitant l’API Graph, nous pouvons passer en toute fluidité d’un utilisateur à des groupes, des sites SharePoint, des fichiers, des liens externes et même aux personnes qui consultent actuellement un élément. Si vous souhaitez suivre la discussion audio qui accompagne directement ce guide, n’hésitez pas à écouter l’épisode associé Map Microsoft 365 Users, Groups, Files, and Shares with Graph.
Pourquoi M365 n'est pas isolé
L’une des idées reçues les plus répandues chez les administrateurs et les équipes sécurité est que les services Microsoft 365 fonctionnent comme des silos sécurisés et autonomes. En réalité, les conversations Teams, les bibliothèques de documents SharePoint et les dossiers OneDrive s’interconnectent en permanence via les appartenances aux groupes sous-jacents et l’héritage des autorisations.
- Les conversations Teams, les bibliothèques SharePoint et les dossiers OneDrive s’interconnectent via l’appartenance aux groupes.
- Une simple action « ajouter un utilisateur à un groupe » peut discrètement ouvrir l’accès à de nombreux sites, canaux et partages externes sous-jacents, sans laisser de traces d'audit évidentes dans les vues standard.
- Votre risque de conformité provient de ces chemins invisibles : liens d'invités déposés dans des conversations privées, fichiers dupliqués dans plusieurs bibliothèques, ou partages orphelins laissés en place longtemps après la fin des projets.
Cartographier les accès avec Graph Explorer (points de contact entre utilisateur et fichiers)
Pour bien comprendre comment les accès se propagent dans votre locataire, vous avez besoin d’un schéma de requête reproductible. Nous pouvons enchaîner, de façon délibérée, une série d’appels d’API dans Graph Explorer pour cartographier l’ensemble des points de contact d’un utilisateur :
- Partir de l’utilisateur cible :
GET /v1.0/users/{userPrincipalName}?$select=id,displayName,userPrincipalName - Énumérer ses appartenances directes et indirectes :
GET /v1.0/users/{id}/memberOf?$select=id,displayName - Remonter aux ressources de ces groupes. Pour les groupes Microsoft 365 et les équipes, ciblez le site SharePoint sous-jacent :
GET /v1.0/groups/{groupId}/drive/root/children?$select=id,name,lastModifiedDateTime,webUrl
Ou énumérez directement les lecteurs et bibliothèques du site :
GET /v1.0/sites/{siteId}/drives - Récupérer les autorisations des éléments et les liens de partage :
GET /v1.0/drives/{driveId}/items/{itemId}/permissions?$select=id,grantedToV2,link,roles,shareId - Retracer qui a accédé à quoi et quand, lorsque cela est possible, à l’aide des journaux d'audit et de connexion :
GET /v1.0/auditLogs/signIns ou /security/alerts, associé au contexte du fichier, du site ou du partage. - Boucler la boucle avec les publications et les messages des canaux Teams :
GET /v1.0/teams/{teamId}/channels/{channelId}/messages?$search="filename" (nécessite les points de terminaison bêta et les autorisations appropriées).
Filtres anti-bruit que vous utiliserez vraiment
Extraire des données brutes de Microsoft Graph peut vite ressembler à boire au tuyau d’incendie. Pour transformer des jeux de données massifs en informations exploitables, il faut utiliser des paramètres de requête précis.
- Isoler les partages externes créés au cours des 7 derniers jours en appliquant des filtres de périmètre :
GET /v1.0/drives/{driveId}/items/{itemId}/permissions?$filter=link/scope eq 'anonymous' or link/scope eq 'organization'&$select=… - Isoler les types de fichiers à risque en ajoutant des extensions de nom de fichier :
Ajouter à la fin : $filter=endsWith(resourceReference/name,'.xlsm') or endsWith(resourceReference/name,'.pst') - Repérer les mentions de termes sensibles en dehors des heures de bureau dans les canaux Teams :
GET /v1.0/teams/{teamId}/channels/{channelId}/messages?$search="confidential", puis filtrer les résultats par createdDateTime en dehors des heures ouvrées habituelles. - Gardez des charges utiles légères et efficaces en ajoutant systématiquement $select pour ne renvoyer que les identifiants, les noms, les URL web, les horodatages de dernière modification et les champs d’autorisation minimaux.
- Limitez les résultats pour un tri rapide avec $top=50 pour les contrôles ponctuels, mais pensez à supprimer cette contrainte lorsque vous exportez les données vers un espace de stockage permanent.
Incontournables à l’échelle de l’entreprise (pagination et limitation de débit)
Lorsque vous étendez ces requêtes d’un simple utilisateur de test à un locataire d’entreprise comptant des centaines de milliers d’objets, les performances et la fiabilité deviennent primordiales.
- Une extraction de données n’est jamais terminée tant que vous n’avez pas suivi explicitement la propriété @odata.nextLink pour chaque page de résultats.
- Respectez les réponses HTTP 429 de limitation de débit en implémentant des routines de backoff exponentiel et en veillant à ce que votre script puisse reprendre en toute sécurité là où il s’est arrêté.
- Regroupez vos requêtes avec discernement. Privilégiez quelques requêtes plus volumineuses et bien structurées plutôt qu’une avalanche de petits appels, et mettez en cache de manière systématique les correspondances groupe-site.
- Partitionnez les analyses massives du locataire par identifiants de site SharePoint spécifiques ou par plages de dates afin d’éviter les délais d’expiration des requêtes, et planifiez ces opérations lourdes en dehors des heures de pointe.
Pièges courants (et solutions rapides)
Même les administrateurs chevronnés rencontrent des obstacles lorsqu’ils construisent des pipelines automatisés d’interrogation de Graph. Gardez à l’esprit ces pièges courants et leurs correctifs rapides :
- Piège : les exports CSV dérivent et se cassent à mesure que les schémas sous-jacents évoluent.
Solution : utilisez directement l’API Graph avec des transformations versionnées et une gestion robuste des champs « inconnus ». - Piège : les identifiants mixtes, comme les GUID et les noms principaux d’utilisateur (UPN), cassent les jointures de bases de données.
Solution : normalisez vos données dans un modèle sémantique cohérent couvrant les utilisateurs, les groupes, les sites, les lecteurs, les éléments et les autorisations. - Piège : le « biais de la page 1 » aveugle votre supervision et masque des incidents de sécurité majeurs enfouis dans les pages suivantes.
Solution : journalisez systématiquement le nombre total de pages traitées et déclenchez des alertes si les volumes d’enregistrements attendus chutent de façon inattendue. - Piège : être submergé par un volume ingérable de fichiers non pertinents.
Solution : filtrez explicitement sur les portées de partage, sur des fenêtres de dates de création ou de modification précises, et sur des listes ciblées de termes sensibles. - Piège : des partages Teams qui ne peuvent pas être rattachés aux fichiers sous-jacents.
Solution : corrélez directement les URL web des messages de canal aux éléments de lecteur et conservez les deux identifiants uniques.
Indicateurs clés de niveau direction que cela rend possibles
Transformer les sorties brutes de l’API Graph en indicateurs structurés donne à la direction la visibilité dont elle a cruellement besoin. Voici les indicateurs clés de performance que vous pouvez exploiter :
- Vélocité de l’exposition externe : mesurer le nombre de nouveaux liens d’invités générés par semaine, ventilés par site ou par équipe.
- Taux de consultation des fichiers sensibles : suivre les lecteurs uniques de contenus étiquetés, en distinguant les utilisateurs internes des invités externes.
- Effet de rebond des groupes : identifier les fichiers qui deviennent soudainement accessibles dans les 24 heures suivant une modification d’appartenance à un groupe.
- Circulation fantôme : suivre les fichiers sensibles qui se propagent à travers plusieurs équipes et sites au cours d’un même sprint.
- Efficacité du nettoyage : compter les liens de partage révoqués et mesurer le délai global de remédiation.
Recette de démarrage rapide (flux à copier-coller)
Si vous souhaitez lancer dès maintenant votre première trace de bout en bout dans Graph Explorer, suivez ce flux séquentiel à copier-coller :
- Interroger les détails de base de l’utilisateur et ses groupes :
/users/{upn}?$select=id,displayName
/users/{id}/memberOf?$select=id,displayName - Pour chaque groupe Microsoft 365 découvert, récupérez les éléments enfants du lecteur :
/groups/{groupId}/drive/root/children?$select=id,name,webUrl,lastModifiedDateTime&$top=200
Veillez à suivre @odata.nextLink - Pour chaque élément de fichier, vérifiez les autorisations :
/drives/{driveId}/items/{itemId}/permissions?$select=id,roles,grantedToV2,link
Filtrez pour vous assurer que link/scope est dans ('anonymous','organization') - Exportez vos lignes propres vers votre entrepôt de données, en incluant l’horodatage du locataire, l’identifiant du site, l’identifiant du lecteur, l’identifiant de l’élément, l’URL web, le propriétaire, la portée et les données d’expiration.
- Visualisez les données agrégées dans Power BI pour une supervision continue de l’organisation.
Transformer cela en tableau de bord vivant
Les requêtes ponctuelles dans Graph Explorer sont parfaites pour les investigations, mais une gouvernance réelle exige de l’automatisation. Transformez vos requêtes en tableau de bord opérationnel vivant en établissant des flux de données robustes, en normalisant les tables des utilisateurs, groupes, sites, lecteurs, éléments, autorisations et messages, et en construisant un schéma en étoile centré sur vos éléments de fichiers. Mettez en place des actualisations incrémentielles des données basées sur les dates de modification, et configurez des alertes en temps réel qui se déclenchent dès que de nouveaux liens externes apparaissent sur des contenus étiquetés très sensibles.
Plan de déploiement sur 30 jours
Prêt à mettre cela en pratique dans toute votre organisation ? Suivez ce cadre de déploiement structuré en quatre semaines :
- Semaine 1 : finalisez l’inscription de votre application, attribuez des autorisations Graph API au strict minimum nécessaire et établissez des requêtes de référence en utilisant des paramètres $select et $filter précis.
- Semaine 2 : Développez les scripts de pagination, mettez en œuvre la normalisation des identifiants, en passant des ID aux UPN, et réalisez votre tout premier export de données réussi.
- Semaine 3 : Construisez votre modèle de données Power BI et vos indicateurs clés fondamentaux, y compris le suivi de l’exposition externe et l’analyse du risque de propagation.
- Semaine 4 : Automatisez l’actualisation de vos données, configurez des alertes d’anomalies et documentez les procédures opérationnelles standard à l’intention de vos équipes sécurité et conformité.
À qui s’adresse ce guide
Cette méthodologie est spécialement conçue pour certains rôles au sein de votre entreprise :
- Les administrateurs Microsoft 365 et les responsables SecOps qui soupçonnent que leurs tableaux de bord d’administration par défaut masquent des zones d’ombre critiques.
- Les équipes conformité qui ont besoin d’une visibilité complète sur le partage, sans multiplier les logiciels tiers coûteux.
- Les responsables de la collaboration qui sont en définitive garants de la sécurité et de la maîtrise du partage externe.
Conseils terrain
Gardez ces conseils pratiques à portée de main tout au long de votre parcours d’automatisation avec Graph :
- Commencez toujours votre investigation soit par l’utilisateur, soit par le fichier, puis élargissez-la dans les deux directions pour éliminer les angles morts.
- Considérez toute action « ajouter au groupe » comme une modification à haut risque, et examinez les conséquences sur les accès en aval dans les 24 heures.
- Tenez à jour une liste restreinte de termes sensibles à rechercher dans les messages Teams et les noms de fichiers, et révisez-la régulièrement.
- Journalisez avec rigueur le nombre de pages traitées et les volumes d’enregistrements : un silence complet dans vos journaux est parfois le signe qu’une tâche de votre pipeline est défaillante.
Conclusion
Maîtriser Microsoft Graph pour retracer de bout en bout l’activité des utilisateurs permet de combler le fossé entre des vues d’administration fragmentées et une véritable visibilité à l’échelle de l’entreprise. En passant d’une logique de silos isolés à une cartographie relationnelle des accès, vous pouvez sécuriser proactivement les données sensibles, éliminer la circulation fantôme et fournir à la direction les indicateurs clés dont elle a besoin pour décider. Pour découvrir d’autres analyses d’experts, des exemples concrets et des approfondissements sur des scénarios comme celui-ci, écoutez l’épisode complet sur Map Microsoft 365 Users, Groups, Files, and Shares with Graph.
Abonnez-vous
Pour des approfondissements et des recettes Graph concrètes, retrouvez les nouveaux épisodes sur m365.show/subscribe