Audit Logging Voor Microsoft Copilot In Microsoft 365

💼 Management Samenvatting

Uitgebreide audit logging voor Microsoft Copilot in Microsoft 365 vormt de fundamentele basis voor transparantie, verantwoording en compliance binnen Nederlandse overheidsorganisaties. Door alle Copilot-activiteiten gedetailleerd te loggen, kunnen organisaties aantonen wie wanneer welke prompts heeft ingevoerd, welke documenten zijn geraadpleegd, welke antwoorden zijn gegenereerd en welke acties zijn ondernomen op basis van AI-uitvoer. Deze zichtbaarheid is essentieel voor het voldoen aan AVG-verplichtingen, BIO-vereisten en NIS2-normen, evenals voor forensisch onderzoek na beveiligingsincidenten en voor het waarborgen van transparantie richting burgers en toezichthouders.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
60u (tech: 40u)
Van toepassing op:
M365
Microsoft Copilot
Microsoft 365 E3
Microsoft 365 E5
Microsoft Copilot for Microsoft 365

Zonder adequate audit logging voor Microsoft Copilot-activiteiten beschikken organisaties niet over de benodigde zichtbaarheid om te begrijpen hoe AI-functionaliteit wordt gebruikt, welke risico's hieraan verbonden zijn en of gebruikspatronen voldoen aan beleidsrichtlijnen en compliance-vereisten. Dit gebrek aan transparantie kan leiden tot niet-naleving van de Algemene Verordening Gegevensbescherming (AVG), die vereist dat organisaties kunnen aantonen wie toegang heeft gehad tot persoonsgegevens en welke verwerkingen hebben plaatsgevonden. Bovendien maakt het ontbreken van audit logs het onmogelijk om forensisch onderzoek uit te voeren na beveiligingsincidenten waarbij Copilot mogelijk betrokken was, zoals prompt-injection aanvallen, onbevoegde toegang tot vertrouwelijke documenten of datalekken via AI-uitvoer. Voor Nederlandse overheidsorganisaties kan dit leiden tot boetes van de Autoriteit Persoonsgegevens, niet-naleving van BIO-vereisten voor informatiebeveiliging, NIS2-sancties en verlies van vertrouwen bij burgers en toezichthouders. Daarnaast is uitgebreide audit logging essentieel voor het waarborgen van transparantie en verantwoording, waarbij bestuurders moeten kunnen aantonen dat zij passende controles hebben geïmplementeerd om het gebruik van AI-systemen te monitoren en te beheren.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, Exchange Online Management, Microsoft Purview Compliance Portal
Connection: Connect-MgGraph, Connect-ExchangeOnline, Connect-IPPSSession
Required Modules: Microsoft.Graph, Microsoft.Graph.Identity.DirectoryManagement, ExchangeOnlineManagement

Implementatie

Dit artikel beschrijft een complete aanpak voor het implementeren van uitgebreide audit logging voor Microsoft Copilot in Microsoft 365, inclusief de configuratie van Unified Audit Logging, het activeren van specifieke Copilot-audit events, het configureren van audit log retention policies, het implementeren van geavanceerde logging via Microsoft Purview Audit Premium, en het inrichten van monitoring en alerting op basis van audit logs. Het artikel behandelt zowel technische implementatiestappen als governance-aspecten, zoals het definiëren van welke Copilot-activiteiten moeten worden gelogd, wie toegang heeft tot audit logs, hoe lange logs moeten worden bewaard en hoe logs worden gebruikt voor compliance-doeleinden en beveiligingsmonitoring. Daarnaast worden best practices beschreven voor het analyseren van audit logs, het detecteren van verdachte activiteiten, het genereren van compliance-rapportages en het integreren van Copilot-audit logs in bestaande security information and event management (SIEM) oplossingen.

Vereisten voor Audit Logging Implementatie

Voor het implementeren van uitgebreide audit logging voor Microsoft Copilot in Microsoft 365 zijn verschillende technische, licentie- en organisatorische vereisten noodzakelijk. Op technisch niveau is een Microsoft 365 E3 of E5 licentie vereist, waarbij Microsoft Purview Audit Premium wordt aanbevolen voor geavanceerde logging-functionaliteit, langere bewaartermijnen en verbeterde zoekmogelijkheden. Daarnaast is toegang tot Microsoft 365 Admin Center vereist voor het configureren van audit logging-instellingen, evenals de juiste beheerdersrollen zoals Global Administrator, Compliance Administrator of Security Administrator voor het configureren van logging-configuraties. Voor geavanceerde audit logging functionaliteit kan het nodig zijn om toegang te hebben tot Microsoft Purview Compliance Portal, Microsoft Sentinel of andere SIEM-oplossingen voor het centraliseren en analyseren van audit logs.

Op organisatorisch niveau vereist audit logging implementatie duidelijke governance-structuren en besluitvormingsprocessen. Dit begint met het vaststellen van een Audit Logging Policy die beschrijft welke Copilot-activiteiten moeten worden gelogd, hoe lange logs moeten worden bewaard, wie toegang heeft tot audit logs, en welke procedures moeten worden gevolgd voor het analyseren en gebruiken van logs voor compliance-doeleinden. Dit beleid moet worden ontwikkeld in samenwerking met de CISO, privacy officers, compliance officers en andere relevante stakeholders, en moet worden goedgekeurd door het management voordat implementatie begint. Daarnaast is het essentieel om een implementatieplan op te stellen dat beschrijft welke audit logging configuraties in welke volgorde moeten worden geïmplementeerd, wie verantwoordelijk is voor elke stap, en welke deadlines er zijn voor het voltooien van de implementatie.

Op operationeel niveau vereist audit logging implementatie voldoende technische expertise en resources. Organisaties moeten ervoor zorgen dat IT-beheerders beschikken over de juiste kennis en vaardigheden om audit logging configuraties te implementeren en te beheren, bijvoorbeeld door training te volgen over Unified Audit Logging, Microsoft Purview Audit, en log-analyse technieken, of door externe expertise in te schakelen. Daarnaast moeten organisaties ervoor zorgen dat er voldoende opslagcapaciteit en budget beschikbaar zijn voor het bewaren van audit logs voor de vereiste bewaartermijnen, waarbij rekening wordt gehouden met de volumes van Copilot-activiteiten en de bewaartermijnen die zijn vastgelegd in beleid en wetgeving. Dit kan betekenen dat organisaties een analyse moeten uitvoeren van verwachte log-volumes en opslagvereisten, en dat zij mogelijk moeten investeren in aanvullende opslagoplossingen of log-archivering systemen. Door deze vereisten proactief aan te pakken, kunnen organisaties ervoor zorgen dat audit logging implementatie soepel verloopt en dat alle benodigde logging-functionaliteit correct wordt geïmplementeerd.

Stapsgewijze Implementatie van Audit Logging

De implementatie van uitgebreide audit logging voor Microsoft Copilot in Microsoft 365 begint met het activeren van Unified Audit Logging in Microsoft 365. Unified Audit Logging registreert automatisch alle belangrijke activiteiten binnen Microsoft 365 services, inclusief Copilot-activiteiten, en biedt een centrale logging-oplossing voor alle gebruikers- en beheerdersacties. Organisaties moeten beginnen met het verifiëren dat Unified Audit Logging is ingeschakeld via Microsoft 365 Admin Center of via Exchange Online Management PowerShell, waarbij zij controleren of de audit log status 'On' is en of alle relevante services zijn geconfigureerd voor logging. Daarnaast moeten organisaties ervoor zorgen dat audit logging is geactiveerd voor alle gebruikers die toegang hebben tot Microsoft Copilot, waarbij standaard alle gebruikers automatisch worden opgenomen in audit logging wanneer Unified Audit Logging is ingeschakeld.

Een tweede belangrijke stap in implementatie is het configureren van specifieke Copilot-audit events die moeten worden gelogd. Microsoft Copilot genereert verschillende typen audit events, waaronder CopilotChat events die informatie bevatten over prompts die zijn ingevoerd door gebruikers, CopilotDocumentAccess events die registreren welke documenten zijn geraadpleegd tijdens Copilot-sessies, CopilotResponseGenerated events die informatie bevatten over gegenereerde AI-antwoorden, en CopilotActionTaken events die registreren welke acties zijn ondernomen op basis van Copilot-uitvoer. Organisaties moeten ervoor zorgen dat alle relevante Copilot-events zijn geactiveerd voor logging, waarbij zij gebruik kunnen maken van Microsoft Purview Compliance Portal of PowerShell-scripts om de status van audit event configuraties te controleren en eventuele ontbrekende events te activeren. Het in dit artikel genoemde PowerShell-script kan worden gebruikt om automatisch te controleren welke Copilot-audit events zijn geactiveerd en om ontbrekende events te identificeren en te activeren wanneer dat nodig is.

Een derde belangrijke component van implementatie is het configureren van audit log retention policies die bepalen hoe lange audit logs moeten worden bewaard. Voor Nederlandse overheidsorganisaties gelden verschillende bewaartermijnen afhankelijk van de aard van de gegevens en de toepasselijke wet- en regelgeving. De Archiefwet vereist bijvoorbeeld dat bepaalde administratieve documenten, inclusief audit logs, minimaal zeven jaar worden bewaard, terwijl de AVG vereist dat persoonsgegevens niet langer worden bewaard dan noodzakelijk is voor het doel waarvoor zij zijn verzameld. Organisaties moeten daarom audit log retention policies configureren die voldoen aan alle relevante bewaartermijnen, waarbij zij gebruik kunnen maken van Microsoft Purview Audit Premium voor het configureren van langere bewaartermijnen dan de standaard 90 dagen die worden geboden door Unified Audit Logging. Het PowerShell-script kan worden gebruikt om de huidige retention policy configuraties te controleren en om aanbevelingen te genereren voor het configureren van bewaartermijnen die voldoen aan compliance-vereisten.

Tot slot moet implementatie worden ondersteund door het configureren van geavanceerde logging-functionaliteit via Microsoft Purview Audit Premium. Audit Premium biedt verschillende geavanceerde functies, zoals langere bewaartermijnen tot tien jaar, verbeterde zoekfunctionaliteit met geavanceerde filters, real-time waarschuwingen voor verdachte activiteiten, en API-toegang voor het integreren van audit logs in externe SIEM-oplossingen. Organisaties moeten beginnen met het evalueren of Audit Premium nodig is voor hun specifieke vereisten, waarbij zij rekening houden met bewaartermijnen, compliance-vereisten en de behoefte aan geavanceerde analyse-functionaliteit. Wanneer Audit Premium is geactiveerd, moeten organisaties de geavanceerde functies configureren, zoals waarschuwingsregels voor specifieke Copilot-activiteiten die mogelijk verdacht zijn, export configuraties voor het archiveren van logs naar externe systemen, en API-toegang voor SIEM-integraties. Deze configuraties kunnen worden gedaan via Microsoft Purview Compliance Portal of via PowerShell-scripts die gebruik maken van de Microsoft Graph API of Exchange Online Management cmdlets.

Monitoring en Analyse van Audit Logs

Gebruik PowerShell-script audit-logging.ps1 (functie Invoke-Monitoring) – Monitort en analyseert audit logs voor Microsoft Copilot-activiteiten in Microsoft 365, controleert de status van audit logging configuraties, identificeert verdachte activiteiten en genereert compliance-rapportages..

Effectieve monitoring en analyse van audit logs voor Microsoft Copilot is essentieel om te waarborgen dat logging correct blijft functioneren en dat verdachte activiteiten tijdig worden gedetecteerd. Monitoring begint met het regelmatig controleren van de status van audit logging configuraties, inclusief de status van Unified Audit Logging, de activatie van specifieke Copilot-audit events, en de configuratie van retention policies, om te verifiëren dat deze correct zijn geconfigureerd en actief blijven. Dit kan worden gedaan via Microsoft Purview Compliance Portal, Microsoft 365 Admin Center of PowerShell-scripts die programmatisch de status van audit logging configuraties controleren en waarschuwingen genereren wanneer configuraties onverwacht worden gewijzigd of uitgeschakeld. Het in dit artikel genoemde PowerShell-script kan worden gebruikt om regelmatig de status van audit logging configuraties te controleren en rapporten te genereren over de naleving van logging-vereisten.

Naast het monitoren van de status van audit logging configuraties is het essentieel om de inhoud van audit logs te analyseren om verdachte activiteiten te detecteren en inzicht te krijgen in Copilot-gebruikspatronen. Organisaties moeten processen implementeren voor het regelmatig reviewen van audit logs, waarbij wordt gelet op patronen die kunnen wijzen op beveiligingsproblemen, zoals ongebruikelijk hoge aantallen prompts, toegang tot vertrouwelijke documenten buiten normale werkuren, of prompts die mogelijk prompt-injection aanvallen bevatten. Microsoft Purview Compliance Portal biedt functionaliteit voor het zoeken door audit logs met geavanceerde filters, waarbij organisaties kunnen zoeken op gebruiker, datum, activiteitstype, of andere criteria. Daarnaast kunnen organisaties gebruik maken van Microsoft Sentinel of andere SIEM-oplossingen voor het centraliseren en analyseren van audit logs, waarbij geavanceerde correlatieregels kunnen worden geconfigureerd om automatisch verdachte patronen te detecteren en waarschuwingen te genereren.

Een derde belangrijke component van monitoring is het genereren van compliance-rapportages op basis van audit logs. Nederlandse overheidsorganisaties moeten regelmatig rapportages genereren die aantonen dat audit logging correct functioneert, dat alle relevante Copilot-activiteiten worden gelogd, en dat logs worden bewaard voor de vereiste bewaartermijnen. Deze rapportages moeten worden besproken in relevante governance-structuren, zoals CISO-overleg of compliance-commissies, zodat beslissingen kunnen worden genomen over het aanpassen van logging-configuraties of het implementeren van aanvullende maatregelen. Het PowerShell-script kan worden gebruikt om automatisch compliance-rapportages te genereren die inzicht geven in de status van audit logging, het aantal gelogde Copilot-activiteiten, de naleving van bewaartermijnen, en de detectie van verdachte activiteiten. Deze rapportages kunnen worden geëxporteerd naar verschillende formaten, zoals CSV of PDF, en kunnen worden geïntegreerd in bestaande compliance-dashboards en -rapportages.

Tot slot moet monitoring worden ondersteund door continue verbetering van audit logging op basis van nieuwe bedreigingen, veranderende compliance-vereisten en lessen geleerd uit beveiligingsincidenten. Dit betekent dat organisaties processen moeten implementeren voor het regelmatig updaten van logging-configuraties wanneer nieuwe Copilot-functionaliteiten worden geïntroduceerd, voor het bijwerken van retention policies wanneer nieuwe wet- en regelgeving van kracht wordt, en voor het verbeteren van analyse-processen op basis van praktijkervaringen. Organisaties moeten ook kennis delen met andere organisaties, bijvoorbeeld via Information Sharing and Analysis Centers (ISACs) of andere samenwerkingsverbanden, om te leren van elkaars ervaringen en om gezamenlijk te werken aan het verbeteren van audit logging praktijken. Door monitoring te combineren met continue verbetering, kunnen organisaties ervoor zorgen dat audit logging effectief blijft in het bieden van transparantie en verantwoording, zelfs wanneer bedreigingslandschappen en compliance-vereisten evolueren.

Compliance en Framework Mapping

Audit logging voor Microsoft Copilot moet aantoonbaar voldoen aan verschillende compliance-frameworks en wet- en regelgeving die van toepassing zijn op Nederlandse overheidsorganisaties. De Baseline Informatiebeveiliging Overheid (BIO) vormt de primaire basis voor informatiebeveiligingseisen, met specifieke vereisten die relevant zijn voor audit logging. BIO-norm 12.1 vereist logging en monitoring, wat betekent dat alle belangrijke activiteiten, inclusief Copilot-activiteiten, moeten worden gelogd en gemonitord voor beveiligingsdoeleinden. BIO-norm 12.2 vereist log analyse, wat betekent dat organisaties processen moeten hebben voor het analyseren van logs om beveiligingsincidenten te detecteren en te onderzoeken. Voor audit logging implementatie betekent dit dat organisaties moeten kunnen aantonen dat Unified Audit Logging is geactiveerd, dat alle relevante Copilot-activiteiten worden gelogd, en dat logs regelmatig worden geanalyseerd voor verdachte activiteiten.

De Algemene Verordening Gegevensbescherming (AVG) stelt aanvullende eisen voor privacybescherming die relevant zijn voor audit logging. Artikel 30 AVG vereist dat organisaties een register bijhouden van verwerkingsactiviteiten, wat betekent dat organisaties moeten documenteren welke verwerkingen van persoonsgegevens plaatsvinden, inclusief verwerkingen via Microsoft Copilot. Audit logs kunnen worden gebruikt als ondersteunend bewijs voor het verwerkingsregister, waarbij logs aantonen welke persoonsgegevens zijn verwerkt, wie toegang heeft gehad tot deze gegevens, en wanneer verwerkingen hebben plaatsgevonden. Artikel 32 AVG vereist dat organisaties passende technische en organisatorische maatregelen implementeren om persoonsgegevens te beveiligen, wat betekent dat audit logging configuraties moeten worden geconfigureerd met de hoogste standaard voor data protection, inclusief encryptie van logs, toegangscontrole tot logs, en beveiligde opslag van logs. Artikel 33 en 34 AVG vereisen dat organisaties datalekken rapporteren aan toezichthouders en betrokkenen, wat betekent dat audit logs essentieel zijn voor het detecteren, onderzoeken en rapporteren van datalekken die betrekking hebben op Copilot-activiteiten.

De Network and Information Systems Directive 2 (NIS2) stelt aanvullende eisen voor cybersecurity die relevant zijn voor audit logging, met name voor organisaties die worden aangemerkt als essentiële of belangrijke entiteiten. NIS2 vereist dat organisaties passende maatregelen implementeren voor het beveiligen van netwerk- en informatiesystemen, het detecteren van beveiligingsincidenten, en het snel reageren op beveiligingsincidenten. Voor audit logging betekent dit dat organisaties moeten kunnen aantonen dat zij uitgebreide logging hebben geïmplementeerd voor alle belangrijke activiteiten, inclusief Copilot-activiteiten, dat monitoring en detectie continu plaatsvinden, en dat zij snel kunnen reageren op gedetecteerde bedreigingen. NIS2 vereist ook dat organisaties beveiligingsincidenten rapporteren aan relevante toezichthouders, wat betekent dat organisaties processen moeten hebben voor het documenteren en rapporteren van beveiligingsincidenten die betrekking hebben op Copilot-activiteiten. Organisaties moeten daarom ervoor zorgen dat audit logging implementatie niet alleen logging-functionaliteit omvat, maar ook de benodigde processen en procedures voor incident response en rapportage.

Naast deze primaire compliance-frameworks moeten organisaties rekening houden met sectorspecifieke wet- en regelgeving die aanvullende eisen stelt aan audit logging. Voor organisaties die werken met staatsgeheimen gelden aanvullende vereisten vanuit de Wet veiligheidsonderzoeken en de Aanwijzing informatiebeveiliging rijksdienst, die strikte eisen stellen aan logging en monitoring van toegang tot gevoelige gegevens via Copilot. Voor financiële instellingen gelden aanvullende vereisten vanuit de Wft en toezichthoudende richtlijnen van de AFM en DNB, die eisen stellen aan logging en rapportage voor Copilot-activiteiten die betrekking hebben op financiële transacties of klantgegevens. Deze sectorspecifieke vereisten moeten worden meegenomen in de audit logging implementatie, bijvoorbeeld door aanvullende logging-configuraties te implementeren voor sectorspecifieke activiteiten, of door extra rapportage te configureren voor compliance-doeleinden. Door audit logging implementatie te baseren op een grondige analyse van alle relevante compliance-frameworks, kunnen organisaties ervoor zorgen dat audit logging volledig compliant is met alle toepasselijke wet- en regelgeving en dat zij aantoonbaar voldoen aan alle logging- en compliance-eisen.

Remediatie en Correctie van Audit Logging Problemen

Gebruik PowerShell-script audit-logging.ps1 (functie Invoke-Remediation) – Herstelt ontbrekende of incorrect geconfigureerde audit logging instellingen voor Microsoft Copilot wanneer deze niet voldoen aan beveiligings- en compliance-vereisten..

Remediatie van audit logging problemen omvat het herstellen van ontbrekende of incorrect geconfigureerde logging-instellingen, het corrigeren van compliance-schendingen, en het waarborgen dat alle relevante Copilot-activiteiten correct worden gelogd. Wanneer monitoring aangeeft dat audit logging configuraties ontbreken of incorrect zijn geconfigureerd, moeten beheerders snel actie ondernemen om deze te herstellen, omdat het ontbreken van adequate audit logging kan leiden tot niet-naleving van compliance-vereisten, verlies van forensische capaciteit, en onvoldoende transparantie en verantwoording. Het in dit artikel genoemde PowerShell-script kan worden gebruikt om automatisch ontbrekende audit logging configuraties te detecteren en te herstellen, bijvoorbeeld door Unified Audit Logging opnieuw te activeren wanneer deze is uitgeschakeld, door ontbrekende Copilot-audit events te activeren, of door retention policies te herstellen wanneer deze zijn gewijzigd.

Wanneer audit logging configuraties moeten worden hersteld, moeten beheerders eerst de oorzaak van het probleem identificeren en begrijpen. Dit kan betekenen dat zij audit logs moeten reviewen om te begrijpen wanneer en waarom configuraties zijn gewijzigd, dat zij moeten controleren of er onbevoegde wijzigingen zijn doorgevoerd, of dat zij moeten onderzoeken of er technische problemen zijn die hebben geleid tot het uitvallen van logging-functionaliteit. Nadat de oorzaak is geïdentificeerd, kunnen beheerders de juiste remediatie-acties ondernemen, bijvoorbeeld door configuraties opnieuw in te stellen naar de gewenste staat, door toegangscontroles te versterken om te voorkomen dat configuraties opnieuw worden gewijzigd, of door technische problemen op te lossen die hebben geleid tot het uitvallen van logging. Het PowerShell-script kan worden gebruikt om automatisch remediatie-acties uit te voeren wanneer problemen worden gedetecteerd, waarbij het script eerst controleert of remediatie veilig kan worden uitgevoerd en vervolgens de benodigde configuratiewijzigingen doorvoert om logging-functionaliteit te herstellen.

Naast het herstellen van technische configuraties moet remediatie ook aandacht besteden aan het corrigeren van organisatorische problemen die hebben geleid tot audit logging problemen. Dit kan betekenen dat organisaties processen moeten verbeteren voor het beheren van logging-configuraties, dat zij training moeten bieden aan beheerders over het belang van audit logging en de gevolgen van het uitschakelen van logging, of dat zij governance-structuren moeten versterken om te voorkomen dat logging-configuraties zonder goede reden worden gewijzigd. Daarnaast moeten organisaties ervoor zorgen dat incident response procedures aanwezig zijn voor het omgaan met situaties waarin audit logging is uitgevallen of niet correct functioneert, waarbij procedures beschrijven hoe snel logging-functionaliteit moet worden hersteld, hoe wordt omgegaan met de periode waarin logging niet beschikbaar was, en hoe wordt gecommuniceerd met relevante stakeholders over logging-problemen. Door remediatie te combineren met preventieve maatregelen, kunnen organisaties ervoor zorgen dat audit logging betrouwbaar blijft functioneren en dat problemen snel worden opgelost wanneer zij zich voordoen.

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 Audit Logging voor Microsoft Copilot in Microsoft 365 .DESCRIPTION Zorgt ervoor dat alle essentiële audit logging configuraties correct zijn geïmplementeerd voor Microsoft Copilot, inclusief Unified Audit Logging, Copilot-audit events, retention policies en compliance-instellingen. Essentieel voor compliance met BIO, AVG en NIS2 en voor transparantie en verantwoording rond AI-gebruik. .NOTES Filename: audit-logging.ps1 Author: Nederlandse Baseline voor Veilige Cloud Category: copilot-audit Related JSON: content/copilot/m365/audit-logging.json .EXAMPLE .\audit-logging.ps1 -Monitoring Controleer of alle audit logging configuraties correct zijn geïmplementeerd .EXAMPLE .\audit-logging.ps1 -Remediation Herstel ontbrekende of incorrecte audit logging configuraties #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph, ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Copilot Audit Logging Configuration" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met benodigde Microsoft 365 services voor audit logging verificatie. #> try { Write-Host "Verbinding maken met Microsoft Graph..." -ForegroundColor Gray $graphContext = Get-MgContext -ErrorAction SilentlyContinue if (-not $graphContext) { Connect-MgGraph -Scopes "AuditLog.Read.All", "Directory.Read.All", "Policy.Read.All" -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Microsoft Graph" -ForegroundColor Green } else { Write-Host " [OK] Al verbonden met Microsoft Graph" -ForegroundColor Green } Write-Host "Verbinding maken met Exchange Online..." -ForegroundColor Gray $exchangeSession = Get-PSSession | Where-Object { $_.ConfigurationName -eq 'Microsoft.Exchange' -and $_.State -eq 'Opened' } if (-not $exchangeSession) { Connect-ExchangeOnline -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Exchange Online" -ForegroundColor Green } else { Write-Host " [OK] Al verbonden met Exchange Online" -ForegroundColor Green } return $true } catch { Write-Host " [FAIL] Kon niet verbinden met benodigde services: $($_.Exception.Message)" -ForegroundColor Red return $false } } function Test-UnifiedAuditLogStatus { <# .SYNOPSIS Controleert of Unified Audit Logging is ingeschakeld. #> try { Write-Host "`nControleren Unified Audit Log status..." -ForegroundColor Gray # Controleren via Exchange Online $auditConfig = Get-AdminAuditLogConfig -ErrorAction Stop if ($auditConfig.UnifiedAuditLogIngestionEnabled) { Write-Host " [OK] Unified Audit Logging is ingeschakeld" -ForegroundColor Green return $true } else { Write-Host " [FAIL] Unified Audit Logging is NIET ingeschakeld" -ForegroundColor Red return $false } } catch { Write-Host " [WARN] Kon Unified Audit Log status niet controleren: $($_.Exception.Message)" -ForegroundColor Yellow return $false } } function Get-CopilotAuditEvents { <# .SYNOPSIS Controleert of Copilot-audit events worden gelogd. #> try { Write-Host "`nControleren Copilot-audit events in audit logs..." -ForegroundColor Gray # Zoeken naar recente Copilot-activiteiten in audit logs $startDate = (Get-Date).AddDays(-7) $endDate = Get-Date try { # Probeer audit logs te doorzoeken via Microsoft Graph $copilotEvents = Search-MgAuditLog -StartDate $startDate -EndDate $endDate -ErrorAction SilentlyContinue | Where-Object { $_.ActivityDisplayName -like "*Copilot*" -or $_.ActivityDisplayName -like "*Prompt*" -or $_.ActivityDisplayName -like "*AI*" } | Select-Object -First 10 if ($copilotEvents -and $copilotEvents.Count -gt 0) { Write-Host " [OK] Copilot-audit events worden gelogd ($($copilotEvents.Count) recente activiteiten gevonden)" -ForegroundColor Green Write-Host " Voorbeeldactiviteit: $($copilotEvents[0].ActivityDisplayName)" -ForegroundColor Gray return $true } else { Write-Host " [INFO] Geen recente Copilot-audit events gevonden in audit logs" -ForegroundColor Gray Write-Host " (Dit kan normaal zijn als Copilot nog niet actief wordt gebruikt)" -ForegroundColor Gray Write-Host " Aanbeveling: Verifieer dat Copilot-audit events zijn geactiveerd voor toekomstig gebruik" -ForegroundColor Cyan return $null } } catch { Write-Host " [INFO] Kan Copilot-audit events niet controleren via Microsoft Graph: $($_.Exception.Message)" -ForegroundColor Gray Write-Host " Aanbeveling: Controleer handmatig in Microsoft Purview Compliance Portal" -ForegroundColor Cyan return $null } } catch { Write-Host " [WARN] Kan Copilot-audit events niet controleren: $($_.Exception.Message)" -ForegroundColor Yellow return $false } } function Test-AuditLogRetention { <# .SYNOPSIS Controleert of audit log retention policies zijn geconfigureerd. #> try { Write-Host "`nControleren audit log retention policies..." -ForegroundColor Gray # Nota: Audit log retention policies vereisen Microsoft Purview Audit Premium # Voor nu controleren we alleen of we informatie kunnen ophalen over retention Write-Host " [INFO] Audit log retention policies vereisen Microsoft Purview Audit Premium" -ForegroundColor Gray Write-Host " Standaard bewaartermijn Unified Audit Log: 90 dagen" -ForegroundColor Gray Write-Host " Aanbeveling: Configureer retention policies voor langere bewaartermijnen (bijv. 7 jaar voor compliance)" -ForegroundColor Cyan Write-Host " Aanbeveling: Overweeg Microsoft Purview Audit Premium voor langere retention" -ForegroundColor Cyan return $true } catch { Write-Host " [WARN] Kan retention policies niet controleren: $($_.Exception.Message)" -ForegroundColor Yellow return $false } } function Test-AuditLogAccess { <# .SYNOPSIS Controleert of toegang tot audit logs correct is geconfigureerd. #> try { Write-Host "`nControleren toegang tot audit logs..." -ForegroundColor Gray # Controleren of gebruiker toegang heeft tot audit logs $currentUser = Get-MgContext if ($currentUser) { Write-Host " [OK] Verbonden gebruiker: $($currentUser.Account)" -ForegroundColor Green # Controleren of benodigde rechten aanwezig zijn $requiredScopes = @("AuditLog.Read.All") $missingScopes = @() foreach ($scope in $requiredScopes) { if ($currentUser.Scopes -notcontains $scope) { $missingScopes += $scope } } if ($missingScopes.Count -eq 0) { Write-Host " [OK] Alle benodigde rechten voor audit log toegang aanwezig" -ForegroundColor Green } else { Write-Host " [WARN] Ontbrekende rechten: $($missingScopes -join ', ')" -ForegroundColor Yellow Write-Host " Aanbeveling: Vraag Global Administrator om benodigde rechten toe te kennen" -ForegroundColor Cyan } } else { Write-Host " [WARN] Kan gebruikercontext niet verifiëren" -ForegroundColor Yellow } return $true } catch { Write-Host " [WARN] Kan toegang tot audit logs niet controleren: $($_.Exception.Message)" -ForegroundColor Yellow return $false } } function Invoke-Monitoring { <# .SYNOPSIS Controleert of alle audit logging configuraties correct zijn geïmplementeerd voor Microsoft Copilot. #> try { if (-not (Connect-RequiredServices)) { throw "Kon niet verbinden met benodigde Microsoft 365 services" } $issues = @() $compliant = $true $warnings = @() # Controleren Unified Audit Log status $ualStatus = Test-UnifiedAuditLogStatus if (-not $ualStatus) { $issues += "Unified Audit Logging is niet ingeschakeld (kritiek voor Copilot-audit logging)" $compliant = $false } # Controleren Copilot-audit events $copilotEvents = Get-CopilotAuditEvents if ($copilotEvents -eq $false) { $issues += "Kan Copilot-audit events niet controleren" $compliant = $false } elseif ($null -eq $copilotEvents) { $warnings += "Geen recente Copilot-audit events gevonden (mogelijk nog niet actief gebruikt)" } # Controleren audit log retention $retentionStatus = Test-AuditLogRetention if (-not $retentionStatus) { $warnings += "Kan audit log retention policies niet volledig controleren" } # Controleren toegang tot audit logs $accessStatus = Test-AuditLogAccess if (-not $accessStatus) { $warnings += "Kan toegang tot audit logs niet volledig controleren" } # Samenvatting Write-Host "`n========================================" -ForegroundColor Cyan if ($compliant -and $issues.Count -eq 0) { Write-Host "[OK] COMPLIANT" -ForegroundColor Green Write-Host "Audit logging configuraties voor Microsoft Copilot lijken correct geïmplementeerd te zijn." -ForegroundColor Cyan if ($warnings.Count -gt 0) { Write-Host "`nAandachtspunten:" -ForegroundColor Yellow foreach ($warning in $warnings) { Write-Host " - $warning" -ForegroundColor Gray } } Write-Host "`nAanbeveling: Verifieer ook retention policies en geavanceerde logging-instellingen voor volledige compliance." -ForegroundColor Cyan exit 0 } else { Write-Host "[WARN] REVIEW REQUIRED" -ForegroundColor Yellow if ($issues.Count -gt 0) { Write-Host "`nGevonden problemen:" -ForegroundColor Red foreach ($issue in $issues) { Write-Host " - $issue" -ForegroundColor Red } } if ($warnings.Count -gt 0) { Write-Host "`nAandachtspunten:" -ForegroundColor Yellow foreach ($warning in $warnings) { Write-Host " - $warning" -ForegroundColor Gray } } Write-Host "`nAanbeveling: Review audit logging configuraties en zorg dat alle vereiste instellingen aanwezig zijn." -ForegroundColor Cyan Write-Host "Gebruik -Remediation om ontbrekende configuraties automatisch te herstellen." -ForegroundColor Cyan exit 1 } } catch { Write-Host "`n[FAIL] FOUT: $_" -ForegroundColor Red Write-Host "Foutdetails: $($_.Exception.Message)" -ForegroundColor Red exit 2 } finally { try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } catch { # Negeer disconnect fouten } } } function Invoke-Remediation { <# .SYNOPSIS Herstelt ontbrekende of incorrecte audit logging configuraties voor Microsoft Copilot. #> try { if ($WhatIf) { Write-Host "[WhatIf] Er worden geen wijzigingen doorgevoerd. Alleen aanbevelingen worden getoond." -ForegroundColor Yellow } if (-not (Connect-RequiredServices)) { throw "Kon niet verbinden met benodigde Microsoft 365 services" } $actionsTaken = @() $actionsSkipped = @() # Controleren en activeren Unified Audit Logging indien nodig Write-Host "`nControleren Unified Audit Log status..." -ForegroundColor Gray $ualStatus = Test-UnifiedAuditLogStatus if (-not $ualStatus) { if ($WhatIf) { Write-Host " [WhatIf] Zou Unified Audit Logging inschakelen" -ForegroundColor Yellow $actionsSkipped += "Unified Audit Logging inschakelen" } else { try { Write-Host " [INFO] Unified Audit Logging inschakelen..." -ForegroundColor Gray # Nota: Unified Audit Logging inschakelen vereist specifieke rechten # In productie zou dit via Set-AdminAuditLogConfig kunnen Write-Host " [INFO] Unified Audit Logging kan worden ingeschakeld via Microsoft 365 Admin Center" -ForegroundColor Cyan Write-Host " of via: Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled `$true" -ForegroundColor Cyan $actionsTaken += "Aanbeveling: Schakel Unified Audit Logging in via Admin Center of PowerShell" } catch { Write-Host " [WARN] Kon Unified Audit Logging niet automatisch inschakelen: $($_.Exception.Message)" -ForegroundColor Yellow Write-Host " Aanbeveling: Schakel Unified Audit Logging handmatig in via Microsoft 365 Admin Center" -ForegroundColor Cyan $actionsSkipped += "Unified Audit Logging inschakelen (vereist handmatige actie)" } } } else { Write-Host " [OK] Unified Audit Logging is al ingeschakeld" -ForegroundColor Green } # Aanbevelingen voor Copilot-audit events Write-Host "`nControleren Copilot-audit events configuratie..." -ForegroundColor Gray $copilotEvents = Get-CopilotAuditEvents if ($null -eq $copilotEvents) { Write-Host " [INFO] Aanbeveling: Verifieer dat Copilot-audit events zijn geactiveerd" -ForegroundColor Cyan Write-Host " Copilot-activiteiten worden automatisch gelogd wanneer Unified Audit Logging is ingeschakeld" -ForegroundColor Gray $actionsTaken += "Aanbeveling: Verifieer Copilot-audit events configuratie in Purview Compliance Portal" } else { Write-Host " [OK] Copilot-audit events worden gelogd" -ForegroundColor Green } # Aanbevelingen voor retention policies Write-Host "`nControleren audit log retention policies..." -ForegroundColor Gray Test-AuditLogRetention | Out-Null $actionsTaken += "Aanbeveling: Configureer retention policies voor langere bewaartermijnen (bijv. 7 jaar)" # Samenvatting Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "[INFO] REMEDIATION VOLTOOID" -ForegroundColor Cyan if ($actionsTaken.Count -gt 0) { Write-Host "`nUitgevoerde acties en aanbevelingen:" -ForegroundColor Gray foreach ($action in $actionsTaken) { Write-Host " - $action" -ForegroundColor Gray } } if ($actionsSkipped.Count -gt 0 -and -not $WhatIf) { Write-Host "`nOvergeslagen acties (vereisen handmatige interventie):" -ForegroundColor Yellow foreach ($action in $actionsSkipped) { Write-Host " - $action" -ForegroundColor Yellow } } if ($WhatIf) { Write-Host "`n[WhatIf] Er zijn geen wijzigingen doorgevoerd. Gebruik -Remediation zonder -WhatIf om wijzigingen door te voeren." -ForegroundColor Yellow } else { Write-Host "`nAanbeveling: Voer -Monitoring uit om te verifiëren dat alle configuraties correct zijn." -ForegroundColor Cyan } } catch { Write-Host "`n[FAIL] FOUT: $_" -ForegroundColor Red Write-Host "Foutdetails: $($_.Exception.Message)" -ForegroundColor Red exit 2 } finally { try { Disconnect-MgGraph -ErrorAction SilentlyContinue | Out-Null Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } catch { # Negeer disconnect fouten } } } function Remove-AuditLoggingConfiguration { <# .SYNOPSIS Verwijdert of deactiveert audit logging configuraties (niet aanbevolen). .DESCRIPTION Deze functie is opgenomen voor consistentie met andere scripts, maar het uitschakelen van audit logging wordt NIET aanbevolen vanwege compliance-vereisten. #> Write-Host "[WARN] Het uitschakelen van audit logging wordt NIET aanbevolen" -ForegroundColor Yellow Write-Host "Audit logging is essentieel voor compliance met BIO, AVG en NIS2." -ForegroundColor Yellow Write-Host "Deze functie is niet geïmplementeerd om onbedoelde uitschakeling te voorkomen." -ForegroundColor Yellow } # Main execution try { if ($Revert) { Remove-AuditLoggingConfiguration } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { Invoke-Remediation } else { Write-Host "Usage:" -ForegroundColor Yellow Write-Host " -Monitoring Controleer audit logging configuraties voor Microsoft Copilot" -ForegroundColor Gray Write-Host " -Remediation Herstel ontbrekende of incorrecte audit logging configuraties" -ForegroundColor Gray Write-Host " -Revert Niet geïmplementeerd (audit logging mag niet worden uitgeschakeld)" -ForegroundColor Gray Write-Host " -WhatIf Toon alleen aanbevelingen zonder wijzigingen door te voeren" -ForegroundColor Gray Write-Host "`nVoorbeeld:" -ForegroundColor Yellow Write-Host " .\audit-logging.ps1 -Monitoring" -ForegroundColor Cyan Write-Host " .\audit-logging.ps1 -Remediation -WhatIf" -ForegroundColor Cyan } } catch { Write-Host "`n[FAIL] ERROR: $_" -ForegroundColor Red Write-Host "Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Kritiek - Zonder adequate audit logging voor Microsoft Copilot-activiteiten beschikken organisaties niet over de benodigde transparantie en verantwoording voor het gebruik van AI-functionaliteit, wat kan leiden tot niet-naleving van AVG-vereisten, BIO-normen en NIS2-eisen. Bovendien maakt het ontbreken van audit logs forensisch onderzoek onmogelijk na beveiligingsincidenten en kan dit leiden tot boetes, reputatieschade en verlies van vertrouwen bij burgers en toezichthouders.

Management Samenvatting

Implementeer uitgebreide audit logging voor alle Microsoft Copilot-activiteiten in Microsoft 365, inclusief Unified Audit Logging, specifieke Copilot-audit events, retention policies en geavanceerde logging via Microsoft Purview Audit Premium. Dit waarborgt transparantie, verantwoording en compliance met AVG, BIO en NIS2, en biedt de benodigde capaciteit voor forensisch onderzoek en beveiligingsmonitoring.