Matrice des accès DFIR Microsoft 365
Lors d’une investigation forensique cloud sur Microsoft 365 et Microsoft Entra ID, les analystes DFIR se heurtent fréquemment à des blocages d’autorisations : les rôles octroyés semblent élevés, mais des flux de journaux critiques demeurent inaccessibles, les requêtes API renvoient des erreurs HTTP 403 Forbidden, ou les exports de recherche échouent.
Une réponse à incident efficace exige d’établir dès les premières heures des habilitations forensiques précises, sans sur-privilège inutile mais sans angle mort. Cette fiche fournit une matrice opérationnelle complète reliant chaque source de données forensiques Microsoft 365 à son rôle minimal, son rôle recommandé, sa licence requise, sa durée de rétention native et ses vecteurs d’extraction.
L’espace forensique de Microsoft 365 est morcelé en plusieurs domaines de contrôle d’accès basé sur les rôles (RBAC) indépendants :
- Rôles d’annuaire entra ID : régissent le plan d’identité, la configuration du tenant, les logs d’authentification et les objets de l’annuaire (voir Fiche 02 — Microsoft Entra ID : Le plan d’identité).
- RBAC Microsoft purview : contrôle les investigations de conformité, la recherche dans le journal d’audit unifié (UAL) et l’export eDiscovery (voir Fiche 13 — Dissection du Unified Audit Log et Fiche 14 — Audit Log vs UAL vs Entra Audit Log).
- RBAC des charges de travail (Exchange, SharePoint, teams) : régit la configuration des services, l’inspection directe des boîtes aux lettres et le traçage des messages (voir Fiche 33 — Investigation Exchange Online et Fiche 34 — Investigation SharePoint Online).
- RBAC unifié Microsoft Defender XDR : contrôle la télémétrie brute, le traitement des alertes et le suivi des flux de messagerie (voir Fiche 15 — Message Trace Forensique).
Le rôle Global Reader (Lecteur général) ne couvre que la couche de lecture de l’annuaire et des portails ; il laisse des angles morts majeurs dans Purview, l’accès au contenu des boîtes mail et la télémétrie brute Defender (comme détaillé dans la Fiche 05 — global Reader pour le DFIR : périmètre et angles morts).
La matrice opérationnelle des accès DFIR
Section intitulée « La matrice opérationnelle des accès DFIR »Le tableau suivant synthétise l’ensemble des exigences opérationnelles d’accès pour la réponse à incident sur Microsoft 365 :
| Source de données forensique | Charge de travail / Domaine | Rôle minimal (Moindre privilège) | Rôle recommandé DFIR | Licence requise | Rétention native | Vecteurs d’extraction | Pourquoi Global Reader seul échoue |
|---|---|---|---|---|---|---|---|
| Logs de connexion utilisateur (Interactifs) | Entra ID | Reports Reader | Security Reader | Free (7j) / P1/P2 (30j) | 7 à 30 jours | Graph API (/auditLogs/signIns), PowerShell Microsoft.Graph | GR visualise dans le portail/Graph mais ne peut corréler avec les signaux Defender XDR. |
| Connexions non interactives & principaux de service | Entra ID | Reports Reader | Security Reader | Entra ID P1 / P2 | 30 jours | Graph API (/auditLogs/signIns), PowerShell | GR visualise, mais les connexions non interactives sont absentes sous licence Entra Free. |
| Logs d’audit d’annuaire (Modifications utilisateurs/groupes/apps) | Entra ID | Reports Reader | Security Reader | Free (7j) / P1/P2 (30j) | 7 à 30 jours | Graph API (/auditLogs/directoryAudits), PowerShell | GR offre un accès complet en lecture aux audits d’annuaire. |
| Événements à risque identity protection | Entra ID Protection | Security Reader | Security Reader | Entra ID P2 / E5 | 30 à 90 jours | Graph API (/identityProtection/riskyUsers, riskDetections) | Reports Reader ne voit pas les statuts de remédiation ; P2 requis. |
| Journal d’audit unifié (UAL) (Opérations générales) | Purview Compliance | Purview View-Only Audit Logs | Purview Audit Reader + Security Reader | M365 Business Basic / E3 / E5 | 180 jours | Search-UnifiedAuditLog, Graph Purview Audit API | GR NE PEUT PAS interroger l’UAL dans Purview ni exécuter Search-UnifiedAuditLog. |
Événements d’audit premium (MailItemsAccessed, Send) | Purview Compliance | Purview View-Only Audit Logs | Purview Audit Reader | Purview Audit (Premium) / E5 | 1 an (jusqu’à 10 ans avec option) | Search-UnifiedAuditLog, PowerShell | GR n’a aucun accès. Les comptes sans licence Audit Premium ne génèrent pas ces logs. |
| Suivi des messages Exchange (Trace < 10 jours) | Exchange Online | Exchange View-Only Recipients | Exchange View-Only Configuration | Exchange Online Plan 1/2 | 10 jours (temps réel) | Get-MessageTrace, Centre d’administration Exchange (EAC) | GR accède à l’EAC, mais les rapports de trace exigent des rôles Exchange spécifiques. |
| Suivi des messages historique (> 10 à 90 jours) | Exchange Online | Exchange Data Loss Prevention | Exchange Compliance Management | Exchange Online Plan 1/2 | 90 jours | Start-HistoricalSearch, Get-HistoricalSearch | La trace historique génère un export asynchrone CSV ; GR ne peut pas initier la tâche. |
| Contenu des boîtes aux lettres (Corps de mail, pièces jointes) | Exchange Online | Purview eDiscovery Manager | Purview eDiscovery Manager (ou délégation de boîte) | Purview eDiscovery Standard / Premium | Conservé jusqu’à purge (ou Lit Hold) | Recherche de contenu Purview, Outil d’export eDiscovery, Graph Mail API | GR NE PEUT EN AUCUN CAS lire le corps des mails ni télécharger d’éléments. |
| Règles et statistiques de boîte aux lettres | Exchange Online | Exchange View-Only Recipients | Exchange View-Only Configuration | Exchange Online Plan 1/2 | État actuel | Get-InboxRule, Get-MailboxFolderStatistics | Requiert une session PowerShell Exchange Online ; GR seul n’expose pas ces cmdlets. |
| Audits d’accès fichiers SharePoint / OneDrive | SharePoint / Purview | Purview Audit Reader | Purview Audit Reader + SharePoint Admin | SharePoint Online Plan 1/2 | 180 jours (UAL) | Search-UnifiedAuditLog, Graph Drive API | GR ne peut pas requêter les événements de téléchargement de fichiers dans l’UAL sans Purview. |
| Contenu des fichiers SharePoint / OneDrive | SharePoint Online | Administrateur de collection de sites | eDiscovery Manager ou Admin de site | SharePoint Online Plan 1/2 | Dépendant du cycle de vie | SharePoint REST API, Export de contenu eDiscovery | GR ne PEUT pas télécharger de fichiers privés depuis un OneDrive personnel. |
| Conversations privées teams & transcriptions | Microsoft Teams / Purview | Purview eDiscovery Manager | Purview eDiscovery Manager | Teams Essentials / E3 / E5 | Conservé jusqu’à purge | Recherche de contenu Purview, Graph Protected APIs (/chats/getAllMessages) | GR ne PEUT pas lire les messages privés teams ni les enregistrements. |
| Advanced hunting Defender XDR (Télémétrie brute 30j) | Microsoft Defender XDR | Defender Security Reader | Defender Security Reader | Defender for Endpoint / Office / Identity / E5 | 30 jours | Portail Defender, API Advanced Hunting (/api/advancedhunting/run) | GR seul n’a pas accès à l’API d’advanced hunting si le RBAC unifié Defender est appliqué. |
| Consentements OAuth & secrets de principaux de service | Entra ID | Security Reader | Security Reader | Entra ID Free / P1 / P2 | État actuel | Graph API (/oauth2PermissionGrants, /servicePrincipals) | GR peut lire les consentements, mais pas auditer finement les informations d’identification via Graph. |
Pourquoi global Reader ne suffit pas pour le DFIR
Section intitulée « Pourquoi global Reader ne suffit pas pour le DFIR »Une erreur fréquente lors des premières heures d’un incident survient lorsque les administrateurs du client octroient uniquement le rôle Global Reader aux intervenants. Les analystes découvrent alors des impasses opérationnelles immédiates :
1. Le blocage de l’audit purview
Section intitulée « 1. Le blocage de l’audit purview »Le journal d’audit unifié (UAL) dépend du RBAC Purview, et non du RBAC Entra ID. Lorsqu’un Global Reader ouvre compliance.microsoft.com ou se connecte via PowerShell :
# Tentative d'interrogation de l'UAL avec le rôle Global Reader :Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-3) -EndDate (Get-Date)Résultat :
Write-ErrorMessage : The term 'Search-UnifiedAuditLog' is not recognized as the name of a cmdlet,function, script file, or operable program.Sans le rôle Audit Reader ou View-Only Audit Logs attribué dans le portail de conformité Purview, l’espace d’exécution PowerShell Exchange/Compliance ne charge pas la commande.
2. L’impossibilité d’inspecter les contenus (eDiscovery)
Section intitulée « 2. L’impossibilité d’inspecter les contenus (eDiscovery) »Global Reader exclut formellement l’inspection des données utiles :
- Impossible d’ouvrir ou de télécharger un e-mail de phishing signalé dans la boîte d’une victime.
- Impossible de récupérer une pièce jointe déposée sur un site OneDrive personnel compromis.
- Impossible d’extraire les échanges de chat privés Teams entre l’attaquant et des collaborateurs internes.
L’acquisition de la preuve matérielle exige le rôle eDiscovery Manager dans Purview ou des autorisations applicatives explicites (
Mail.Read,Files.Read.All) assorties de restrictions strictes.
3. La télémétrie Brute advanced hunting
Section intitulée « 3. La télémétrie Brute advanced hunting »L’exécution de requêtes KQL sur les tables de télémétrie brute de 30 jours de Microsoft Defender XDR (CloudAppEvents, IdentityLogonEvents, EmailEvents) requiert :
- Le rôle
Security Readerdans Entra ID ou le rôleSecurity Operations (Read)dans le RBAC unifié Defender. - Global Reader permet de voir les fiches d’alerte, mais bloque les requêtes complexes de corrélation KQL si le portail a basculé sous la gouvernance Defender RBAC.
Profils d’accès DFIR recommandés
Section intitulée « Profils d’accès DFIR recommandés »Pour respecter le principe du moindre privilège tout en garantissant une visibilité forensique complète, trois profils types doivent être sollicités :
graph TD subgraph "Profils d'accès opérationnels" A[Profil 1 : Triage et Audit en lecture seule] -->|Rôles| A1[Entra : Security Reader<br/>Purview : Audit Reader<br/>Exchange : View-Only Configuration] A -->|Capacités| A2[Sign-ins, UAL, PIM, Suivi messages, Alertes Defender]
B[Profil 2 : Acquisition et extraction de contenu] -->|Rôles| B1[Profil 1 +<br/>Purview : eDiscovery Manager<br/>Graph App : Mail.Read, Files.Read.All] B -->|Capacités| B2[Corps de mails, Fichiers OneDrive, Chats Teams, Préservation]
C[Profil 3 : Confinement actif et remédiation] -->|Rôles| C1[Entra : User Administrator ou PIM temporaire<br/>Purview : Compliance Administrator] C -->|Capacités| C2[Révocation de sessions, Blocage d'apps, Pose de Lit Hold] endProfil 1 : triage non destructif et audit forensique (lecture seule)
Section intitulée « Profil 1 : triage non destructif et audit forensique (lecture seule) »- Rôle entra ID :
Security Reader(inclut Reports Reader, donne accès aux logs de connexion, à Identity Protection et aux logs d’annuaire). - Rôle purview :
Audit Reader(permet de rechercher et d’exporter l’UAL). - Rôle Exchange online :
View-Only Configuration+View-Only Recipients(autoriseGet-InboxRule, les traces de messages et la configuration de transport). - Rôle Defender XDR :
Security Reader(autorise les requêtes KQL d’Advanced Hunting).
Profil 2 : acquisition des preuves et extraction de contenu
Section intitulée « Profil 2 : acquisition des preuves et extraction de contenu »Comprend l’intégralité du Profil 1, plus :
- Rôle purview :
eDiscovery Manager(attribué dans le portail de conformité). Permet la recherche et l’exportation des corps de mail, des fichiers SharePoint/OneDrive et des conversations Teams. - Principal de service (extraction automatisée) : application Entra avec authentification par certificat, disposant des consentements applicatifs :
AuditLog.Read.AllDirectory.Read.AllSecurityIncident.Read.AllSecurityEvents.Read.All- (Facultatif pour acquisition ciblée) :
Mail.Read,Files.Read.All(restreint par ApplicationAccessPolicy).
Profil 3 : confinement et remédiation Active (écriture)
Section intitulée « Profil 3 : confinement et remédiation Active (écriture) »Nécessite des privilèges d’écriture. Doit systématiquement être activé via Privileged Identity Management (PIM) avec justification d’incident et validation :
- Rôle entra ID :
User Administrator(révocation des jetons, réinitialisation de mots de passe, désactivation de comptes). - Rôle Exchange online :
Organization Management(suppression de règles de transfert malveillantes ou de règles de transport). - Rôle purview :
Compliance Administrator(pose immédiate de Litigation Hold pour préserver les boîtes compromises).
Méthodologie d’investigation : valider ses habilitations
Section intitulée « Méthodologie d’investigation : valider ses habilitations »Avant d’initier la collecte des preuves, validez systématiquement l’étendue de vos habilitations PowerShell pour éviter les interruptions d’extraction en cours de triage.
# ==============================================================================# Hermes Codex - Script de validation des accès DFIR Microsoft 365# ==============================================================================
Write-Host "[*] Vérification des habilitations forensiques Microsoft 365..." -ForegroundColor Cyan
# 1. Vérifier l'accès Graph et Entra IDImport-Module Microsoft.Graph.Authentication, Microsoft.Graph.Reports -ErrorAction Stop
$graphContext = Get-MgContextif ($null -eq $graphContext) { Write-Warning "[-] Non connecté à Microsoft Graph. Exécutez Connect-MgGraph d'abord."} else { Write-Host "[+] Graph connecté : $($graphContext.Account) (Tenant : $($graphContext.TenantId))" -ForegroundColor Green try { $testSignIn = Get-MgAuditLogSignIn -Top 1 -ErrorAction Stop Write-Host "[+] Accès aux Sign-in Logs Entra ID : SUCCÈS" -ForegroundColor Green } catch { Write-Error "[-] Accès aux Sign-in Logs Entra ID : ÉCHEC ($($_.Exception.Message))" }}
# 2. Vérifier l'accès Exchange Online et Message TraceImport-Module ExchangeOnlineManagement -ErrorAction Stop
try { $session = Get-ConnectionInformation | Where-Object { $_.ConnectionStatus -eq "Connected" } if ($session) { Write-Host "[+] Session Exchange Online connectée." -ForegroundColor Green $testTrace = Get-MessageTrace -StartDate (Get-Date).AddDays(-1) -EndDate (Get-Date) -PageSize 1 -ErrorAction Stop Write-Host "[+] Accès au suivi des messages Exchange : SUCCÈS" -ForegroundColor Green } else { Write-Warning "[-] Session Exchange Online non connectée. Exécutez Connect-ExchangeOnline." }} catch { Write-Error "[-] Accès au suivi des messages Exchange : ÉCHEC ($($_.Exception.Message))"}
# 3. Vérifier l'accès au journal d'audit unifié Purviewtry { $testUAL = Search-UnifiedAuditLog -StartDate (Get-Date).AddHours(-2) -EndDate (Get-Date) -ResultSize 1 -ErrorAction Stop Write-Host "[+] Accès au journal d'audit unifié Purview : SUCCÈS" -ForegroundColor Green} catch { Write-Error "[-] Accès UAL Purview : ÉCHEC ($($_.Exception.Message))" Write-Warning " -> Rôle Purview 'Audit Reader' ou 'View-Only Audit Logs' manquant !"}# Décoder le jeton JWT pour inspecter les scopes (délégués) ou les rôles (applicatifs)# Outils : jq et base64
ACCESS_TOKEN="eyJ0eXAiOiJKV1QiLC..."
echo "$ACCESS_TOKEN" | cut -d'.' -f2 | base64 -d 2>/dev/null | jq '{ app_displayname: .app_displayname, appid: .appid, roles: .roles, scp: .scp, tid: .tid, upn: .upn, exp: (.exp | todate)}'Doctrine transversale : possible vs configuré vs autorisé vs accessible vs utilisé vs observé vs prouvé
Section intitulée « Doctrine transversale : possible vs configuré vs autorisé vs accessible vs utilisé vs observé vs prouvé »Dans tout rapport d’investigation, l’analyste doit respecter scrupuleusement la graduation de certitude technique :
+-------------------------------------------------------------------------------+| LES 7 NIVEAUX DE CERTITUDE FORENSIQUE || || 1. Possible -> L'architecture de la charge de travail permet l'action. || 2. Configuré -> L'audit était activé et les politiques étaient en place. || 3. Autorisé -> Le compte disposait des rôles RBAC nécessaires. || 4. Accessible -> L'accès conditionnel et le réseau autorisaient l'accès. || 5. Utilisé -> Le compte a déclenché une action sur la ressource. || 6. Observé -> L'événement est consigné dans les logs (UAL, Sign-ins). || 7. Prouvé -> Certitude forensique immuable, corrélée et vérifiée. |+-------------------------------------------------------------------------------+Applications directes à la matrice des accès
Section intitulée « Applications directes à la matrice des accès »- Autorisé != utilisé : un attaquant ayant compromis un compte doté du rôle
Exchange Administratorétait autorisé à exporter une boîte aux lettres ou à modifier les règles de transport du domaine. Cependant, cela ne prouve pas qu’il l’a fait tant qu’aucun événementNew-TransportRuleou export n’a été observé dans l’UAL. - Configuré != observé : l’audit de boîte aux lettres peut être activé pour le tenant, mais si l’utilisateur ciblé ne possède pas la licence Purview Audit (Premium), les actions critiques
MailItemsAccessedne seront pas observées. L’analyste ne doit jamais conclure « aucun e-mail n’a été consulté », mais « l’événement n’est pas observable en raison des limitations de licence ». - Observé != prouvé : un événement de connexion
ResultType = 0(Succès) observé dans les logs d’Entra ID indique une authentification réussie. Pour prouver une session humaine malveillante interactive, l’analyste doit corréler cette connexion avec des événements applicatifs ultérieurs (UAL) partageant la même adresse IP source, le même User-Agent et le même identifiant de session.
Pièges et confusions fréquentes
Section intitulée « Pièges et confusions fréquentes »| Piège | Cause technique | Conséquence pour l’enquête | Action corrective |
|---|---|---|---|
| Demander global admin par défaut | L’attribution de privilèges excessifs enfreint la politique client et déclenche des comités de validation lourds. | Retarde le début de l’investigation de plusieurs jours précieux. | Solliciter immédiatement le Profil 1 (security Reader + purview audit Reader). |
| Disparition silencieuse des cmdlets | Se connecter à Exchange Online PowerShell avec uniquement des rôles Entra masque les cmdlets Purview. | Search-UnifiedAuditLog renvoie une erreur de commande inconnue. | Attribuer formellement Audit Reader dans le portail de conformité (compliance.microsoft.com). |
| Supposer 30 jours de rétention sur entra free | Les tenants Entra ID Free n’enregistrent les connexions et audits que pendant 7 jours. | Les logs d’une attaque survenue à J-10 sont définitivement écrasés. | Vérifier immédiatement la licence via Get-MgSubscribedSku (voir Fiche 04). |
| Confondre message trace et contenu de mail | Le suivi des messages ne consigne que les métadonnées de transport (expéditeur, destinataire, objet, statut). | L’analyste ne peut pas analyser la charge utile malveillante ni les liens à partir de la trace. | Utiliser la recherche de contenu Purview ou l’Explorateur Defender for Office 365. |
| Épuisement des quotas lors de l’export | L’interrogation massive de Graph sans gestion du code HTTP 429 Too Many Requests fait planter les scripts. | Perte de données et chronologie tronquée. | Implémenter un mécanisme de backoff exponentiel et surveiller l’en-tête Retry-After. |
État de la fonctionnalité en 2026
Section intitulée « État de la fonctionnalité en 2026 »Changements récents
Section intitulée « Changements récents »- Scission stricte des rôles purview et entra ID : Microsoft a finalisé la séparation entre les rôles d’annuaire et les autorisations de conformité. Les rôles d’annuaire n’héritent plus automatiquement des droits d’investigation Purview.
- Rétention standard UAL portée à 180 jours : la rétention par défaut des événements du journal d’audit unifié est de 180 jours pour l’ensemble des licences d’entreprise (au lieu des 90 jours historiques).
- Généralisation du RBAC unifié Defender XDR : Defender applique désormais son propre modèle RBAC granulaire. Les intervenants requièrent des permissions explicites pour interroger les tables KQL d’Advanced Hunting.
Fonctionnalités dépréciées
Section intitulée « Fonctionnalités dépréciées »- Modules AzureAD et MSOnline : définitivement retirés. Tous les scripts de validation de rôles doivent impérativement s’appuyer sur
Microsoft.Graph.Identity.GovernanceetMicrosoft.Graph.Authentication. - Authentification de base : totalement désactivée sur tous les services M365. L’authentification moderne (MFA ou certificat applicatif) est obligatoire.
Limitations actuelles
Section intitulée « Limitations actuelles »- Latence d’ingestion UAL : le délai d’apparition des événements dans l’UAL varie de 15 minutes à 24 heures selon la charge du service.
- Absence de rétroactivité de la télémétrie premium : l’attribution d’une licence E5 ou Purview Audit Premium en cours d’incident ne régénère pas les événements
MailItemsAccessedantérieurs.
Points clés à retenir
Section intitulée « Points clés à retenir »- Global Reader est insuffisant : il ne permet ni d’interroger le journal d’audit unifié Purview, ni d’inspecter les corps de messages, ni d’exécuter des requêtes brutes KQL sur Defender XDR.
- Adopter le profil 1 pour le triage initial : combiner
Security Reader(Entra ID) +Audit Reader(Purview) +View-Only Configuration(Exchange Online) pour une visibilité forensique maximale sans privilège de modification. - Valider les licences avant d’établir un diagnostic : distinguer immédiatement Entra Free (7 jours) d’Entra P1/P2 (30 jours), et Purview Audit Standard (180 jours) d’Audit Premium (1 an +
MailItemsAccessed). - Distinguer métadonnées et données utiles : message Trace fournit l’historique d’acheminement ; l’extraction du mail malveillant exige le rôle eDiscovery Manager.
- Appliquer la doctrine de certitude : ne jamais assimiler ce qu’un compte était autorisé à faire à ce que la preuve démontre qu’il a exécuté.
Références
Section intitulée « Références »- Microsoft Purview : autorisations dans le portail de conformité
- Microsoft Entra ID : rôles intégrés et autorisations
- Microsoft Graph : permissions de l’API des journaux d’audit
- Exchange Online : autorisations de fonctionnalités
- Microsoft Defender XDR : contrôle d’accès unifié basé sur les rôles (RBAC)