Unified Audit Log Ingeschakeld In Microsoft 365

💼 Management Samenvatting

De Microsoft 365 Unified Audit Log vormt de centrale audittrail die alle gebruikers- en beheeractiviteiten vastlegt vanuit Exchange Online, SharePoint Online, OneDrive for Business, Microsoft Teams, Entra ID en andere workloads in één geïntegreerd logbestand. Zonder ingeschakelde unified audit log ontbreekt een cruciale bron van forensische informatie, kunnen incidenten niet volledig worden onderzocht en kan de organisatie niet voldoen aan wettelijke verplichtingen voor logging en monitoring zoals vastgelegd in de BIO, AVG en NIS2 richtlijn.

Aanbeveling
IMPLEMENT
Risico zonder
Critical
Risk Score
9/10
Implementatie
14u (tech: 8u)
Van toepassing op:
M365

Voor Nederlandse overheidsorganisaties is de unified audit log niet alleen een technische functionaliteit, maar een fundamentele randvoorwaarde voor verantwoording, transparantie en aantoonbare naleving. De Baseline Informatiebeveiliging Overheid (BIO) norm 12.04 vereist dat organisaties gebeurtenissen loggen en audittrails bijhouden voor alle kritieke systemen en processen. De AVG verplicht organisaties om passende technische maatregelen te treffen voor het beveiligen van persoonsgegevens, waarbij logging van toegang tot gegevens een essentieel onderdeel vormt. De NIS2 richtlijn stelt specifieke eisen aan essentiële en belangrijke entiteiten met betrekking tot incident reporting en logging van beveiligingsgebeurtenissen. Zonder ingeschakelde unified audit log kunnen organisaties niet aantonen dat zij voldoen aan deze vereisten, wat kan leiden tot negatieve audit findings, boetes en reputatieschade. Bovendien maakt het ontbreken van een centrale audittrail het vrijwel onmogelijk om complexe incidenten volledig te onderzoeken, omdat activiteiten over verschillende workloads verspreid zijn en niet gecorreleerd kunnen worden.

PowerShell Modules Vereist
Primary API: Exchange Online PowerShell
Connection: Connect-ExchangeOnline
Required Modules: ExchangeOnlineManagement

Implementatie

Dit artikel beschrijft hoe Nederlandse overheidsorganisaties de Microsoft 365 Unified Audit Log professioneel inschakelen, configureren en beheren. We behandelen de functionele en technische vereisten voor unified audit logging, de concrete implementatiestappen via het Microsoft Purview complianceportaal en PowerShell, en de manier waarop organisaties periodiek controleren dat de unified audit log actief blijft en betrouwbaar functioneert. Daarnaast gaan we in op de inpassing in Nederlandse normenkaders zoals BIO, ISO 27001 en NIS2, op de wijze waarop unified audit logs worden geëxporteerd naar externe systemen zoals Azure Log Analytics of Microsoft Sentinel voor langetermijnarchivering, en op de praktische toepassing van unified audit logs in Security Operations Centers (SOC) voor detectie, onderzoek en respons op beveiligingsincidenten. Het bijbehorende PowerShell-script `unified-audit-log-enabled.ps1` ondersteunt zowel monitoring van de huidige status als automatische remediatie wanneer de unified audit log onbedoeld is uitgeschakeld.

Vereisten

Een effectieve inrichting van de unified audit log begint bij het vaststellen van de vereisten vanuit verschillende perspectieven. Vanuit governance moet het bestuur of de concerndirectie expliciet bepalen dat alle Microsoft 365 workloads onder het regime van unified audit logging vallen, en dat deze logging een fundamenteel onderdeel vormt van de beveiligings- en compliance-inrichting. Deze beslissing wordt vastgelegd in het informatiebeveiligingsbeleid en de onderliggende procedures voor logging en monitoring, waarbij wordt bepaald welke gebeurtenissen minimaal gelogd moeten worden, welke bewaartermijnen passend zijn bij de risico's en welke rolverdeling geldt tussen CISO, proceseigenaren, beheerteams en het Security Operations Center (SOC). Daarbij wordt onderscheid gemaakt tussen verschillende typen gebeurtenissen: kritieke beheerdersacties zoals wijzigingen aan Conditional Access policies, roltoewijzingen of beveiligingsinstellingen vereisen doorgaans uitgebreidere logging dan standaard gebruikerstoegang tot documenten.

Juridische en compliance-vereisten vormen een tweede belangrijke pijler. De BIO norm 12.04 vereist dat organisaties gebeurtenissen loggen en audittrails bijhouden voor alle kritieke systemen en processen, waarbij de bewaartermijn moet worden afgestemd op het risico en de wettelijke verplichtingen. De AVG, Artikel 32, verplicht organisaties om passende technische en organisatorische maatregelen te treffen om persoonsgegevens te beveiligen, waarbij logging en monitoring van toegang tot persoonsgegevens een essentieel onderdeel vormt. De NIS2 richtlijn, Artikel 21, stelt specifieke eisen aan essentiële en belangrijke entiteiten met betrekking tot incident reporting en logging van beveiligingsgebeurtenissen, waarbij organisaties moeten kunnen aantonen dat zij beschikken over adequate logging en monitoring capaciteiten om beveiligingsincidenten te detecteren, te onderzoeken en te rapporteren. Het is essentieel dat deze juridische eisen expliciet worden geïnventariseerd en vertaald naar concrete loggingvereisten, zodat technische configuraties kunnen worden gerechtvaardigd en verdedigd bij audits of toezichthouders.

Vanuit technisch perspectief zijn specifieke licenties en configuratiemogelijkheden nodig. De unified audit log is beschikbaar voor alle Microsoft 365 organisaties, maar de standaard bewaartermijn is licentie-afhankelijk: negentig dagen voor E3 licenties en één jaar voor E5 licenties. Voor langere bewaartermijnen of meer geavanceerde retentie-opties zijn audit log retention policies nodig, die beschikbaar zijn in Microsoft Purview met de juiste licenties. Voor zeer lange bewaartermijnen van meerdere jaren, zoals vereist door sommige compliance-frameworks of wettelijke verplichtingen, is export naar externe systemen zoals Azure Log Analytics of Microsoft Sentinel nodig. Deze export vereist aanvullende configuratie, licentieoverwegingen en beheersprocessen om te waarborgen dat logs correct worden geëxporteerd, opgeslagen en toegankelijk blijven.

Beheerders die de unified audit log willen configureren, hebben specifieke rollen nodig zoals Compliance Administrator of Audit Administrator. Deze rollen worden bij voorkeur toegekend via Privileged Identity Management (PIM) met Just-in-Time toegang om misbruikrisico's te beperken. Daarnaast is technische kennis nodig van PowerShell-cmdlets zoals Get-AdminAuditLogConfig en Set-AdminAuditLogConfig uit de ExchangeOnlineManagement module. Beheerders moeten kunnen aantonen dat zij begrijpen welke impact het inschakelen van unified audit logging heeft op storage-kosten, dat zij weten hoe unified audit logs interactie hebben met andere loggingmechanismen in Microsoft 365, en dat zij processen hebben geïmplementeerd voor het monitoren en beheren van unified audit log configuraties over tijd.

Tot slot zijn procesmatige vereisten essentieel. Er moet een formeel proces zijn voor het aanvragen, beoordelen en goedkeuren van wijzigingen aan unified audit log configuraties, waarbij verschillende stakeholders zoals CISO, Functionaris Gegevensbescherming (FG), juristen en proceseigenaren betrokken zijn. Wijzigingen aan loggingconfiguraties hebben immers impact op zowel beveiliging als privacy, en moeten daarom zorgvuldig worden afgewogen. Daarnaast is periodieke evaluatie nodig om te verifiëren dat de unified audit log nog steeds actief is, dat exports correct functioneren en dat geconfigureerde bewaartermijnen nog steeds aansluiten bij actuele risico's, wetgeving en operationele behoeften. Zonder deze governance en processen lopen organisaties het risico dat unified audit logging onbedoeld wordt uitgeschakeld, niet wordt gedocumenteerd of niet wordt gecontroleerd, wat kan leiden tot niet-naleving en operationele problemen wanneer logs ontbreken die essentieel zijn voor incidentonderzoek of verantwoording.

Implementatie

De implementatie van de unified audit log in Microsoft 365 begint met een grondige inventarisatie van de huidige situatie. Via PowerShell wordt de huidige configuratie van unified audit logging opgehaald met Get-AdminAuditLogConfig, waarbij specifiek wordt gekeken naar de status van UnifiedAuditLogIngestionEnabled, de standaard bewaartermijn die geldt op basis van de licentie, en eventuele aanvullende configuratie-instellingen. Deze inventarisatie wordt vastgelegd in een document dat dient als nulmeting en referentiepunt voor toekomstige audits en wijzigingen. Tijdens deze inventarisatie wordt ook gecontroleerd of er exports zijn geconfigureerd naar externe systemen zoals Azure Log Analytics, en welke bewaartermijnen daar gelden.

Vervolgens wordt de gewenste doelsituatie ontworpen op basis van het auditlogbeleid. Voor verschillende categorieën gebeurtenissen worden specifieke loggingvereisten bepaald, waarbij rekening wordt gehouden met licentiebeperkingen, kostenoverwegingen en technische mogelijkheden. De unified audit log wordt ingeschakeld via het Microsoft Purview complianceportaal of via PowerShell met behulp van Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true. Het is belangrijk om te realiseren dat het inschakelen van unified audit logging geen impact heeft op bestaande logs, maar dat nieuwe gebeurtenissen vanaf het moment van inschakelen worden vastgelegd. Voor organisaties die historische logs nodig hebben, is het daarom essentieel om unified audit logging zo vroeg mogelijk in de implementatiecyclus in te schakelen.

Na het inschakelen van unified audit logging wordt de configuratie gevalideerd. Dit gebeurt door te verifiëren dat UnifiedAuditLogIngestionEnabled daadwerkelijk op True staat via Get-AdminAuditLogConfig, door te testen of gebeurtenissen correct worden vastgelegd door een testscenario uit te voeren (bijvoorbeeld het aanpassen van een configuratie of het toekennen van een rol) en daarna via Search-UnifiedAuditLog na te gaan of de betreffende acties binnen de verwachte tijd in de unified audit log verschijnen. Deze validatie wordt vastgelegd in een testrapport dat dient als bewijs dat de configuratie niet alleen theoretisch klopt, maar in de praktijk ook daadwerkelijk betrouwbare logs oplevert.

Voor gebeurtenissen die langere bewaartermijnen vereisen dan mogelijk zijn via de standaard unified audit log bewaartermijn, wordt export geconfigureerd naar Azure Log Analytics of Microsoft Sentinel. Deze export kan worden ingesteld via het Purview-complianceportaal onder Audit log export, waarbij een Log Analytics workspace wordt gekoppeld aan de unified audit log. Eenmaal geconfigureerd worden alle unified audit logs automatisch geëxporteerd naar de Log Analytics workspace, waar zij kunnen worden bewaard voor langere perioden zonder de beperkingen van de standaard Microsoft 365 bewaartermijnen. Het is belangrijk dat deze exportconfiguratie wordt gedocumenteerd, inclusief welke workspace wordt gebruikt, welke retentie-instellingen daar gelden, hoe toegang wordt beheerd en welke kosten verbonden zijn aan langetermijnopslag.

Tot slot wordt automatisering geïmplementeerd voor het monitoren van unified audit log configuraties. Het bijbehorende PowerShell-script `unified-audit-log-enabled.ps1` controleert periodiek of UnifiedAuditLogIngestionEnabled nog steeds op True staat, of er geen onbedoelde wijzigingen zijn doorgevoerd en of exports naar externe systemen correct functioneren. Het script verifieert de status van unified audit logging, controleert eventuele afwijkende instellingen en rapporteert afwijkingen wanneer unified audit logging is uitgeschakeld of niet conform beleid is geconfigureerd. Door deze automatisering ontstaat een continu borgingsmechanisme dat waarborgt dat unified audit logging niet onbedoeld wordt uitgeschakeld en dat nieuwe vereisten tijdig worden gesignaleerd.

Compliance en Naleving

De unified audit log is een fundamentele vereiste voor naleving van verschillende cybersecurity frameworks en wet- en regelgeving die van toepassing zijn op Nederlandse overheidsorganisaties. Zonder ingeschakelde unified audit log kunnen organisaties niet voldoen aan de vereisten van internationale standaarden zoals CIS, ISO 27001 en sectorspecifieke regelgeving zoals de AVG, NIS2 richtlijn en de Baseline Informatiebeveiliging Overheid (BIO). Deze frameworks vereisen allemaal dat organisaties kunnen aantonen dat zij passende maatregelen hebben genomen om activiteiten te monitoren en te loggen voor voldoende lange perioden om incidenten te kunnen onderzoeken en verantwoording af te leggen aan toezichthouders.

De Baseline Informatiebeveiliging Overheid (BIO) norm 12.04 vereist dat organisaties gebeurtenissen loggen en audittrails bijhouden voor alle kritieke systemen en processen, waarbij de bewaartermijn moet worden afgestemd op het risico en de wettelijke verplichtingen. De BIO specificeert dat organisaties moeten kunnen aantonen dat zij alle relevante gebeurtenissen loggen, dat deze logs worden bewaard voor de vereiste periode, en dat er processen zijn geïmplementeerd voor het analyseren en reageren op gebeurtenissen. Voor Microsoft 365 omgevingen betekent dit dat unified audit logging moet zijn ingeschakeld, dat bewaartermijnen expliciet zijn vastgelegd in beleid en dat organisaties kunnen aantonen dat geconfigureerde bewaartermijnen voldoen aan de vereisten voor hun risicoprofiel. Het ontbreken van ingeschakelde unified audit logging of het niet kunnen aantonen dat logs voldoende lang bewaard worden, kan leiden tot niet-naleving van de BIO, wat kan resulteren in negatieve audit findings en reputatieschade.

De ISO 27001 standaard, controle A.12.4.1, vereist eveneens logging van gebeurtenissen en het bijhouden van audittrails voor informatiebeveiligingsdoeleinden, waarbij logs moeten worden bewaard voor een periode die passend is bij wettelijke, operationele en beveiligingseisen. Controle A.12.4.1 specificeert dat organisaties moeten kunnen aantonen dat zij alle relevante gebeurtenissen loggen, dat deze logs worden bewaard voor de vereiste periode, en dat er processen zijn geïmplementeerd voor het analyseren en reageren op gebeurtenissen. Voor Microsoft 365 omgevingen betekent dit dat unified audit logging expliciet moet zijn ingeschakeld, dat bewaartermijnen moeten worden afgestemd op risico's en wettelijke vereisten, en dat organisaties periodiek moeten verifiëren dat unified audit logging nog steeds actief is en dat geconfigureerde bewaartermijnen nog steeds voldoen aan de eisen. Het niet implementeren van unified audit logging of het niet periodiek evalueren van loggingconfiguraties kan leiden tot niet-naleving van ISO 27001, wat kan resulteren in het verlies van certificering en reputatieschade.

De Algemene Verordening Gegevensbescherming (AVG), Artikel 32, verplicht organisaties om passende technische en organisatorische maatregelen te treffen om persoonsgegevens te beveiligen, waarbij logging en monitoring van toegang tot persoonsgegevens een essentieel onderdeel vormt. Artikel 5 van de AVG stelt het beginsel van dataminimalisatie en doelbinding, wat betekent dat persoonsgegevens in logs niet langer mogen worden bewaard dan noodzakelijk is voor het doel waarvoor zij zijn verzameld. Tegelijkertijd vereist Artikel 32 dat organisaties kunnen aantonen dat zij passende maatregelen hebben genomen, wat vaak langere bewaartermijnen noodzakelijk maakt voor forensische doeleinden en verantwoording aan toezichthouders. Deze ogenschijnlijke spanning moet worden opgelost door expliciet te bepalen welke bewaartermijnen proportioneel en noodzakelijk zijn voor verschillende typen logs, rekening houdend met het risico, de wettelijke verplichtingen en de privacyrechten van betrokkenen. Voor Microsoft 365 omgevingen betekent dit dat unified audit logging moet zijn ingeschakeld, dat bewaartermijnen moeten worden afgestemd met de Functionaris Gegevensbescherming (FG), dat zij moeten worden vastgelegd in het auditlogbeleid en dat zij periodiek moeten worden geëvalueerd om te verifiëren dat zij nog steeds proportioneel zijn. Het niet implementeren van unified audit logging of het niet kunnen rechtvaardigen van loggingconfiguraties kan leiden tot niet-naleving van de AVG, wat kan resulteren in boetes tot 4 procent van de wereldwijde jaaromzet of 20 miljoen euro.

De NIS2 richtlijn, Artikel 21, stelt specifieke eisen aan essentiële en belangrijke entiteiten met betrekking tot incident reporting en logging van beveiligingsgebeurtenissen. Nederlandse organisaties die onder de reikwijdte van NIS2 vallen, moeten kunnen aantonen dat zij beschikken over adequate logging en monitoring capaciteiten om beveiligingsincidenten te detecteren, te onderzoeken en te rapporteren aan de bevoegde autoriteiten. Artikel 21 specificeert dat organisaties moeten kunnen aantonen dat zij passende maatregelen hebben genomen om beveiligingsincidenten te detecteren en te onderzoeken, wat onder andere betekent dat zij moeten beschikken over uitgebreide auditlogging die alle relevante beveiligingsgebeurtenissen vastlegt voor voldoende lange perioden om incidenten volledig te kunnen onderzoeken. Voor Microsoft 365 omgevingen betekent dit dat unified audit logging moet zijn ingeschakeld, dat bewaartermijnen moeten worden afgestemd op de behoefte om incidenten te kunnen onderzoeken (wat vaak maanden of jaren kan duren), en dat organisaties kunnen aantonen dat geconfigureerde bewaartermijnen voldoen aan deze vereisten. Het niet implementeren van unified audit logging of het niet kunnen aantonen dat logs voldoende lang bewaard worden voor incidentonderzoek, kan leiden tot niet-naleving van NIS2, wat kan resulteren in boetes en andere handhavingsmaatregelen door de Autoriteit Consument en Markt (ACM) of andere toezichthouders.

Monitoring

Gebruik PowerShell-script unified-audit-log-enabled.ps1 (functie Invoke-Monitoring) – Controleert of de unified audit log is ingeschakeld en rapporteert de status als compliant of non-compliant..

Effectieve monitoring van unified audit logging in Microsoft 365 is essentieel om te waarborgen dat logging niet onbedoeld wordt uitgeschakeld, dat nieuwe vereisten tijdig worden gesignaleerd en dat geconfigureerde logging-instellingen continu voldoen aan beleidsafspraken en wettelijke vereisten. Zonder uitgebreide monitoring kunnen organisaties niet garanderen dat unified audit logging overeenkomt met het auditlogbeleid, dat wijzigingen in licenties of configuraties niet tot onbedoelde uitschakeling leiden, en dat exports naar externe systemen correct functioneren. Monitoring omvat het continu volgen van de status van unified audit logging, het controleren of UnifiedAuditLogIngestionEnabled nog steeds op True staat, het verifiëren dat exports naar Log Analytics of Sentinel correct functioneren, en het waarborgen dat geconfigureerde bewaartermijnen voldoen aan minimaal vereiste waarden zoals vastgelegd in het auditlogbeleid.

De basis van monitoring wordt gevormd door regelmatige verificatie van de huidige configuratie via PowerShell. Beheerders moeten maandelijks of ten minste per kwartaal controleren of unified audit logging nog steeds is ingeschakeld, of er geen onbedoelde wijzigingen zijn doorgevoerd en of exports naar externe systemen correct functioneren. Deze verificatie kan worden geautomatiseerd via het bijbehorende PowerShell-script `unified-audit-log-enabled.ps1`, dat de huidige configuratie ophaalt, de status van UnifiedAuditLogIngestionEnabled controleert en waarschuwingen genereert wanneer afwijkingen worden gedetecteerd. Het script ondersteunt lokale debug-modus voor veilige tests zonder live-verbinding, en live-modus voor daadwerkelijke controles in de tenant. De resultaten worden gerapporteerd in een gestructureerd formaat dat kan worden gebruikt voor audit-evidence en periodieke rapportages aan CISO, FG en andere stakeholders.

Naast het controleren van de configuratie zelf moeten organisaties ook monitoren of unified audit logging daadwerkelijk gebeurtenissen registreert. Dit betekent dat periodiek moet worden geverifieerd dat logs daadwerkelijk worden vastgelegd door testscenario's uit te voeren en te controleren of gebeurtenissen binnen de verwachte tijd in de unified audit log verschijnen. Daarnaast moeten organisaties monitoren of exports naar externe systemen zoals Azure Log Analytics correct functioneren, door te controleren of logs daadwerkelijk aankomen in de Log Analytics workspace, of er geen fouten zijn in het exportproces, en of de export binnen de verwachte tijdsframes plaatsvindt. Problemen met exports kunnen leiden tot situaties waarin logs niet beschikbaar zijn in externe systemen, wat kan resulteren in gaten in de audittrail wanneer de standaard bewaartermijn verloopt.

Voor organisaties die gebruik maken van exports naar Azure Log Analytics of Microsoft Sentinel is het ook belangrijk om te monitoren of storage-quota of kostenlimieten niet worden overschreden. Langetermijnopslag van unified audit logs kan aanzienlijke kosten met zich meebrengen, vooral voor grote organisaties met veel activiteit. Organisaties moeten daarom processen implementeren voor het monitoren van storage-gebruik en kosten, het instellen van waarschuwingen wanneer limieten worden benaderd, en het periodiek evalueren of alle geëxporteerde logs nog steeds nodig zijn of kunnen worden gearchiveerd of geanonimiseerd. Daarnaast moeten organisaties processen hebben voor het beheren van toegang tot geëxporteerde logs, om te waarborgen dat alleen geautoriseerde personen toegang hebben en dat alle toegang wordt gelogd voor audit-doeleinden.

Ten slotte moeten organisaties periodiek evalueren of unified audit logging nog steeds aansluit bij actuele risico's, wetgeving en operationele behoeften. Nieuwe dreigingsvormen, aangepaste normenkaders of ervaringen uit incidentonderzoeken kunnen aanleiding zijn om loggingconfiguraties aan te passen. Daarnaast kunnen wijzigingen in licenties, nieuwe Microsoft 365 functionaliteiten of veranderde wettelijke vereisten impact hebben op de optimale loggingconfiguratie. Deze evaluaties worden minimaal jaarlijks uitgevoerd door CISO, FG, juristen en proceseigenaren, waarbij wordt beoordeeld of huidige loggingconfiguraties nog steeds passend zijn en of aanpassingen nodig zijn. De uitkomsten van deze evaluaties en de daarbij behorende besluiten worden zorgvuldig gedocumenteerd en vertaald naar aanpassingen in configuraties, zodat de organisatie bij toekomstige audits kan laten zien hoe het auditlogbeleid door de tijd heen is verbeterd en aangepast aan veranderende omstandigheden.

Remediatie

Gebruik PowerShell-script unified-audit-log-enabled.ps1 (functie Invoke-Remediation) – Schakelt unified audit logging in wanneer deze is uitgeschakeld en valideert de configuratie..

Remediatie van unified audit logging in Microsoft 365 omvat het inschakelen van logging wanneer deze onbedoeld is uitgeschakeld of niet conform beleid is geconfigureerd. Het is belangrijk om te realiseren dat wanneer unified audit logging is uitgeschakeld, logs die reeds zijn verwijderd niet kunnen worden hersteld, wat kan resulteren in permanente gaten in de audittrail. Daarom moeten organisaties processen implementeren voor het snel detecteren en oplossen van problemen met unified audit logging, zodat de impact op de audittrail wordt geminimaliseerd en toekomstige logs wel worden vastgelegd.

Wanneer monitoring aangeeft dat unified audit logging is uitgeschakeld, wordt eerst geanalyseerd wat de oorzaak is van het probleem. Mogelijke oorzaken zijn: unified audit logging is onbedoeld uitgeschakeld door een beheerder, er is een mislukte update of configuratiewijziging, of er is een licentieprobleem waardoor unified audit logging niet beschikbaar is. Op basis van deze analyse wordt een remediatieplan opgesteld dat beschrijft welke configuratiewijzigingen nodig zijn, welke stakeholders moeten worden geconsulteerd (zoals CISO en FG), en hoe de wijzigingen worden gevalideerd na implementatie.

Vervolgens worden de benodigde configuratiewijzigingen doorgevoerd. Unified audit logging wordt ingeschakeld via het Microsoft Purview complianceportaal of via PowerShell met behulp van Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true. Na configuratie wordt de implementatie gevalideerd door te verifiëren dat UnifiedAuditLogIngestionEnabled daadwerkelijk op True staat, dat exports correct functioneren (indien van toepassing), en dat nieuwe gebeurtenissen inderdaad worden vastgelegd in de unified audit log. Deze validatie wordt vastgelegd in een testrapport dat dient als bewijs dat de remediatie succesvol is uitgevoerd.

Voor organisaties die reeds verloren logs hebben door uitgeschakelde unified audit logging in het verleden, is het belangrijk om te documenteren wat er is gebeurd, welke logs ontbreken en wat de impact is op compliance en operationele capaciteiten. Hoewel verloren logs niet kunnen worden hersteld, kan deze documentatie helpen bij het rechtvaardigen van langere bewaartermijnen in de toekomst en bij het aantonen aan toezichthouders dat de organisatie heeft geleerd van het incident en passende maatregelen heeft genomen om herhaling te voorkomen. Daarnaast moeten organisaties processen implementeren voor het onderzoeken van de oorzaak van het probleem, zodat preventieve maatregelen kunnen worden genomen om te voorkomen dat unified audit logging opnieuw wordt uitgeschakeld. Dit kan bijvoorbeeld betekenen dat beheerders moeten worden getraind in het belang van unified audit logging, dat configuratiewijzigingen moeten worden gereviewd voordat zij worden doorgevoerd, of dat aanvullende controles moeten worden geïmplementeerd om te voorkomen dat unified audit logging onbedoeld wordt uitgeschakeld.

Compliance & Frameworks

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).

PowerShell
<# .SYNOPSIS Unified Audit Log Enabled .DESCRIPTION Controleert en zorgt ervoor dat de Microsoft 365 Unified Audit Log is ingeschakeld. Kritiek voor beveiligingsonderzoeken, compliance-audits en forensische analyses. De unified audit log vormt de centrale audittrail voor alle Microsoft 365 workloads. .NOTES Filename: unified-audit-log-enabled.ps1 Author: Nederlandse Baseline voor Veilige Cloud Category: audit-compliance .EXAMPLE .\unified-audit-log-enabled.ps1 -Monitoring Controleer of unified audit logging is ingeschakeld. .EXAMPLE .\unified-audit-log-enabled.ps1 -Remediation Schakel unified audit logging in wanneer deze is uitgeschakeld. .EXAMPLE .\unified-audit-log-enabled.ps1 -Monitoring -DebugMode Test de monitoring functionaliteit met voorbeelddata zonder verbinding. #> #Requires -Version 5.1 #Requires -Modules ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [switch]$WhatIf, [Parameter(Mandatory = $false)] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Unified Audit Log Enabled" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # Debug mode: genereer voorbeelddata zonder verbinding function Get-SampleAuditConfig { return [PSCustomObject]@{ UnifiedAuditLogIngestionEnabled = $true AdminAuditLogEnabled = $true LastUpdateTime = (Get-Date).AddDays(-30) } } function Invoke-Monitoring { <# .SYNOPSIS Controleert of unified audit logging is ingeschakeld. #> try { if ($DebugMode) { Write-Host "[DEBUG MODE] Gebruik voorbeelddata voor lokale tests." -ForegroundColor Yellow $auditConfig = Get-SampleAuditConfig } else { Write-Host "Verbinding maken met Exchange Online..." -ForegroundColor Gray Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop Write-Host "Huidige configuratie van unified audit logging ophalen..." -ForegroundColor Gray $auditConfig = Get-AdminAuditLogConfig -ErrorAction Stop } $isEnabled = $auditConfig.UnifiedAuditLogIngestionEnabled -eq $true $result = [PSCustomObject]@{ IsCompliant = $isEnabled UnifiedAuditLogEnabled = $isEnabled AdminAuditLogEnabled = $auditConfig.AdminAuditLogEnabled LastConfigUpdate = $auditConfig.LastUpdateTime Issues = @() } Write-Host "" Write-Host "=== Status Unified Audit Log ===" -ForegroundColor Cyan if ($isEnabled) { Write-Host " [OK] Unified Audit Log: ENABLED" -ForegroundColor Green Write-Host " Activiteiten worden opgenomen in de unified audit log." -ForegroundColor Cyan Write-Host " Laatste configuratiewijziging: $($auditConfig.LastUpdateTime)" -ForegroundColor Gray } else { Write-Host " [FAIL] Unified Audit Log: DISABLED" -ForegroundColor Red Write-Host " Er wordt geen volledige audittrail opgebouwd in Microsoft 365." -ForegroundColor Red $result.IsCompliant = $false $result.Issues += "Unified Audit Log is uitgeschakeld" } Write-Host "" Write-Host "=== Status Admin Audit Log ===" -ForegroundColor Cyan if ($auditConfig.AdminAuditLogEnabled) { Write-Host " [OK] Admin Audit Log: ENABLED" -ForegroundColor Green } else { Write-Host " [WARNING] Admin Audit Log: DISABLED" -ForegroundColor Yellow Write-Host " Beheerdersacties worden mogelijk niet volledig gelogd." -ForegroundColor Yellow } Write-Host "" Write-Host "=== Compliance Check ===" -ForegroundColor Cyan if ($result.IsCompliant) { Write-Host " [OK] COMPLIANT" -ForegroundColor Green Write-Host " Unified Audit Log is ingeschakeld en functioneert correct." -ForegroundColor Cyan } else { Write-Host " [FAIL] NON-COMPLIANT" -ForegroundColor Red Write-Host " Gevonden problemen:" -ForegroundColor Red foreach ($issue in $result.Issues) { Write-Host " - $issue" -ForegroundColor Red } Write-Host " Gebruik -Remediation om problemen op te lossen." -ForegroundColor Yellow } if ($DebugMode) { Write-Host "`n[DEBUG] Resultaatobject:" -ForegroundColor Gray $result | ConvertTo-Json -Depth 5 | Write-Host } return $result } catch { Write-Host "`n[FAIL] ER IS EEN FOUT OPGETREDEN TIJDENS MONITORING" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red throw } finally { if (-not $DebugMode) { try { Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } catch { # negeren, best effort disconnect } } } } function Invoke-Remediation { <# .SYNOPSIS Schakelt unified audit logging in wanneer deze is uitgeschakeld. #> try { if ($WhatIf) { Write-Host "[INFO] WhatIf-modus: er worden geen wijzigingen doorgevoerd." -ForegroundColor Yellow } if ($DebugMode) { Write-Host "[DEBUG MODE] Remediatie kan niet worden uitgevoerd in debug-modus." -ForegroundColor Yellow Write-Host "[DEBUG] In productie zou unified audit logging worden ingeschakeld." -ForegroundColor Gray return } Write-Host "Verbinding maken met Exchange Online..." -ForegroundColor Gray Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop Write-Host "Huidige status van unified audit logging controleren..." -ForegroundColor Gray $auditConfig = Get-AdminAuditLogConfig -ErrorAction Stop if ($auditConfig.UnifiedAuditLogIngestionEnabled -eq $true) { Write-Host " [OK] Unified Audit Log is al ingeschakeld." -ForegroundColor Green Write-Host "`n[OK] Geen remediatie nodig, configuratie is compliant." -ForegroundColor Green return } Write-Host "Unified Audit Log is uitgeschakeld. Remediatie wordt gestart..." -ForegroundColor Yellow if (-not $WhatIf) { Write-Host "Unified Audit Log inschakelen..." -ForegroundColor Gray Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $true -ErrorAction Stop Write-Host " [OK] Unified Audit Log is ingeschakeld." -ForegroundColor Green } else { Write-Host "[WhatIf] Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled `$true" -ForegroundColor Gray } Write-Host "Configuratie opnieuw valideren..." -ForegroundColor Gray $auditConfigAfter = Get-AdminAuditLogConfig -ErrorAction Stop if ($auditConfigAfter.UnifiedAuditLogIngestionEnabled -eq $true) { Write-Host "`n[OK] Unified Audit Log is succesvol ingeschakeld." -ForegroundColor Green Write-Host "Belangrijke aandachtspunten:" -ForegroundColor Cyan Write-Host " - Logs worden minimaal 90 dagen bewaard (E3) of 365 dagen (E5), afhankelijk van licentie." -ForegroundColor Gray Write-Host " - Voor langere bewaartermijnen exporteert u logs naar Log Analytics of een SIEM." -ForegroundColor Gray Write-Host " - Raadpleeg het Purview-complianceportaal voor auditlog-zoekopdrachten." -ForegroundColor Gray Write-Host " - Configureer audit log retention policies voor kritieke gebeurtenissen indien nodig." -ForegroundColor Gray } else { Write-Host "`n[FAIL] Unified Audit Log kon niet betrouwbaar worden ingeschakeld." -ForegroundColor Red throw "UnifiedAuditLogIngestionEnabled is na remediatie nog steeds niet actief." } } catch { Write-Host "`n[FAIL] ER IS EEN FOUT OPGETREDEN TIJDENS REMEDIATIE" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red throw } finally { if (-not $DebugMode) { try { Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } catch { # negeren, best effort disconnect } } } } function Invoke-Revert { <# .SYNOPSIS Schakelt unified audit logging uit (niet aanbevolen). #> try { Write-Host "WAARSCHUWING: Het uitschakelen van unified audit logging is een groot beveiligingsrisico." -ForegroundColor Red Write-Host "Er wordt geen volledige audittrail meer opgebouwd voor incidentonderzoek en compliance." -ForegroundColor Red Write-Host "Dit kan leiden tot niet-naleving van BIO, AVG en NIS2 vereisten.`n" -ForegroundColor Red if ($WhatIf) { Write-Host "[WhatIf] Unified audit logging wordt niet daadwerkelijk uitgeschakeld." -ForegroundColor Yellow return } if ($DebugMode) { Write-Host "[DEBUG MODE] Revert kan niet worden uitgevoerd in debug-modus." -ForegroundColor Yellow return } Write-Host "Verbinding maken met Exchange Online..." -ForegroundColor Gray Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop Write-Host "Unified Audit Log uitschakelen..." -ForegroundColor Gray Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled $false -ErrorAction Stop Write-Host "Unified Audit Log is uitgeschakeld." -ForegroundColor Yellow Write-Host "WAARSCHUWING: Audit logging is nu uitgeschakeld. Dit is niet aanbevolen." -ForegroundColor Red } catch { Write-Host "ER IS EEN FOUT OPGETREDEN TIJDENS REVERT: $_" -ForegroundColor Red throw } finally { if (-not $DebugMode) { try { Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } catch { # negeren } } } } try { if ($Revert) { Invoke-Revert } elseif ($Monitoring) { $result = Invoke-Monitoring if ($result -and -not $result.IsCompliant) { exit 1 } exit 0 } elseif ($Remediation) { Invoke-Remediation } else { Write-Host "Gebruik:" -ForegroundColor Yellow Write-Host " -Monitoring Controleert of unified audit logging is ingeschakeld." -ForegroundColor Gray Write-Host " -Remediation Schakelt unified audit logging in wanneer deze is uitgeschakeld." -ForegroundColor Gray Write-Host " -Revert Schakelt unified audit logging uit (niet aanbevolen)." -ForegroundColor Red Write-Host " -WhatIf Toont welke acties zouden worden uitgevoerd zonder wijzigingen te maken." -ForegroundColor Gray Write-Host " -DebugMode Gebruik voorbeelddata voor lokale tests zonder verbinding." -ForegroundColor Gray } } catch { throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
Critical: Zonder ingeschakelde unified audit log kunnen organisaties niet voldoen aan wettelijke verplichtingen, kunnen incidenten niet volledig worden onderzocht en ontbreekt essentiële forensische informatie wanneer deze het hardst nodig is. Dit kan leiden tot niet-naleving van compliance-frameworks zoals BIO, AVG en NIS2, reputatieschade en juridische aansprakelijkheid.

Management Samenvatting

Schakel unified audit logging in voor alle relevante Microsoft 365-workloads via het Purview-complianceportaal of PowerShell. Verifieer de configuratie periodiek met unified-audit-log-enabled.ps1 en configureer export naar Azure Log Analytics voor langetermijnarchivering. Hiermee voldoet u aantoonbaar aan eisen uit CIS 5.1.1, BIO 12.04, ISO 27001, AVG en NIS2.