💼 Management Samenvatting
Het registreren van Microsoft Graph-activiteiten in een centraal logplatform vormt een belangrijke bouwsteen voor de Nederlandse Baseline voor Veilige Cloud, omdat vrijwel elke moderne integratie met Microsoft 365 via de Graph-API verloopt. Door alle aanroepen vast te leggen ontstaat een onafhankelijk tijdsbeeld van welke service-principals, automatiseringsscripts en beheerders toegang vragen tot gevoelige gegevens of configuraties. Deze zichtbaarheid is essentieel voor organisaties die sterk leunen op automatisering, maar ook voor kleinere tenants die willen aantonen dat gegevensuitwisseling gecontroleerd en herleidbaar verloopt. Tevens levert de koppeling met een Log Analytics-workspace rijke context op voor dreigingsonderzoek: correlatie met aanmeldingsgegevens, auditlogboeken en Defender-signalen maakt het mogelijk om verdachte patronen in machtigingswijzigingen, massale exports of ongewone queryfrequenties vroegtijdig te herkennen. Tot slot creëert structurele logging een basis voor forensisch onderzoek en nalevingsrapportages richting toezichthouders, iets wat zonder Graph-activiteiten nauwelijks onderbouwd kan worden.
De vraag waarom Graph-activiteiten expliciet moeten worden opgeslagen wordt steeds relevanter nu SaaS-applicaties en automatiseringsplatformen standaard authenticeren via Entra ID en vervolgens via Microsoft Graph configuraties aanpassen of gegevens ophalen. Traditionele auditkaders richten zich vooral op interactieve gebruikers, waardoor programmatische toegang buiten beeld blijft en misbruik laat wordt ontdekt. Een gehackte service-principal kan daardoor ongemerkt mailboxen uitlezen, machtigingen uitbreiden of gastgebruikers toevoegen zonder dat er een waarschuwing volgt. Door Graph-activiteiten naar Log Analytics te sturen ontstaat een afzonderlijk spoor waarin de bronapplicatie, de gebruikte machtigingen, het doelobject en de contextuele metadata zijn vastgelegd. Daarmee wordt het eenvoudiger om afwijkingen te detecteren, bijvoorbeeld wanneer een script opeens buiten kantooruren permissies wijzigt of uitzonderlijk veel leesaanvragen doet. Organisaties verkrijgen bovendien een extra controlemiddel voor BIO 12.04, waarin logging van beheershandelingen expliciet wordt verlangd. Door de logs binnen de eigen tenant te houden kunnen bewaartermijnen, toegangsrechten en exportregels worden afgestemd op de Nederlandse regelgeving, iets wat met externe SaaS-dashboards vaak niet mogelijk is. Tot slot versnelt de aanwezigheid van deze dataset de incidentrespons, omdat securityteams niet langer hoeven te vertrouwen op losse applicatielogs maar direct over een volledig beeld van programmatische activiteiten beschikken.
Connection:
Connect-MgGraphRequired Modules: Microsoft.Graph
Implementatie
De maatregel bestaat uit het activeren van een diagnostische instelling voor de categorie MicrosoftGraphActivityLogs in het Entra ID-beheercentrum en deze te koppelen aan een Log Analytics-workspace die door het securityteam wordt beheerd. Alle logcategorieën worden ingeschakeld en voorzien van een retentieperiode die aansluit bij het interne archiveringsbeleid en de eisen uit de BIO. In omgevingen met meerdere tenants of managementgroepen wordt dezelfde configuratie via het PowerShell-script of Infrastructure-as-Code uitgerold zodat nieuwe workloads automatisch worden meegenomen. Zodra de koppeling actief is, stromen Graph-aanroepen binnen enkele minuten naar Log Analytics en kunnen ze via Kusto-query's, Microsoft Sentinel-analyses of maatwerkdashboards worden onderzocht. Het proces vraagt beperkte implementatietijd, maar vereist wel afstemming met privacy- en compliance-officers over bewaartermijnen en rollen. Door de configuratie en bijbehorende goedkeuringen zorgvuldig te documenteren ontstaat een reproduceerbaar proces dat eenvoudig opnieuw kan worden uitgevoerd bij tenantmigraties of recovery-scenario's. Het eindresultaat is een betrouwbare, centraal beheerde dataset waarmee zowel operationele teams als auditors inzicht krijgen in alle programmatische toegang tot Microsoft 365 en Entra ID.
- Start de implementatie met een inventarisatie van alle tenants, subscriptions en Log Analytics-workspaces waarin MicrosoftGraphActivityLogs moeten landen. Controleer of de gekozen workspace in dezelfde regio staat als Entra ID of dat er een expliciet besluit is genomen om data grensoverschrijdend op te slaan. Verzamel de TenantID, SubscriptionID en resource-ID van de workspace; deze waarden worden als parameters doorgegeven aan het script en vormen belangrijke input voor change- en auditdocumentatie. Definieer daarnaast een uniforme naamgevingsconventie voor diagnostische instellingen, bijvoorbeeld diag-mg-activity-
, zodat beheer en monitoring eenvoudig kunnen filteren. Voer vervolgens het script uit vanaf een beheerde werkplek. Start met Connect-MgGraph inclusief de scopes AuditLog.Read.All en Policy.ReadWrite.ApplicationConfiguration, zodat het script de configuratie mag lezen en aanpassen. Gebruik daarna de functie Invoke-Implementation om de workspace-ID, resourcegroep en gewenste retentie door te geven. Het script maakt de diagnostische instelling aan, schakelt alle categorieën in en logt iedere stap naar een change-dossier. Noteer het tijdstip, de gebruikte account en de scriptversie, zodat latere controles exact kunnen vaststellen hoe de configuratie tot stand is gekomen. - Wanneer een deel van de configuratie via het Entra ID-beheercentrum moet plaatsvinden, volg dan dezelfde stappen handmatig. Navigeer naar Monitoring → Diagnostic settings, selecteer Microsoft Graph Activity Logs en voeg een nieuwe configuratie toe die alle categorieën naar de gekozen Log Analytics-workspace stuurt. Documenteer welke instellingen niet via automatisering konden worden uitgevoerd en plan deze alsnog in het script, zodat de omgeving op termijn volledig geautomatiseerd wordt. Zorg ervoor dat er altijd minimaal twee beheerders de stappen controleren volgens het vier-ogenprincipe. Na activatie controleer je of binnen vijftien minuten nieuwe records in de MicrosoftGraphActivityLogs-tabel verschijnen. Voer een Kusto-query uit die filtert op de huidige datum en de naam van de service-principal waarmee het script is aangeroepen. Leg vast hoeveel records zijn binnengekomen, welke latency is gemeten en of alle verwachte velden worden gevuld (zoals OperationName, ApplicationId en ResultStatus). Voeg screenshots of exports toe aan het change-ticket en werk de CMDB bij met de referentie naar de diagnostische instelling. Rond af met een kennisoverdracht naar SOC-analisten en het privacyteam, zodat zij weten welke nieuwe gegevens beschikbaar zijn.
Vereisten
- Een solide inrichting van Graph-activiteitenlogging begint bij het vaststellen van de organisatorische randvoorwaarden. De eigenaar van de tenant moet expliciet opdracht geven om alle programmatische toegang vast te leggen, inclusief een beschrijving van de gegevenscategorieën en de bewaartermijnen. Zonder dit mandaat blijft logging vrijblijvend en bestaat het risico dat beheerteams de instelling uitschakelen zodra er kosten ontstaan. Zorg daarom voor een besluit van de Chief Information Security Officer waarin doelstelling, reikwijdte en acceptatiecriteria zijn opgenomen.
Aan de technische kant is Entra ID met de rol Global Administrator of Privileged Role Administrator nodig om de diagnostische koppeling aan te maken. Het team dat het meegeleverde script uitvoert heeft bovendien Monitoring Reader- en Log Analytics Contributor-rechten nodig op de doelworkspace. Leg deze roltoewijzingen vast in een beheermatrix, zodat duidelijk is wie scripts mag uitvoeren, wie configuraties mag wijzigen en wie alleen mag lezen tijdens audits. Controleer vooraf of de Microsoft.Graph PowerShell-module up-to-date is en of beheerwerkplekken voldoen aan de beveiligingsrichtlijnen, inclusief meervoudige authenticatie en just-in-time privileges.
De Log Analytics-workspace zelf moet ondergebracht zijn in een abonnement dat voldoet aan het cloud governance model van de organisatie. Plaats de workspace bij voorkeur in een centrale loggingresourcegroep, koppel Defender for Cloud aan en stel diagnostische instellingen in richting een archiefstorage-account voor langetermijnbewaring. Kies een pricing-tier die past bij het verwachte volume en configureer dagelijkse dataplafonds en budgetwaarschuwingen zodat kosten voorspelbaar blijven. - Controleer daarnaast of de netwerkverbinding tussen Entra ID en de workspace is toegestaan door firewall- of privatelink-beperkingen. In streng gescheiden omgevingen kan het nodig zijn om private endpoints in te richten of een dedicated upload-workspace te gebruiken die de data daarna doorstuurt naar de centrale omgeving. Test deze scenario's vooraf in een pilottenant, zodat duidelijk is of extra netwerkcomponenten onderdeel van het ontwerp moeten worden.
Processen zijn minstens zo belangrijk als techniek. Leg in het changeproces vast dat het activeren of aanpassen van de diagnostische instelling wordt geregistreerd in het IT-servicemanagementsysteem, inclusief de versie van het gebruikte script en de verwijzing naar de goedkeuring. Zorg dat monitoringteams weten welke Kusto-tabellen worden gevuld (MicrosoftGraphActivityLogs) en welke resource-tags worden gebruikt om scripts te herkennen. Documenteer ook de relatie met Microsoft Sentinel of andere SIEM-oplossingen, zodat correlatieregels eenvoudig kunnen worden hergebruikt.
Tot slot vereist deze maatregel nauwe samenwerking met privacy- en compliance-officers, omdat de logs context kunnen bevatten over gebruikers, service-principals en toestemmingen. Beschrijf in een gegevensbeschermingseffectbeoordeling welke persoonsgegevens worden verwerkt, hoe lang ze worden bewaard en wie toegang heeft. Train ontwikkelteams en leveranciers in het verantwoord gebruik van service-principals en wijs ze op de mogelijkheid dat misbruik sneller wordt ontdekt. Pas awareness-materialen aan zodat medewerkers begrijpen dat programmatische acties net zo traceerbaar zijn als interactief beheer.
Implementatie
Gebruik PowerShell-script graph-activity-logs-diagnostic-setting.ps1 (functie Invoke-Implementation) – Het script graph-activity-logs-diagnostic-setting.ps1 automatiseert de volledige levenscyclus van deze maatregel. Via de functie Invoke-Implementation wordt een verbinding opgebouwd met Microsoft Graph, worden de vereiste API-machtigingen gecontroleerd en wordt vervolgens een diagnostische instelling aangemaakt die alle MicrosoftGraphActivityLogs naar de opgegeven Log Analytics-workspace schrijft. Het script valideert of de workspace bestaat, of de gekozen retentie overeenkomt met het ingestelde beleid en of bestaande instellingen moeten worden bijgewerkt in plaats van overschreven. Loguitvoer en foutmeldingen worden lokaal opgeslagen zodat auditors kunnen achterhalen wanneer de configuratie voor het laatst is uitgevoerd en met welke parameters. Daarmee vormt het script het primaire middel om de maatregel consequent en herhaalbaar uit te rollen..
- Start de implementatie met een inventarisatie van alle tenants, subscriptions en Log Analytics-workspaces waarin MicrosoftGraphActivityLogs moeten landen. Controleer of de gekozen workspace in dezelfde regio staat als Entra ID of dat er een expliciet besluit is genomen om data grensoverschrijdend op te slaan. Verzamel de TenantID, SubscriptionID en resource-ID van de workspace; deze waarden worden als parameters doorgegeven aan het script en vormen belangrijke input voor change- en auditdocumentatie. Definieer daarnaast een uniforme naamgevingsconventie voor diagnostische instellingen, bijvoorbeeld diag-mg-activity-
, zodat beheer en monitoring eenvoudig kunnen filteren.
Voer vervolgens het script uit vanaf een beheerde werkplek. Start met Connect-MgGraph inclusief de scopes AuditLog.Read.All en Policy.ReadWrite.ApplicationConfiguration, zodat het script de configuratie mag lezen en aanpassen. Gebruik daarna de functie Invoke-Implementation om de workspace-ID, resourcegroep en gewenste retentie door te geven. Het script maakt de diagnostische instelling aan, schakelt alle categorieën in en logt iedere stap naar een change-dossier. Noteer het tijdstip, de gebruikte account en de scriptversie, zodat latere controles exact kunnen vaststellen hoe de configuratie tot stand is gekomen. - Wanneer een deel van de configuratie via het Entra ID-beheercentrum moet plaatsvinden, volg dan dezelfde stappen handmatig. Navigeer naar Monitoring → Diagnostic settings, selecteer Microsoft Graph Activity Logs en voeg een nieuwe configuratie toe die alle categorieën naar de gekozen Log Analytics-workspace stuurt. Documenteer welke instellingen niet via automatisering konden worden uitgevoerd en plan deze alsnog in het script, zodat de omgeving op termijn volledig geautomatiseerd wordt. Zorg ervoor dat er altijd minimaal twee beheerders de stappen controleren volgens het vier-ogenprincipe.
Na activatie controleer je of binnen vijftien minuten nieuwe records in de MicrosoftGraphActivityLogs-tabel verschijnen. Voer een Kusto-query uit die filtert op de huidige datum en de naam van de service-principal waarmee het script is aangeroepen. Leg vast hoeveel records zijn binnengekomen, welke latency is gemeten en of alle verwachte velden worden gevuld (zoals OperationName, ApplicationId en ResultStatus). Voeg screenshots of exports toe aan het change-ticket en werk de CMDB bij met de referentie naar de diagnostische instelling. Rond af met een kennisoverdracht naar SOC-analisten en het privacyteam, zodat zij weten welke nieuwe gegevens beschikbaar zijn.
Compliance en Auditing
Het actief vastleggen van Graph-activiteiten ondersteunt rechtstreeks BIO 12.04, waarin wordt geëist dat alle beheer- en toegangshandelingen worden gelogd op een niveau dat reconstructie mogelijk maakt. Door de diagnostische instelling in Log Analytics te centraliseren, ontstaat een enkelvoudige bron waar elke programmatische wijziging traceerbaar wordt. Dit sluit aan bij de Nederlandse Baseline voor Veilige Cloud, omdat de maatregel aantoont dat ook niet-interactieve toegang – zoals scripts, service-principals en externe integraties – onder toezicht staat. Voor organisaties die zich tevens conformeren aan NEN-ISO/IEC 27001 of ENSIA biedt deze logging aanvullende controlemiddelen rond A.12.4 (Logging and monitoring) en A.16.1 (Management van informatiebeveiligingsincidenten).
Voor auditoren is het cruciaal dat niet alleen de logs zelf beschikbaar zijn, maar ook dat het beheer eromheen aantoonbaar geborgd is. Bewaar daarom exports van de diagnostische configuratie, scripts, changeverzoeken en goedkeuringen in een auditmap. Koppel de Log Analytics-workspace aan role-based access control zodat slechts een beperkte groep de ingestelde retentie of doelbestemming kan wijzigen, en registreer iedere wijziging via Activity Logs. Door deze keten vast te leggen kan een auditor controleren dat logging niet ongezien kan worden uitgeschakeld.
Vanuit de AVG blijft het belangrijk om een duidelijke gegevensbeschrijving op te stellen. Graph-activiteiten kunnen persoonsgegevens bevatten, bijvoorbeeld gebruikers-ID's, gedeelde mailadressen of metadata over documenten. Verwerk deze logging daarom in de verwerkingsregisters en beschrijf waarom de verwerking noodzakelijk is (gerechtvaardigd belang ter beveiliging). Neem maatregelen om toegang tot de logs te beperken tot het SOC en de privacy officer en leg vast hoe lang de data bewaard blijven. Voor tenants die gevoelige dossiers verwerken kan een aanvullende DPIA inzicht geven in de proportionaliteit van de maatregel.
Compliance betekent ook dat de organisatie periodiek controleert of de logging nog werkt zoals bedoeld. Plan kwartaalreviews waarin wordt gecontroleerd of de diagnostische instelling nog actief is, of het script nog recent is uitgevoerd en of de ingestelde retentie overeenkomt met de BIO-eisen. Koppel deze review aan de interne auditkalender en noteer bevindingen met concrete hersteltermijnen. Wanneer uit de review blijkt dat de logging is onderbroken, moet dit worden gemeld aan de security officer en zo nodig aan de Functionaris Gegevensbescherming afhankelijk van de impact.
Tot slot dient de organisatie inzichtelijk te maken hoe de gelogde gegevens worden gebruikt binnen incidentrespons. Beschrijf in het draaiboek hoe Graph-activiteiten worden geraadpleegd bij onderzoek naar privilege-creep, misbruik van applicatierechten of verdachte exportacties. Maak duidelijk welke query's standaard worden gedraaid en hoe resultaten worden bewaard als bewijsmateriaal. Door deze procedures op te nemen in het ISMS kan de auditor vaststellen dat logging niet alleen plaatsvindt, maar ook actief wordt ingezet voor detectie en opvolging. Daarmee levert de inrichting aantoonbare waarde voor toezicht en naleving.
Monitoring
Gebruik PowerShell-script graph-activity-logs-diagnostic-setting.ps1 (functie Invoke-Monitoring) – De functie Invoke-Monitoring in het script controleert elk uur of de diagnostische instelling actief is en of MicrosoftGraphActivityLogs nog records naar de gekozen Log Analytics-workspace sturen. Combineer deze scriptuitvoer met een Log Analytics-workbook dat per uur het aantal records, de bronapplicaties en het aandeel mislukte aanroepen toont. Stel een metriekalert in die afgaat wanneer de tabel gedurende twee opeenvolgende uren leeg blijft, omdat dit kan duiden op verwijderde instellingen, verlopen machtigingen of platformstoringen. Door de scriptresultaten te koppelen aan Azure Monitor Service Health-meldingen ontstaat een compleet beeld van zowel tenantconfiguratie als achterliggende platformstatus.
Gebruik het script tevens om baselines vast te leggen. Laat Invoke-Monitoring Kusto-query's starten die de drukste service-principals, gebruikte machtigingssets en afwijkende requestfrequenties berekenen. Door historische gemiddelden op te slaan kan het SOC herkennen wanneer een applicatie plotseling veel meer bewerkingen uitvoert dan normaal. Voeg filters toe op ResultStatus en OperationName zodat fouten of privilege-escalaties onmiddellijk zichtbaar worden en automatisch kunnen worden doorgestuurd naar het ticketsysteem.
Integreer de uitkomsten met Microsoft Sentinel of een ander SIEM om detectieregels te activeren. Denk aan scenario's zoals onverwachte toekenning van directory-rollen via Graph, massale downloads van mailboxinhoud of het registreren van applicaties met brede machtigingen. Maak gebruik van ingebouwde anomaly-detectie, maar documenteer ook welke playbooks automatisch moeten starten wanneer het script een afwijking signaleert. Zo ontstaat een eenduidige werkwijze voor triage en escalatie.
Monitoring omvat tevens rapportage richting bestuurders. Laat het script maandelijks een samenvatting genereren met het aantal actieve integraties, het percentage geslaagde aanroepen en de hoeveelheid afgewezen verzoeken. Visualiseer deze informatie in Power BI of Sentinel Workbooks en bespreek de trends in het overleg met de CISO, inclusief het kostenplaatje van dataverwerking en retentie. Hiermee wordt duidelijk welke waarde de logging levert en welke optimalisaties mogelijk zijn.
Tot slot moet het monitoringproces leiden tot continue verbetering. Registreer iedere alert of afwijking in het IT-servicemanagementsysteem, koppel lessons learned terug naar ontwikkelteams en verwijder ongebruikte service-principals om ruis in de logging te beperken. Door deze cyclus vast te leggen in het kwaliteitsmanagementsysteem blijft de betrouwbaarheid van de Graph-activiteitenlogs aantoonbaar en up-to-date..
Remediatie
Gebruik PowerShell-script graph-activity-logs-diagnostic-setting.ps1 (functie Invoke-Remediation) – Wanneer monitoring signaleert dat Graph-activiteitenlogging ontbreekt of dat ongebruikelijke Graph-aanroepen plaatsvinden, treedt de functie Invoke-Remediation in werking. De SOC-analist opent een hoogprioriteitsticket, controleert of de diagnostische instelling in Entra ID nog bestaat en legt de exacte tijdstippen van het incident vast. Indien de instelling is verwijderd of aangepast, wordt het incident direct geëscaleerd naar de tenantbeheerder en de CISO omdat logging daarmee tijdelijk niet voldoet aan BIO 12.04.
Het script herstelt de configuratie door opnieuw verbinding te maken met Microsoft Graph, de vereiste machtigingen te controleren en de diagnostische instelling aan te maken conform de referentieconfiguratie. Het vergelijkt de huidige situatie met de waarden in source control en genereert een rapport met alle afwijkingen. Na herstel verifieert het script binnen vijftien minuten of er weer records binnenkomen, zodat de duur van het loggat exact kan worden vastgesteld.
Parallel daaraan start een forensisch onderzoek naar de oorzaak. Controleer Change Management-registraties, Azure Activity Logs en eventuele automatiseringspipelines om te bepalen wie of wat verantwoordelijk is voor de wijziging. Wanneer het incident is gekoppeld aan verdachte Graph-activiteit, voert het SOC aanvullende query's uit om vast te stellen welke gegevens zijn benaderd en of machtigingen zijn misbruikt. Bewaar alle bevindingen in het incidentdossier en borg dat de keten van bewijsmateriaal intact blijft.
Indien het incident gevolgen kan hebben voor persoonsgegevens, wordt de Functionaris Gegevensbescherming betrokken om te beoordelen of melding aan de Autoriteit Persoonsgegevens of betrokken klanten noodzakelijk is. Bereid een communicatiepakket voor waarin staat welke systemen zijn geraakt, welke impact is vastgesteld en welke maatregelen zijn genomen om herhaling te voorkomen. Stem af met communicatieadviseurs om een eenduidige boodschap richting bestuurders en leveranciers te waarborgen.
Sluit het proces af met structurele verbeteringen. Werk het script bij zodat kritieke parameters zoals workspace-ID en retentieperiode worden gevalideerd voordat wijzigingen worden toegepast, voeg waar mogelijk policy-controles toe (bijvoorbeeld Azure Policy die vereist dat MicrosoftGraphActivityLogs is gekoppeld aan een workspace) en pas het opleidingsplan aan zodat beheerteams de consequenties van het uitschakelen van logging kennen. Door deze lessons learned op te nemen in het ISMS ontstaat een cyclische verbetering die de betrouwbaarheid van Graph-logging blijvend garandeert..
Compliance & Frameworks
- BIO: 12.04 - Logging van programmatische API-toegang conform BIO 12.04
Automation
Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).
Risico zonder implementatie
Management Samenvatting
Configureer in Entra ID een diagnostische instelling die MicrosoftGraphActivityLogs naar een beheerde Log Analytics-workspace stuurt, bewaak de ingestroomde data via Sentinel en borg retentie en rollen; kost circa één uur en levert volledige zichtbaarheid op programmatische toegang.
- Implementatietijd: 1 uur
- FTE required: 0.02 FTE