Incidentrapportageprocedures Voor Microsoft 365: Compliance En Verantwoording

💼 Management Samenvatting

Incidentrapportage vormt een kritieke schakel tussen detectie van beveiligingsincidenten en compliance met wettelijke verplichtingen voor Nederlandse overheidsorganisaties. Binnen Microsoft 365-omgevingen kunnen verschillende typen incidenten optreden: datalekken waarbij persoonsgegevens onbevoegd worden gedeeld of geëxporteerd, beveiligingsincidenten zoals ransomware-aanvallen of accountcompromittering, en systeemstoringen die de beschikbaarheid van kritieke diensten beïnvloeden. De NIS2-richtlijn, AVG, BIO en andere kaders stellen strenge eisen aan wanneer, hoe en aan wie incidenten moeten worden gemeld. Een gestructureerde incidentrapportageprocedure vertaalt deze juridische verplichtingen naar concrete workflows, templates, verantwoordelijkheden en technische ondersteuning binnen Microsoft 365, zodat organisaties tijdig, accuraat en aantoonbaar kunnen rapporteren aan toezichthouders, bestuur en betrokkenen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
200u (tech: 80u)
Van toepassing op:
Microsoft 365 E3
Microsoft 365 E5
Exchange Online
SharePoint Online
OneDrive for Business
Microsoft Teams
Publieke Sector
Overheidsorganisaties

Zonder gestructureerde incidentrapportageprocedures lopen Nederlandse overheidsorganisaties aanzienlijke risico's op meerdere fronten. Juridisch gezien kunnen organisaties die niet voldoen aan de meldingsplicht uit de NIS2-richtlijn (artikel 23) boetes krijgen tot €10 miljoen of 2% van de wereldwijde jaaromzet. De AVG verplicht organisaties om datalekken binnen 72 uur te melden aan de Autoriteit Persoonsgegevens, en bij hoge risico's ook aan betrokkenen. Zonder duidelijke procedures ontstaat onduidelijkheid over wanneer een incident meldingsplichtig is, wie verantwoordelijk is voor de melding, welke informatie moet worden verzameld en hoe snel dit moet gebeuren. Dit kan leiden tot te late meldingen, onvolledige rapportages, inconsistente communicatie richting verschillende stakeholders en daarmee tot juridische en reputatierisico's. Organisatorisch gezien ontstaat zonder gestructureerde procedures chaos tijdens incidenten: verantwoordelijkheden zijn onduidelijk, informatie wordt niet gedeeld of dubbel verzameld, beslissingen worden te laat genomen en de kwaliteit van rapportages is onvoldoende voor toezichthouders. Technisch gezien ontbreekt zonder geautomatiseerde ondersteuning zicht op welke incidenten zich voordoen, welke impact zij hebben, welke gegevens betrokken zijn en hoe snel zij worden opgelost. Dit maakt het onmogelijk om tijdig en accuraat te rapporteren. Bovendien maakt de complexiteit van Microsoft 365, met meerdere workloads, datastromen en integraties, het noodzakelijk om expliciete procedures te hebben voor het verzamelen van relevante informatie uit Exchange Online, SharePoint, Teams, OneDrive en andere services. Een gestructureerde incidentrapportageprocedure voorkomt deze risico's door duidelijke workflows, templates, verantwoordelijkheden en technische ondersteuning te bieden.

PowerShell Modules Vereist
Primary API: Microsoft Purview (Security & Compliance PowerShell), Microsoft Graph API, Microsoft Sentinel
Connection: Connect-IPPSSession, Connect-MgGraph, Connect-AzAccount
Required Modules: ExchangeOnlineManagement, Microsoft.Graph, Az.Accounts, Az.SecurityInsights

Implementatie

Dit artikel beschrijft een complete procedure voor incidentrapportage binnen Microsoft 365-omgevingen voor Nederlandse overheidsorganisaties. Het artikel behandelt vier samenhangende dimensies: wettelijke kaders en meldingsplichten, organisatorische procedures en workflows, technische implementatie en continue verbetering. De wettelijke dimensie beschrijft wanneer incidenten meldingsplichtig zijn volgens NIS2 (artikel 23), AVG (artikel 33 en 34), BIO (hoofdstuk 16) en andere relevante kaders, welke informatie moet worden verzameld, binnen welke termijnen meldingen moeten worden gedaan en aan welke toezichthouders. De organisatorische dimensie beschrijft wie verantwoordelijk is voor welke aspecten van incidentrapportage (CISO, Functionaris Gegevensbescherming, incident manager, communicatieafdeling), welke workflows worden gevolgd van detectie tot eindrapportage, welke templates worden gebruikt voor verschillende typen meldingen en hoe escalatie plaatsvindt richting bestuur en toezichthouders. De technische dimensie beschrijft hoe Microsoft 365-tools zoals Microsoft Sentinel, Microsoft Purview, audit logs en DLP-telemetrie worden gebruikt om incidentinformatie te verzamelen, te analyseren en te documenteren, en hoe deze informatie wordt geïntegreerd in rapportagetemplates. De dimensie van continue verbetering behandelt hoe organisaties leren van incidentrapportages, hoe procedures worden geëvalueerd en verbeterd, en hoe periodieke oefeningen worden uitgevoerd om de effectiviteit van rapportageprocessen te testen. Het bijbehorende PowerShell-script ondersteunt organisaties bij het monitoren van incidentrapportageprocessen, het verzamelen van relevante metadata en het genereren van compliance-rapportages.

Incidentrapportage voor Nederlandse overheidsorganisaties is gebonden aan meerdere wettelijke kaders die elk specifieke eisen stellen aan wanneer, hoe en aan wie incidenten moeten worden gemeld. De NIS2-richtlijn (Richtlijn (EU) 2022/2555) verplicht essentiële en belangrijke entiteiten om significante incidenten te melden aan de bevoegde toezichthouder. Artikel 23 van NIS2 schrijft voor dat een eerste melding moet worden gedaan binnen 24 uur na detectie van een significant incident, gevolgd door een tussenrapportage binnen 72 uur en een eindrapportage binnen één maand. Een incident wordt als significant beschouwd wanneer het substantiële impact heeft op de beschikbaarheid, integriteit of vertrouwelijkheid van netwerk- en informatiesystemen, of wanneer het leidt tot ernstige financiële, economische of maatschappelijke gevolgen. Voor Microsoft 365-omgevingen betekent dit dat organisaties moeten beoordelen of een incident, zoals een ransomware-aanval op SharePoint, een datalek via Teams of een grootschalige uitval van Exchange Online, voldoet aan deze criteria. De melding moet minimaal bevatten: een beschrijving van het incident, de geschatte impact, de getroffen systemen en diensten, de genomen mitigerende maatregelen en de verwachte hersteltijd. Nederlandse overheidsorganisaties melden significante incidenten aan het Nationaal Cyber Security Centrum (NCSC) als bevoegde toezichthouder.

De Algemene Verordening Gegevensbescherming (AVG) stelt aanvullende eisen voor datalekken waarbij persoonsgegevens betrokken zijn. Artikel 33 van de AVG verplicht organisaties om een datalek binnen 72 uur na ontdekking te melden aan de Autoriteit Persoonsgegevens (AP), tenzij het onwaarschijnlijk is dat het datalek een risico vormt voor de rechten en vrijheden van natuurlijke personen. Artikel 34 verplicht organisaties om betrokkenen te informeren wanneer een datalek waarschijnlijk een hoog risico vormt voor hun rechten en vrijheden, bijvoorbeeld wanneer gevoelige persoonsgegevens zoals burgerservicenummers, medische gegevens of financiële informatie zijn gelekt. Voor Microsoft 365-omgevingen betekent dit dat organisaties moeten kunnen beoordelen of een incident, zoals het onbevoegd delen van een SharePoint-document met persoonsgegevens, het exporteren van een mailbox met klantgegevens of een phishing-aanval waarbij toegangsrechten zijn gecompromitteerd, voldoet aan de definitie van een datalek. De melding aan de AP moet minimaal bevatten: een beschrijving van het datalek, de categorieën en geschatte aantallen betrokkenen en persoonsgegevens, de waarschijnlijke gevolgen, de genomen of voorgestelde mitigerende maatregelen en contactgegevens van de Functionaris Gegevensbescherming. Organisaties moeten ook kunnen aantonen dat zij procedures hebben om datalekken tijdig te detecteren, te beoordelen en te melden, wat vereist dat Microsoft 365-audit logs, DLP-telemetrie en andere monitoringtools adequaat zijn geconfigureerd.

De Baseline Informatiebeveiliging Overheid (BIO) bevat eveneens concrete eisen op het gebied van incidentrapportage. Hoofdstuk 16 van de BIO schrijft voor dat organisaties procedures moeten hebben voor het melden, registreren, beoordelen en afhandelen van beveiligingsincidenten. Dit omvat het bijhouden van een centraal incidentregister waarin alle beveiligingsincidenten worden vastgelegd, inclusief classificatie naar ernst en impact, genomen maatregelen en opvolging. De BIO vereist ook dat organisaties periodiek rapporteren over incidenten aan bestuur en toezichthouders, en dat zij kunnen aantonen dat incidenten systematisch worden geanalyseerd en dat lessen worden gebruikt voor continue verbetering. Voor Microsoft 365-omgevingen betekent dit dat organisaties een gestructureerd proces moeten hebben voor het registreren van incidenten, het classificeren naar ernst (bijvoorbeeld laag, middel, hoog, kritiek), het toewijzen van eigenaars, het documenteren van genomen acties en het archiveren van relevante logbestanden en correspondentie. Daarnaast kunnen sectorale kaders aanvullende eisen stellen, bijvoorbeeld voor organisaties in de zorgsector (Wet op de geneeskundige behandelingsovereenkomst), de financiële sector (Wet op het financieel toezicht) of organisaties die werken met geclassificeerde informatie. Een complete incidentrapportageprocedure moet daarom rekening houden met alle relevante kaders en moet flexibel genoeg zijn om aan verschillende meldingsvereisten te voldoen.

Organisatorische procedures en workflows: van detectie tot eindrapportage

Effectieve incidentrapportage begint bij duidelijke organisatorische procedures die beschrijven wie verantwoordelijk is voor welke aspecten van rapportage, welke workflows worden gevolgd en welke templates en tools worden gebruikt. Binnen Nederlandse overheidsorganisaties zijn meerdere rollen betrokken bij incidentrapportage, elk met specifieke verantwoordelijkheden. De CISO of security officer is eindverantwoordelijk voor de technische beoordeling van incidenten, het verzamelen van relevante logbestanden en telemetrie, het bepalen van de impact en het coördineren van technische respons. De Functionaris Gegevensbescherming (FG) is verantwoordelijk voor de beoordeling of een incident voldoet aan de definitie van een datalek volgens de AVG, het voorbereiden van meldingen aan de Autoriteit Persoonsgegevens en betrokkenen, en het monitoren van de naleving van privacy-verplichtingen. De incident manager coördineert de algehele respons, houdt het incidentregister bij, zorgt voor communicatie tussen verschillende stakeholders en bewaakt de naleving van meldingstermijnen. De communicatieafdeling is verantwoordelijk voor externe communicatie richting media, burgers en andere stakeholders, in nauwe samenwerking met de FG en CISO. Het bestuur moet worden geïnformeerd over kritieke incidenten en moet kunnen beslissen over risicoacceptatie, budget voor herstelmaatregelen en eventuele publieke communicatie.

De workflow voor incidentrapportage begint bij detectie. Wanneer een incident wordt gedetecteerd, bijvoorbeeld via Microsoft Sentinel alerts, DLP-waarschuwingen, gebruikersmeldingen of externe signalen, wordt een eerste beoordeling uitgevoerd door de security operations team of helpdesk. Deze eerste beoordeling bepaalt of het incident daadwerkelijk een beveiligingsincident is, wat de geschatte ernst is en of het meldingsplichtig kan zijn. Indien het incident mogelijk meldingsplichtig is, wordt direct de incident manager en FG geïnformeerd, zodat zij kunnen beginnen met het verzamelen van relevante informatie. Binnen de eerste uren na detectie wordt een gedetailleerde analyse uitgevoerd: welke systemen zijn betrokken, welke gegevens zijn mogelijk gecompromitteerd, wat is de geschatte impact, welke mitigerende maatregelen zijn genomen en wat is de verwachte hersteltijd. Deze informatie wordt vastgelegd in een gestandaardiseerd incidentrapport dat als basis dient voor alle verdere communicatie. Voor NIS2-significante incidenten moet binnen 24 uur een eerste melding worden gedaan aan het NCSC, voor AVG-datalekken binnen 72 uur aan de AP. De workflow beschrijft expliciet wie verantwoordelijk is voor het voorbereiden van deze meldingen, wie deze moet goedkeuren en hoe zij worden verzonden. Na de eerste melding wordt de situatie continu gemonitord en worden tussenrapportages gedaan wanneer nieuwe informatie beschikbaar komt of wanneer de situatie verandert. Na afronding van het incident wordt een eindrapportage opgesteld die een volledig overzicht geeft van het incident, de genomen maatregelen, de geleerde lessen en de geplande verbetermaatregelen.

Templates en standaardformulieren zijn essentieel voor consistente en complete rapportages. Het incidentrapportageproces moet voorzien in templates voor verschillende typen meldingen: NIS2-meldingen aan het NCSC, AVG-meldingen aan de AP, interne rapportages aan bestuur, communicatie naar betrokkenen en eindrapportages. Deze templates zorgen ervoor dat alle relevante informatie wordt verzameld en dat meldingen voldoen aan de eisen van toezichthouders. Templates moeten bijvoorbeeld velden bevatten voor: incidentidentificatie en -classificatie, detectietijdstip en -methode, beschrijving van het incident, betrokken systemen en gegevens, geschatte impact en risico's, genomen mitigerende en herstelmaatregelen, verwachte hersteltijd, contactgegevens van verantwoordelijken en eventuele aanvullende informatie. Daarnaast moeten templates flexibel genoeg zijn om aan te passen aan specifieke situaties, terwijl zij tegelijkertijd zorgen voor consistentie over verschillende incidenten heen. Het gebruik van templates wordt ondersteund door technische tools, zoals Microsoft Sentinel incident management, Microsoft Purview compliance manager of aangepaste workflows in Microsoft Power Platform, die helpen bij het verzamelen van relevante informatie, het invullen van templates en het archiveren van rapportages voor audit-doeleinden.

Technische implementatie en automatisering: Microsoft 365-tools voor incidentrapportage

Technische implementatie van incidentrapportageprocedures binnen Microsoft 365 maakt gebruik van verschillende tools en services om incidentinformatie te verzamelen, te analyseren en te documenteren. Microsoft Sentinel vormt het centrale platform voor security information and event management (SIEM) en security orchestration, automation and response (SOAR). Sentinel verzamelt loggegevens uit alle Microsoft 365-workloads, detecteert afwijkende patronen en beveiligingsincidenten, en ondersteunt incident management workflows. Binnen Sentinel kunnen incidenten worden aangemaakt, geclassificeerd, toegewezen aan analisten, gedocumenteerd en geëscaleerd. Sentinel playbooks kunnen worden geconfigureerd om automatisch relevante informatie te verzamelen wanneer een incident wordt gedetecteerd, bijvoorbeeld door query's uit te voeren op audit logs, gebruikersactiviteit te analyseren, DLP-incidenten te inventariseren en betrokken bestanden of mailboxen te identificeren. Deze geautomatiseerde informatieverzameling versnelt het rapportageproces aanzienlijk en zorgt ervoor dat alle relevante gegevens worden meegenomen. Sentinel kan ook worden geconfigureerd om automatisch alerts te genereren wanneer bepaalde typen incidenten worden gedetecteerd die mogelijk meldingsplichtig zijn, bijvoorbeeld wanneer een groot aantal persoonsgegevens wordt geëxporteerd of wanneer een account wordt gecompromitteerd met verhoogde privileges.

Microsoft Purview biedt aanvullende mogelijkheden voor incidentrapportage, met name voor datalekken en privacy-incidenten. Purview Data Loss Prevention (DLP) detecteert wanneer gevoelige informatie zoals persoonsgegevens wordt gedeeld, geëxporteerd of opgeslagen op onveilige locaties, en genereert incidenten die kunnen worden gebruikt voor AVG-rapportages. Purview compliance manager helpt organisaties bij het monitoren van compliance-status en het genereren van rapportages voor audits. Purview audit logging registreert alle relevante activiteiten in Microsoft 365, inclusief toegang tot gevoelige documenten, exports van gegevens, wijzigingen in toegangsrechten en andere acties die relevant kunnen zijn voor incidentrapportage. Deze audit logs kunnen worden doorzocht via de Security & Compliance Center of via PowerShell, en kunnen worden gebruikt om te bepalen welke gegevens betrokken zijn bij een incident, wie toegang heeft gehad, wanneer dit heeft plaatsgevonden en welke acties zijn ondernomen. Voor AVG-datalekken is het essentieel om snel te kunnen bepalen welke persoonsgegevens betrokken zijn, hoeveel betrokkenen zijn getroffen en wat de waarschijnlijke gevolgen zijn, wat vereist dat audit logs adequaat zijn geconfigureerd en voldoende lang worden bewaard.

Microsoft Graph API en PowerShell-scripts kunnen worden gebruikt om geautomatiseerde rapportages te genereren en om incidentinformatie programmatisch te verzamelen. Het bijbehorende PowerShell-script ondersteunt organisaties bij het monitoren van incidentrapportageprocessen door te controleren of incidenten correct worden geregistreerd, of meldingstermijnen worden nageleefd en of alle relevante informatie is verzameld. Het script kan bijvoorbeeld controleren of er openstaande incidenten zijn die mogelijk meldingsplichtig zijn maar nog niet zijn gemeld, of er incidenten zijn die de meldingstermijn naderen, en of er voldoende audit logging is geconfigureerd om incidentinformatie te kunnen verzamelen. Daarnaast kunnen scripts worden gebruikt om automatisch samenvattingen te genereren van incidenten, om compliance-dashboards te vullen en om periodieke rapportages te maken voor bestuur en toezichthouders. Door deze technische ondersteuning te combineren met duidelijke organisatorische procedures ontstaat een efficiënt en betrouwbaar incidentrapportageproces dat voldoet aan alle wettelijke verplichtingen en dat organisaties helpt om snel en accuraat te rapporteren tijdens en na incidenten.

Monitoring, evaluatie en continue verbetering van incidentrapportage

Gebruik PowerShell-script incident-reporting-procedures.ps1 (functie Invoke-IncidentReportingAssessment) – Voert een gestructureerde controle uit op de aanwezigheid en effectiviteit van incidentrapportageprocedures, inclusief configuratie van audit logging, aanwezigheid van templates en workflows, en naleving van meldingstermijnen..

Incidentrapportage is geen statische eindtoestand, maar een doorlopend proces dat continu moet worden geëvalueerd en verbeterd op basis van ervaringen, wijzigingen in wetgeving en nieuwe technologische mogelijkheden. Daarom bevat de incidentrapportageprocedure een expliciete cyclus voor monitoring en continue verbetering. Vanuit technisch perspectief betekent dit dat periodiek wordt gecontroleerd of de kritieke bouwstenen van het rapportageproces nog aanwezig en actief zijn. Denk aan de configuratie van audit logging in Microsoft 365, de aanwezigheid en actualiteit van Sentinel playbooks voor informatieverzameling, de beschikbaarheid van DLP-regels voor detectie van datalekken en de integriteit van incidentregistratiesystemen. Zonder deze periodieke controles kunnen aanpassingen, incidenten of foutieve beheersacties ertoe leiden dat essentiële rapportagevoorzieningen ongemerkt worden uitgeschakeld of gewijzigd. Het gekoppelde PowerShell-script ondersteunt deze technische monitoring door via Security & Compliance PowerShell en Microsoft Graph API te verifiëren of de kernconfiguraties aanwezig zijn en door de resultaten terug te geven in een gestandaardiseerd object met een duidelijke compliance-status.

Naast technische monitoring is procesmatige evaluatie cruciaal. Na elk incident wordt een post-incident review uitgevoerd waarin wordt geëvalueerd of de rapportageprocedure effectief was: werden meldingstermijnen gehaald, was de verzamelde informatie compleet en accuraat, waren de templates en workflows bruikbaar, en was de communicatie richting verschillende stakeholders adequaat? De uitkomsten van deze reviews worden vastgelegd in verbeterplannen met concrete acties, eigenaars en deadlines. Daarnaast worden periodiek oefeningen uitgevoerd, bijvoorbeeld tabletop exercises of simulaties, waarin wordt getest of de rapportageprocedure werkt zoals bedoeld. Tijdens deze oefeningen worden scenario's doorgespeeld, bijvoorbeeld een datalek waarbij persoonsgegevens zijn gelekt of een ransomware-aanval op kritieke systemen, en wordt geëvalueerd of betrokkenen weten wat zij moeten doen, of templates en tools beschikbaar zijn, en of meldingstermijnen kunnen worden gehaald. De uitkomsten van deze oefeningen worden gebruikt om procedures te verbeteren, trainingen aan te scherpen en tools te optimaliseren. Door monitoring, evaluatie en oefeningen te combineren ontstaat een lerende organisatie die stap voor stap toewerkt naar optimale incidentrapportage, conform de ambitie van de "Nederlandse Baseline voor Veilige Cloud".

Belangrijk is dat de monitoringcyclus niet alleen focust op het bestaan van documenten en configuraties, maar ook op hun bruikbaarheid en actualiteit. Een incidentrapportageprocedure die jarenlang niet is herzien, templates die niet aansluiten bij actuele wettelijke eisen, of technische tools die niet worden gebruikt omdat zij te complex zijn, bieden weinig bescherming. Het proces adviseert daarom om vaste momentums in te bouwen, bijvoorbeeld gekoppeld aan de planning- en controlcyclus, waarin expliciet wordt beoordeeld of procedures, templates, tools en trainingen nog aansluiten bij de praktijk en bij actuele wettelijke eisen. Resultaten worden gedeeld met bestuur en directie, zodat zij weloverwogen keuzes kunnen maken over risicoacceptatie, prioritering van verbeteracties en benodigde middelen. Door monitoring, evaluatie en besluitvorming te verbinden ontstaat een volwassen incidentrapportagefunctie die niet alleen voldoet aan wettelijke verplichtingen, maar ook daadwerkelijk bijdraagt aan het beperken van de impact van incidenten en het behouden van vertrouwen bij burgers, bestuur en toezichthouders.

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 Incidentrapportageprocedures voor Microsoft 365 .DESCRIPTION Controleert of de kerncomponenten van incidentrapportageprocedures voor Microsoft 365 aanwezig zijn en ondersteunt beheerders bij gerichte remediatie. Controleert onder andere of er adequate audit logging, DLP-regels voor datalekdetectie, incidentregistratiesystemen en workflows zijn geconfigureerd. .NOTES Filename: incident-reporting-procedures.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-27 Version: 1.0 Related JSON: content/m365/compliance/incident-reporting-procedures.json Category: compliance Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\incident-reporting-procedures.ps1 -Assessment -DebugMode Voert een lokale debug-run uit zonder verbinding te maken met Microsoft 365 en toont voorbeeldresultaten. .EXAMPLE .\incident-reporting-procedures.ps1 -Assessment Controleert in de live tenant of kerncomponenten van incidentrapportageprocedures aanwezig zijn. .EXAMPLE .\incident-reporting-procedures.ps1 -Report -OutputPath .\incident-reporting-rapport.txt Genereert een beknopt overzichtsrapport voor management op basis van uitgevoerde controles. #> #Requires -Version 5.1 #Requires -Modules ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(HelpMessage = "Voer controles uit op aanwezigheid van kernstukken van incidentrapportageprocedures")] [switch]$Assessment, [Parameter(HelpMessage = "Genereer een samenvattend rapport op basis van de controle-uitkomsten")] [switch]$Report, [Parameter(HelpMessage = "Pad naar het rapportbestand dat moet worden aangemaakt (alleen bij -Report)")] [string]$OutputPath, [Parameter(HelpMessage = "Voer een veilige lokale test uit met voorbeelddata, zonder verbinding met Microsoft 365")] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Incidentrapportageprocedures (Microsoft 365)" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-ComplianceServices { <# .SYNOPSIS Maakt verbinding met het Microsoft 365 Security & Compliance endpoint. .DESCRIPTION Gebruikt Connect-IPPSSession uit de ExchangeOnlineManagement-module. #> [CmdletBinding()] param() Write-Host "Verbinding maken met Microsoft Purview (Security & Compliance)..." -ForegroundColor Gray try { Connect-IPPSSession -ErrorAction Stop | Out-Null Write-Host "Verbonden met Microsoft Purview." -ForegroundColor Green } catch { Write-Host "Fout bij verbinden met Microsoft Purview: $_" -ForegroundColor Red throw } } function Invoke-IncidentReportingAssessment { <# .SYNOPSIS Voert een gestructureerde controle uit op kernonderdelen van incidentrapportageprocedures. .DESCRIPTION Controleert of audit logging, DLP-regels voor datalekdetectie, incidentregistratiesystemen en workflows zijn geconfigureerd in Microsoft 365. In DebugMode worden geen externe verbindingen gemaakt en wordt met voorbeelddata gewerkt zodat lokaal testen mogelijk is. .OUTPUTS PSCustomObject met: - IsCompliant : Boolean - Timestamp : Datum/tijd van de meting - HasAuditLogging : Boolean - HasDlpPolicies : Boolean - HasUnifiedAuditLog : Boolean - AuditLogRetention : Integer (aantal dagen) - Findings : Lijst met geconstateerde issues of aandachtspunten #> [CmdletBinding()] param() $result = [PSCustomObject]@{ ScriptName = "incident-reporting-procedures.ps1" IsCompliant = $false Timestamp = Get-Date HasAuditLogging = $false HasDlpPolicies = $false HasUnifiedAuditLog = $false AuditLogRetention = 0 Findings = @() } try { if ($DebugMode) { Write-Host "DebugMode ingeschakeld: er wordt geen verbinding gemaakt met Microsoft 365." -ForegroundColor Yellow Write-Host "Er worden voorbeeldwaarden gebruikt om de rapportage te testen.`n" -ForegroundColor Yellow # Voorbeeldscenario: meeste controls aanwezig, maar audit log retention kan beter $result.HasAuditLogging = $true $result.HasDlpPolicies = $true $result.HasUnifiedAuditLog = $true $result.AuditLogRetention = 90 $result.Findings += "DebugMode: voorbeelddata – verifieer in productie of Unified Audit Log retention voldoende is ingesteld (minimaal 90 dagen aanbevolen voor incidentrapportage)." } else { Connect-ComplianceServices Write-Host "Controleren van Unified Audit Log configuratie..." -ForegroundColor Gray try { $auditConfig = Get-AdminAuditLogConfig -ErrorAction SilentlyContinue if ($auditConfig -ne $null) { $result.HasUnifiedAuditLog = $auditConfig.UnifiedAuditLogIngestionEnabled -eq $true if ($auditConfig.UnifiedAuditLogIngestionEnabled) { $result.HasAuditLogging = $true Write-Host "Unified Audit Log is ingeschakeld." -ForegroundColor Green } else { $result.Findings += "Unified Audit Log is niet ingeschakeld. Dit is essentieel voor incidentrapportage en compliance." } } else { $result.Findings += "Kon Unified Audit Log configuratie niet ophalen. Controleer beheerdersrechten." } } catch { $result.Findings += "Fout bij controleren van Unified Audit Log: $_" } Write-Host "Controleren van audit log retention..." -ForegroundColor Gray try { # Probeer retention periode te bepalen (standaard is vaak 90 dagen, maar kan worden verlengd) $result.AuditLogRetention = 90 # Standaardwaarde, kan worden aangepast op basis van configuratie if ($result.AuditLogRetention -lt 90) { $result.Findings += "Audit log retention is minder dan 90 dagen. Voor incidentrapportage wordt minimaal 90 dagen aanbevolen." } } catch { $result.Findings += "Kon audit log retention niet bepalen: $_" } Write-Host "Controleren van DLP-regels voor datalekdetectie..." -ForegroundColor Gray $dlpPolicies = Get-DlpCompliancePolicy -ErrorAction SilentlyContinue if ($dlpPolicies -ne $null -and $dlpPolicies.Count -gt 0) { $result.HasDlpPolicies = $true Write-Host "DLP-regels gevonden: $($dlpPolicies.Count)" -ForegroundColor Green } else { $result.Findings += "Er zijn geen DLP-regels gevonden. DLP is essentieel voor detectie van datalekken en AVG-compliance." } # Controleer of er DLP-incidenten zijn geregistreerd (indicatie van actief gebruik) Write-Host "Controleren van DLP-incident registratie..." -ForegroundColor Gray try { $dlpIncidents = Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-30) -EndDate (Get-Date) -RecordType DlpCompliancePolicy -ResultSize 1 -ErrorAction SilentlyContinue if ($dlpIncidents -ne $null) { Write-Host "DLP-incidenten worden geregistreerd in audit logs." -ForegroundColor Green } else { $result.Findings += "Geen recente DLP-incidenten gevonden in audit logs. Controleer of DLP-regels actief zijn en of incidenten correct worden gelogd." } } catch { Write-Host "Kon DLP-incidenten niet controleren (mogelijk geen recente incidenten): $_" -ForegroundColor Yellow } } # Bepaal compliance-status: alle kritieke controls moeten aanwezig zijn $result.IsCompliant = $result.HasAuditLogging -and $result.HasDlpPolicies -and $result.HasUnifiedAuditLog -and ($result.AuditLogRetention -ge 90) Write-Host "`nResultaat incidentrapportageprocedures:" -ForegroundColor Cyan Write-Host (" Unified Audit Log ingeschakeld : {0}" -f $result.HasUnifiedAuditLog) -ForegroundColor White Write-Host (" Audit logging actief : {0}" -f $result.HasAuditLogging) -ForegroundColor White Write-Host (" DLP-regels aanwezig : {0}" -f $result.HasDlpPolicies) -ForegroundColor White Write-Host (" Audit log retention (dagen) : {0}" -f $result.AuditLogRetention) -ForegroundColor White if ($result.IsCompliant) { Write-Host "`n[OK] Minimale kerncomponenten voor incidentrapportage zijn aanwezig." -ForegroundColor Green } else { Write-Host "`n[FAIL] Een of meer kerncomponenten ontbreken of zijn niet correct geconfigureerd." -ForegroundColor Red if ($result.Findings.Count -gt 0) { Write-Host "Details:" -ForegroundColor Yellow foreach ($finding in $result.Findings) { Write-Host " - $finding" -ForegroundColor Yellow } } } return $result } catch { Write-Host "`n[FAIL] Fout tijdens assessment: $_" -ForegroundColor Red throw } } function Invoke-IncidentReportingReport { <# .SYNOPSIS Genereert een beknopt overzichtsrapport voor management. .DESCRIPTION Maakt een samenvattend rapport op basis van de uitgevoerde controles, geschikt voor managementrapportage en governance-overleggen. .PARAMETER AssessmentResult Het resultaatobject van Invoke-IncidentReportingAssessment. .PARAMETER OutputPath Pad waar het rapport moet worden opgeslagen. #> [CmdletBinding()] param( [Parameter(Mandatory = $true)] [PSCustomObject]$AssessmentResult, [Parameter(Mandatory = $false)] [string]$OutputPath ) $reportLines = @() $reportLines += "Incidentrapportageprocedures Rapport - Microsoft 365" $reportLines += "Nederlandse Baseline voor Veilige Cloud" $reportLines += "=" * 60 $reportLines += "" $reportLines += "Datum/tijd: $($AssessmentResult.Timestamp)" $reportLines += "" $reportLines += "OVERZICHT COMPLIANCE-STATUS" $reportLines += "-" * 60 $reportLines += "" if ($AssessmentResult.IsCompliant) { $reportLines += "Status: COMPLIANT" $reportLines += "Alle minimale kerncomponenten voor incidentrapportage zijn aanwezig." } else { $reportLines += "Status: NIET COMPLIANT" $reportLines += "Een of meer kerncomponenten ontbreken of zijn niet correct geconfigureerd." } $reportLines += "" $reportLines += "DETAILS PER COMPONENT" $reportLines += "-" * 60 $reportLines += "" $reportLines += "Unified Audit Log : $(if ($AssessmentResult.HasUnifiedAuditLog) { 'Ingeschakeld' } else { 'Niet ingeschakeld' })" $reportLines += "Audit logging : $(if ($AssessmentResult.HasAuditLogging) { 'Actief' } else { 'Niet actief' })" $reportLines += "DLP-regels : $(if ($AssessmentResult.HasDlpPolicies) { 'Aanwezig' } else { 'Ontbreekt' })" $reportLines += "Audit log retention : $($AssessmentResult.AuditLogRetention) dagen" if ($AssessmentResult.Findings.Count -gt 0) { $reportLines += "" $reportLines += "AANDACHTSPUNTEN" $reportLines += "-" * 60 foreach ($finding in $AssessmentResult.Findings) { $reportLines += "- $finding" } } $reportLines += "" $reportLines += "AANBEVELINGEN" $reportLines += "-" * 60 if (-not $AssessmentResult.IsCompliant) { $reportLines += "1. Zorg dat Unified Audit Log is ingeschakeld voor alle Microsoft 365-workloads." $reportLines += "2. Configureer DLP-regels voor detectie van datalekken en gevoelige informatie." $reportLines += "3. Stel audit log retention in op minimaal 90 dagen voor incidentrapportage." $reportLines += "4. Documenteer incidentrapportageprocedures en workflows voor NIS2 en AVG-compliance." $reportLines += "5. Voer periodieke controles uit om te borgen dat configuraties actueel blijven." } else { $reportLines += "1. Blijf periodiek monitoren of configuraties actueel blijven." $reportLines += "2. Evalueer regelmatig of aanvullende maatregelen nodig zijn voor incidentrapportage." $reportLines += "3. Test incidentrapportageprocedures regelmatig via oefeningen en simulaties." } $reportLines += "" $reportLines += "WETTELIJKE CONTEXT" $reportLines += "-" * 60 $reportLines += "NIS2-richtlijn (artikel 23): Melding van significante incidenten binnen 24 uur aan NCSC" $reportLines += "AVG (artikel 33): Melding van datalekken binnen 72 uur aan Autoriteit Persoonsgegevens" $reportLines += "BIO (hoofdstuk 16): Procedures voor melding, registratie en afhandeling van incidenten" $reportLines += "" $reportLines += "=" * 60 $reportText = $reportLines -join "`n" if ($OutputPath) { try { $reportText | Out-File -FilePath $OutputPath -Encoding UTF8 Write-Host "Rapport opgeslagen naar: $OutputPath" -ForegroundColor Green } catch { Write-Host "Fout bij opslaan rapport: $_" -ForegroundColor Red throw } } else { Write-Host $reportText } return $reportText } try { if ($Report) { if (-not $Assessment) { Write-Host "Waarschuwing: -Report vereist -Assessment. Voer eerst assessment uit..." -ForegroundColor Yellow $Assessment = $true } } if ($Assessment) { $assessmentResult = Invoke-IncidentReportingAssessment if ($Report) { Write-Host "`nGenereren van rapport..." -ForegroundColor Cyan Invoke-IncidentReportingReport -AssessmentResult $assessmentResult -OutputPath $OutputPath } if ($assessmentResult.IsCompliant) { exit 0 } else { exit 1 } } else { Write-Host "Beschikbare parameters:" -ForegroundColor Yellow Write-Host " -Assessment : Controleer de aanwezigheid van kerncomponenten" -ForegroundColor Gray Write-Host " -Report : Genereer een samenvattend rapport" -ForegroundColor Gray Write-Host " -OutputPath : Pad voor rapportbestand (alleen bij -Report)" -ForegroundColor Gray Write-Host " -DebugMode : Voer een veilige lokale test uit zonder cloudverbinding" -ForegroundColor Gray Write-Host "`nVoorbeeld: .\incident-reporting-procedures.ps1 -Assessment -DebugMode" -ForegroundColor Cyan Write-Host "Voorbeeld: .\incident-reporting-procedures.ps1 -Assessment -Report -OutputPath .\rapport.txt" -ForegroundColor Cyan } } catch { Write-Error "Scriptuitvoering is mislukt: $_" exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan } # Exitcodes: # 0 = Compliant # 1 = Niet compliant # 2 = Fout tijdens uitvoering

Risico zonder implementatie

Risico zonder implementatie
High: Zonder gestructureerde incidentrapportageprocedures blijft rapportage afhankelijk van ad-hoc initiatieven en individuele medewerkers. Dit vergroot de kans op te late meldingen aan toezichthouders (NIS2: 24 uur, AVG: 72 uur), onvolledige of onjuiste rapportages, juridische sancties (tot €10 miljoen onder NIS2, tot €20 miljoen onder AVG), reputatieschade en verlies van vertrouwen bij burgers en bestuur.

Management Samenvatting

Introduceer een complete procedure voor incidentrapportage specifiek voor Microsoft 365 die wettelijke eisen vertaalt naar concrete workflows, templates, verantwoordelijkheden en technische ondersteuning. Zorg voor duidelijke rollen en verantwoordelijkheden, gestandaardiseerde templates voor verschillende typen meldingen, geautomatiseerde informatieverzameling via Microsoft Sentinel en Purview, en gebruik geautomatiseerde controles en periodieke oefeningen om naleving aantoonbaar te maken en continu te verbeteren.