M365Con 2027 – gratis online conferentie · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Compliance-blinde vlekken in Microsoft 365 ontdekken met Microsoft Graph

By ·

Welkom terug bij de podcast en ons bijbehorende technische blog! Als je ooit een standaard compliance-dashboard van Microsoft 365 hebt vertrouwd en ervan uitging dat alles volledig was meegenomen…

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

Welkom terug bij de podcast en ons bijbehorende technische blog! Als je ooit op een standaard compliance-dashboard van Microsoft 365 hebt vertrouwd en ervan uitging dat alles volledig was meegenomen, trap je misschien in een valse veiligheid. Standaard compliance-dashboards zijn bedoeld als samenvattingen, niet als de absolute waarheid. Kritieke signalen, zoals Data Loss Prevention (DLP)-hits, eDiscovery-acties en onderliggende beveiligingswaarschuwingen, staan vaak achter Microsoft Graph-endpoints die aparte machtigingen, geavanceerde queryparameters en een goede koppeling van gegevens vereisen. In deze diepe duik onderzoeken we waarom je ingebouwde rapporten cruciale informatie missen, brengen we in kaart welke exacte Graph-endpoints je moet bevragen, en laten we zien hoe je dat ruwe bewijsmateriaal rechtstreeks doorsluist naar Microsoft Purview voor heldere, verdedigbare rapportage. Wil je onze volledige discussie over dit onderwerp horen? Bekijk dan zeker de bijbehorende podcastaflevering: Find Missing Microsoft 365 Compliance Data with Graph.

Overzicht

Standaard compliancedashboards zijn samenvattingen, geen waarheid. Cruciale signalen (DLP-hits, eDiscovery-acties, beveiligingswaarschuwingen) staan vaak achter Graph-endpoints met aparte machtigingen. We brengen de exacte API's, scopes en scriptpatronen in kaart om bewijs met volledige detailgraad op te halen en dit centraal in Purview onder te brengen voor helder en verdedigbaar rapporteren.

Voor wie dit nuttig is

  • Eigenaars van compliance, juridische zaken en risicobeheer die auditklaar bewijs nodig hebben

  • M365- en Entra-beheerders die rapportage en automatisering bouwen

  • Beveiligingsteams die DLP-, eDiscovery- en waarschuwingsgegevens met elkaar correleren

De blinde vlekken (waarom ingebouwde dashboards iets missen)

  • Aggregatie en vertraging: UI-samenvattingen laten geneste incidentdetails en recente activiteit weg

  • Gaten in de scope: eDiscovery-acties en DLP-matches kunnen buiten de standaardexports vallen

  • Gesplitste machtigingen: de /security- en /compliance-endpoints vereisen verschillende scopes

  • Geen koppelingen: dashboards correleren zelden incidenten met gebruikers, custodians of casusstappen

De waardevolle Graph-endpoints (kopieer deze lijst)

  • Beveiligingswaarschuwingen (breedte)

    • Endpoint: /security/alerts of /security/alerts_v2

    • App-machtigingen (voorbeelden): SecurityEvents.Read.All (of Alerts.Read.All in nieuwere modellen)

    • Gebruik voor: tijdlijnen van waarschuwingen, ernst, status en toewijzingen

  • DLP-beleid en -activiteit (gegevensverlies)

    • Endpoints (per tenant verschillend, afhankelijk van beschikbaarheid):

      • /security/dataLossPreventionPolicies (overzicht van beleid)

      • /security/dlpIncidents of geavanceerde DLP-incidentendpoints in de security-namespace (afhankelijk van de tenant)

    • App-machtigingen: SecurityEvents.Read.All (en/of specifieke DLP-leesscopes indien beschikbaar)

    • Gebruik voor: matches, locaties (Exchange/SharePoint/Teams) en afhandeling

  • eDiscovery (casussen en acties)

    • /compliance/ediscovery/cases

    • Subpaden: /custodians, /searches, /reviewSets, /noncustodialDataSources, /operations

    • App-machtigingen: eDiscovery.Read.All (en schrijfrechten als je casussen beheert)

    • Gebruik voor: casusstatus, bewaringen (holds), custodians, exports en acties van reviewers

  • Audit- en aanmeldingscontext (ondersteunend bewijs)

    • /auditLogs/directoryAudits, /auditLogs/signIns

    • App-machtigingen: AuditLog.Read.All, Directory.Read.All

    • Gebruik voor: wie wat wanneer heeft gewijzigd, en sessiecontext

Tip: veel compliancepayloads zijn diep genest. Houd rekening met het gebruik van $expand, pagineer via @odata.nextLink en koppel met /users/{id} voor weergavenamen en afdelingen.

Authenticatie en machtigingen (de rustige route)

  • Gebruik applicatiemachtigingen (service principal) voor onbewaakte taken

  • Registreer afzonderlijke apps voor security en de kern van Graph als je organisatie gesplitste privileges vereist

  • Geef alleen de minimale benodigde scopes toestemming en bewaar geheimen/certificaten in Key Vault

  • Implementeer exponentiële backoff voor 429/503-fouten en leg x-ms-request-id vast in logs

Scriptpatronen (PowerShell of Python)

  • Selecteren en uitklappen: vraag alleen de benodigde velden op, $select=…, $expand=… voor geneste entiteiten

  • Filter & tijdvenster: $filter=createdDateTime ge {ISO8601} voor delta's

  • Pagineer: loop door @odata.nextLink; ga nooit uit van resultaten op één pagina

  • Normaliseer: koppel gebruikers- en object-ID's vooraf aan namen en afdelingen, zodat de output leesbaar is

  • Verrijk met context: verrijk incidenten met gebruikers-, site-, team- of zaakmetadata voordat je exporteert

Zo koppel je het aan Purview (maak van data beslissingen)

  1. Standaardiseer de output: CSV/JSON met consistente veldnamen (tenant, incidentId, workload, userId, userUPN, severity, status, created, lastAction, caseId)

  2. Ingest: zet bestanden op een beveiligde opslaglocatie die Purview kan lezen (bijvoorbeeld ADLS Gen2)

  3. Tag & label: pas vertrouwelijkheidslabels of aangepaste tags toe (bijvoorbeeld “DLP-PII-High”) voor routering

  4. Dashboards: Purview (of Power BI op Purview-gegevens) voor trends, eigenaren en SLA-veroudering

  5. Automatiseringen: regels om zaakeigenaren te informeren bij herhalingen of escalaties; wekelijkse PDF-samenvattingen

Pilot van 30 minuten (stap voor stap)

  • 0–10 min: app-registratie + SecurityEvents.Read.All / eDiscovery.Read.All; maak een geheim of certificaat aan

  • 10–20 min: scripteer één endpoint (waarschuwingen of zaken) met paginering + $filter voor de laatste 7 dagen

  • 20–30 min: verrijk met /users, exporteer naar CSV, zet het bestand op het ADLS-pad en visualiseer een eenvoudige grafiek

KPI's die de waarde aantonen

  • % incidenten met ingevulde eigenaar en afhandeling

  • Gemiddelde tijd van incident tot zaak (of beoordelaar)

  • Accounts/locaties met herhaalde overtredingen per 30 dagen

  • Verschil met de aantallen van het standaarddashboard (gesloten gaten)

  • Doorlooptijd van audits (bespaarde uren voor het verzamelen van bewijs)

Veelvoorkomende valkuilen (en oplossingen)

  • Lege resultaten → verkeerde scopes of Gedelegeerd gebruikt waar Toepassing vereist is

  • Ontbrekende details → $expand vergeten / geneste verzamelingen niet uitgelezen

  • Onvolledige data → geen paginering; alleen de eerste pagina opgehaald

  • Naamafwijkingen → geen verrijking via een join met /users of HR-gegevens

  • Verouderde dashboards → geen geplande runs; voeg een taak toe en waarschuwingen bij fouten

Snelle winst deze week

  • Haal de laatste 7 dagen op uit /security/alerts en vergelijk de aantallen met het portaal

  • Exporteer open eDiscovery-zaken + bewaarplichtigen en deel ze met Juridische Zaken ter validatie

  • Voer een DLP-incidentcontrole uit, tag herhalingen en open vervolgacties in Purview

  • Plan een wekelijks bewijspakket (CSV + PDF) naar een compliance-mailbox

Veelgestelde vragen

  • Moet ik developer zijn? Nee – PowerShell of korte Python-scripts zijn voldoende.

  • Waarom app-machtigingen? De meeste /security- en /compliance-endpoints vereisen headless toegang met een hoog vertrouwensniveau.

  • Kan ik bij PowerShell blijven? Ja – gebruik de Microsoft Graph PowerShell SDK en werk met $top, $filter, $expand en paginering.

  • Is Purview verplicht? Niet strikt – maar het zet ruwe JSON om in controleerbare workflows en dashboards.

Conclusie

Dashboards geven een samenvatting; Graph vertelt het hele verhaal. Haal de juiste endpoints op, regel de authenticatie, pagineer en breid uit, en centraliseer daarna in Purview. Je gaat van afvinkbare compliance naar aantoonbaar, realtime inzicht – zonder te verdrinken in handmatige exports. Voor een diepgaand gesprek en experttips over het aanpakken van deze blinde vlekken kun je onze podcastaflevering beluisteren: Find Missing Microsoft 365 Compliance Data with Graph. Blijf je scripts verfijnen, beveilig je app-machtigingen en ga aan de slag met de data die je dashboards tot nu toe verborgen hielden!

Entities in this article

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

Related articles

RSS