Geautomatiseerde Compliance Assessments In Microsoft 365: Continue Monitoring En Verantwoording

💼 Management Samenvatting

Geautomatiseerde compliance assessments vormen de ruggengraat van aantoonbare naleving in Microsoft 365. In plaats van handmatige controles en ad-hoc audits, maken geautomatiseerde assessments het mogelijk om continu te monitoren of de tenant voldoet aan relevante normen zoals de Baseline Informatiebeveiliging Overheid (BIO), de Algemene Verordening Gegevensbescherming (AVG) en de NIS2-richtlijn. Voor Nederlandse overheidsorganisaties zijn deze assessments onmisbaar om periodiek te kunnen rapporteren aan bestuurders, toezichthouders en stakeholders over de compliance-status en om tijdig te kunnen ingrijpen wanneer configuraties afwijken van de afgesproken standaarden.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
100u (tech: 60u)
Van toepassing op:
M365
Microsoft Purview
Compliance Manager
Publieke Sector
Overheidsorganisaties

De complexiteit van Microsoft 365 compliance neemt snel toe. Organisaties moeten voldoen aan tientallen verschillende normen en frameworks, elk met eigen controles, bewijseisen en rapportageverplichtingen. Handmatige assessments zijn tijdrovend, foutgevoelig en geven slechts een momentopname. Bovendien veranderen configuraties in Microsoft 365 continu: nieuwe policies worden toegevoegd, bestaande instellingen worden aangepast, en workloads worden uitgebreid. Zonder geautomatiseerde assessments ontstaan blinde vlekken: organisaties denken compliant te zijn, maar ontdekken pas tijdens een audit dat kritieke instellingen zijn gewijzigd of dat nieuwe functionaliteit niet is meegenomen in het compliance-kader. Geautomatiseerde assessments lossen dit op door periodiek, objectief en reproduceerbaar te controleren of alle vereiste maatregelen aanwezig zijn, correct zijn geconfigureerd en actief zijn. Dit versnelt niet alleen de verantwoording richting bestuurders en toezichthouders, maar maakt het ook mogelijk om proactief te handelen wanneer afwijkingen worden geconstateerd, voordat deze leiden tot compliance-incidenten of audit-bevindingen.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, Microsoft Purview Compliance Manager
Connection: Connect-MgGraph, Connect-IPPSSession
Required Modules: Microsoft.Graph, ExchangeOnlineManagement

Implementatie

Geautomatiseerde compliance assessments in Microsoft 365 omvatten een gestructureerd proces waarbij technische configuraties, policies en instellingen periodiek worden gecontroleerd tegen vooraf vastgestelde criteria. Dit artikel beschrijft hoe Nederlandse overheidsorganisaties geautomatiseerde assessments inrichten met behulp van Microsoft Purview Compliance Manager, PowerShell-scripts en geïntegreerde monitoring. Centraal staat de vraag hoe assessments worden ontworpen, welke controles worden uitgevoerd, hoe resultaten worden geïnterpreteerd en gerapporteerd, en hoe bevindingen worden gebruikt voor continue verbetering. We gaan in op de integratie met bestaande compliance-frameworks, de rol van Microsoft Compliance Manager als centrale tool, en de wijze waarop geautomatiseerde assessments worden gecombineerd met handmatige validaties en procesaudits. Het resultaat is een volwassen compliance-monitoringsysteem dat organisaties in staat stelt om aantoonbaar te voldoen aan relevante normen en tijdig te kunnen reageren op wijzigingen in de Microsoft 365-omgeving.

Ontwerp van geautomatiseerde assessments: criteria en scope

Het ontwerp van geautomatiseerde compliance assessments begint met het expliciet vastleggen van welke normen en frameworks relevant zijn voor de organisatie en welke controles daarbij horen. Voor Nederlandse overheidsorganisaties zijn dit typisch de Baseline Informatiebeveiliging Overheid (BIO), de Algemene Verordening Gegevensbescherming (AVG), de NIS2-richtlijn, sectorale normen zoals de Baseline Informatiebeveiliging Rijksdienst (BIR) of gemeentelijke varianten, en mogelijk ISO 27001 of andere certificeringskaders. Per norm wordt vastgelegd welke specifieke controles relevant zijn voor Microsoft 365 en hoe deze technisch kunnen worden geverifieerd. Een BIO-controle rond logging wordt bijvoorbeeld vertaald naar een technische check of Unified Audit Log is ingeschakeld, of bewaartermijnen voor logs zijn geconfigureerd, en of toegang tot logs adequaat is beveiligd. Een AVG-controle rond dataminimalisatie wordt vertaald naar verificatie of retention policies zijn ingesteld, of sensitivity labels worden gebruikt voor classificatie, en of DLP-regels actief zijn om onnodige dataverwerking te voorkomen.

Een belangrijk uitgangspunt bij het ontwerp is dat niet alle controles automatiseerbaar zijn. Sommige aspecten van compliance, zoals de kwaliteit van beleidsdocumenten, de effectiviteit van trainingen, of de adequaatheid van procesbeschrijvingen, vereisen handmatige beoordeling. Geautomatiseerde assessments focussen daarom op technische controles die objectief kunnen worden geverifieerd via API's, PowerShell-cmdlets of configuratiechecks. Het assessment-ontwerp maakt expliciet onderscheid tussen geautomatiseerde controles (die periodiek kunnen worden uitgevoerd zonder menselijke tussenkomst) en handmatige validaties (die bijvoorbeeld jaarlijks worden uitgevoerd door compliance-officers of auditors). Door deze scheiding helder te maken, ontstaat een realistisch beeld van wat geautomatiseerd kan worden gemonitord en waar aanvullende processen nodig zijn.

De scope van assessments moet ook expliciet worden vastgelegd. Dit omvat niet alleen welke Microsoft 365-workloads worden meegenomen (Exchange Online, SharePoint, Teams, OneDrive, enzovoort), maar ook welke configuratiescenario's worden getest. Bijvoorbeeld: worden alleen tenantbrede policies gecontroleerd, of ook site-specifieke of mailbox-specifieke instellingen? Worden alleen actieve configuraties getest, of ook de aanwezigheid van back-up- en herstelprocedures? Door de scope expliciet te documenteren voorkomt de organisatie dat assessments onvolledig zijn of dat er verwarring ontstaat over wat wel en niet wordt gemonitord. Het assessment-ontwerp beschrijft ook de frequentie van controles: dagelijks voor kritieke configuraties, wekelijks voor belangrijke policies, maandelijks voor overzichtelijke compliance-checks, en jaarlijks voor uitgebreide assessments die handmatige validaties combineren met geautomatiseerde controles.

Microsoft Purview Compliance Manager als centrale tool

Microsoft Purview Compliance Manager biedt een gestructureerd platform voor het beheren van compliance-assessments binnen Microsoft 365. Compliance Manager bevat vooraf geconfigureerde assessment-templates voor veelvoorkomende normen zoals ISO 27001, NIST, GDPR (AVG) en sectorale frameworks. Voor Nederlandse overheidsorganisaties is Compliance Manager waardevol omdat het een centrale plek biedt om alle compliance-activiteiten te beheren, van het toewijzen van controles aan eigenaren tot het bijhouden van implementatiestatus en het genereren van rapportages. Compliance Manager werkt met een scoresysteem waarbij per controle wordt aangegeven of deze is geïmplementeerd, gedeeltelijk geïmplementeerd, of nog niet is aangepakt. Dit geeft bestuurders en compliance-officers snel inzicht in de algehele compliance-status en helpt bij het prioriteren van verbeteracties.

Een belangrijk kenmerk van Compliance Manager is dat het onderscheid maakt tussen Microsoft-verantwoordelijkheden (controls die Microsoft als cloudprovider afdekt) en klantverantwoordelijkheden (controls die de organisatie zelf moet implementeren). Voor Microsoft 365 betekent dit bijvoorbeeld dat Microsoft verantwoordelijk is voor de fysieke beveiliging van datacenters, de beschikbaarheid van services en de encryptie van data in transit, terwijl de organisatie zelf verantwoordelijk is voor het configureren van toegangscontroles, het instellen van logging, het implementeren van DLP-regels en het beheren van gebruikersrechten. Compliance Manager helpt organisaties om deze verdeling helder te maken en om te focussen op die controles waar zij zelf eigenaarschap over hebben. Voor geautomatiseerde assessments betekent dit dat scripts en monitoringtools vooral gericht zijn op het verifiëren van klantverantwoordelijkheden, terwijl Microsoft-verantwoordelijkheden worden gemonitord via Microsoft's eigen compliance-rapportages en certificeringen.

Compliance Manager kan ook worden gebruikt om custom assessments te maken voor normen die niet standaard zijn opgenomen, zoals de BIO of sectorspecifieke kaders. Organisaties kunnen dan zelf controles toevoegen, deze koppelen aan Microsoft 365-configuraties, en de implementatiestatus bijhouden. Dit maakt Compliance Manager flexibel genoeg om te worden aangepast aan de specifieke behoeften van Nederlandse overheidsorganisaties. Het gekoppelde PowerShell-script ondersteunt deze aanpak door periodiek de status van relevante configuraties op te halen en deze te vergelijken met de verwachte instellingen zoals vastgelegd in Compliance Manager of in interne compliance-documentatie. Door Compliance Manager te combineren met geautomatiseerde verificatiescripts ontstaat een krachtig systeem voor continue compliance-monitoring.

Geautomatiseerde verificatie van technische controles

De kern van geautomatiseerde assessments ligt in de technische verificatie van configuraties en policies. Dit gebeurt via PowerShell-scripts die verbinding maken met Microsoft Graph API, Microsoft Purview (Security & Compliance PowerShell) en andere management-interfaces om de actuele status van instellingen op te halen. Het script controleert bijvoorbeeld of Unified Audit Log is ingeschakeld, of er DLP-policies zijn geconfigureerd, of retention policies actief zijn, of sensitivity labels zijn gepubliceerd, of Conditional Access policies zijn ingesteld, en of er adequate logging is voor kritieke activiteiten. Per controle wordt een duidelijke pass/fail-criteria vastgesteld: bijvoorbeeld 'Unified Audit Log moet ingeschakeld zijn' of 'Er moet minimaal één actieve DLP-policy aanwezig zijn voor bescherming van persoonsgegevens'. Door deze criteria expliciet te maken, ontstaat een objectieve, reproduceerbare manier om compliance te meten.

Een uitdaging bij geautomatiseerde verificatie is dat niet alle controles binair zijn (aan/uit). Sommige controles vereisen een beoordeling van de kwaliteit of volledigheid van configuraties. Bijvoorbeeld: het is niet voldoende om te controleren of er DLP-regels bestaan; de assessment moet ook verifiëren of deze regels adequaat zijn voor de organisatie (bijvoorbeeld of ze gevoelige persoonsgegevens zoals BSN-nummers beschermen) en of ze actief zijn toegepast op relevante workloads. Het script moet daarom niet alleen de aanwezigheid van policies controleren, maar ook de scope, de configuratie en de effectiviteit. Dit vereist meer geavanceerde logica die policies analyseert, regels evalueert en de samenhang tussen verschillende configuraties beoordeelt. Het gekoppelde PowerShell-script is ontworpen om deze complexiteit te ondersteunen door gestructureerde checks uit te voeren en gedetailleerde rapportages te genereren die niet alleen aangeven of iets aanwezig is, maar ook of het adequaat is geconfigureerd.

Geautomatiseerde verificatie moet ook rekening houden met uitzonderingen en gecompenseerde controles. Soms is het technisch niet mogelijk of praktisch niet wenselijk om een specifieke controle exact zoals beschreven te implementeren. In dat geval kan een organisatie kiezen voor een alternatieve maatregel (een gecompenseerde controle) die hetzelfde beveiligingsniveau biedt. Het assessment-script moet daarom flexibel genoeg zijn om uitzonderingen te accepteren wanneer deze formeel zijn goedgekeurd en gedocumenteerd. Dit kan bijvoorbeeld door middel van een whitelist van geaccepteerde uitzonderingen, of door het script te configureren met organisatiespecifieke regels die bepaalde controles als optioneel markeren wanneer alternatieve maatregelen zijn geïmplementeerd. Door deze flexibiliteit in te bouwen, blijft het assessment praktisch bruikbaar terwijl het toch objectief en controleerbaar blijft.

Rapportage, remediatie en continue verbetering

Gebruik PowerShell-script automated-assessments.ps1 (functie Invoke-Monitoring) – Voert geautomatiseerde compliance assessments uit door technische configuraties in Microsoft 365 te verifiëren tegen vooraf vastgestelde criteria. Ondersteunt zowel veilige lokale debug-tests als live controles in de tenant..

De waarde van geautomatiseerde assessments wordt pas volledig benut wanneer resultaten worden gebruikt voor gerichte actie. Het assessment-script genereert daarom gestructureerde rapportages die duidelijk aangeven welke controles zijn geslaagd, welke zijn gefaald, en welke aandachtspunten er zijn. Deze rapportages kunnen worden geëxporteerd naar verschillende formaten (JSON, CSV, HTML) voor verdere analyse, worden geïmporteerd in dashboards of GRC-tools, of worden gebruikt als input voor Compliance Manager. Belangrijk is dat rapportages niet alleen technische details bevatten, maar ook context geven: waarom is een controle relevant, wat is de impact als deze ontbreekt, en welke stappen zijn nodig om te remediëren? Door deze informatie te combineren met prioritering (bijvoorbeeld op basis van risico of compliance-impact) kunnen organisaties efficiënt werken aan het oplossen van bevindingen.

Remediatie van bevindingen uit assessments moet worden ondersteund door duidelijke procedures en verantwoordelijkheden. Het assessment-script kan aangeven welke configuraties ontbreken of incorrect zijn, maar de daadwerkelijke wijziging moet worden uitgevoerd door bevoegde beheerders via de juiste goedkeuringsprocessen. Het script ondersteunt dit door concrete aanwijzingen te geven over welke PowerShell-cmdlets of configuratiestappen nodig zijn, maar voert zelf geen automatische wijzigingen door zonder expliciete goedkeuring. Dit voorkomt dat assessments leiden tot onbedoelde configuratiewijzigingen en zorgt ervoor dat alle changes via het reguliere change management-proces verlopen. Voor organisaties die verder willen gaan met geautomatiseerde remediatie, kan het script worden uitgebreid met WhatIf-functionaliteit die toont welke wijzigingen zouden worden doorgevoerd, of met goedkeuringsworkflows die automatische remediatie mogelijk maken voor laag-risico wijzigingen.

Continue verbetering van het assessment-proces zelf is essentieel. Organisaties moeten periodiek evalueren of de controles nog relevant zijn, of nieuwe controles moeten worden toegevoegd (bijvoorbeeld wanneer nieuwe Microsoft 365-functionaliteit wordt geactiveerd), en of de criteria nog aansluiten bij de actuele normen en wetgeving. Het assessment-script moet daarom modulair zijn opgezet, zodat nieuwe controles eenvoudig kunnen worden toegevoegd zonder de bestaande logica te verstoren. Daarnaast moeten resultaten worden gebruikt om trends te identificeren: zijn er bepaalde configuraties die regelmatig afwijken, zijn er patronen in bevindingen die wijzen op structurele problemen, en welke verbeteracties hebben het meeste effect gehad? Door deze feedbackloop te sluiten, evolueert het assessment-systeem mee met de organisatie en blijft het relevant en effectief voor de lange termijn.

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 Geautomatiseerde compliance assessments voor Microsoft 365 .DESCRIPTION Voert geautomatiseerde compliance assessments uit door technische configuraties in Microsoft 365 te verifiëren tegen vooraf vastgestelde criteria. Controleert onder andere of logging is ingeschakeld, DLP-policies aanwezig zijn, retention policies zijn geconfigureerd en sensitivity labels zijn gepubliceerd. Ondersteunt beheerders bij gerichte remediatie van ontbrekende componenten. .NOTES Filename: automated-assessments.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-15 Version: 1.0 Related JSON: content/m365/compliance/automated-assessments.json Category: compliance Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\automated-assessments.ps1 -Monitoring -DebugMode Voert een lokale debug-run uit zonder verbinding te maken met Microsoft 365 en toont voorbeeldresultaten. .EXAMPLE .\automated-assessments.ps1 -Monitoring Controleert in de live tenant of kerncomponenten van compliance-assessments correct zijn geconfigureerd. .EXAMPLE .\automated-assessments.ps1 -Remediation -WhatIf Toont welke handmatige of gescripte stappen nodig zijn om ontbrekende componenten te herstellen, zonder daadwerkelijk wijzigingen door te voeren. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph, ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(HelpMessage = "Monitor huidige configuratie van compliance-assessments")] [switch]$Monitoring, [Parameter(HelpMessage = "Ondersteun gerichte remediatie van ontbrekende componenten")] [switch]$Remediation, [Parameter(HelpMessage = "Toon welke actie zou worden uitgevoerd zonder wijzigingen aan te brengen")] [switch]$WhatIf, [Parameter(HelpMessage = "Voer een lokale debug-run uit zonder verbinding met Microsoft 365")] [switch]$DebugMode, [Parameter(HelpMessage = "Gereserveerd voor toekomstig gebruik, geen automatische rollback")] [switch]$Revert ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Geautomatiseerde compliance assessments (M365)" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Test-Compliance { <# .SYNOPSIS Bepaalt of de minimale bouwstenen van geautomatiseerde assessments aanwezig zijn. .DESCRIPTION Wrapper rond Invoke-Monitoring die uitsluitend de compliance-status retourneert. .OUTPUTS PSCustomObject met IsCompliant en detailinformatie. #> [CmdletBinding()] param() return Invoke-Monitoring } function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met benodigde Microsoft services voor compliance assessments. .DESCRIPTION Verbindt met Microsoft Graph API en Microsoft Purview (Security & Compliance). #> [CmdletBinding()] param() Write-Host "Controleren van Microsoft Graph verbinding..." -ForegroundColor Gray try { $context = Get-MgContext -ErrorAction SilentlyContinue if (-not $context) { Write-Host "Verbinding maken met Microsoft Graph..." -ForegroundColor Yellow Connect-MgGraph -Scopes "AuditLog.Read.All", "Policy.Read.All", "Directory.Read.All" -ErrorAction Stop Write-Host "Verbonden met Microsoft Graph" -ForegroundColor Green } else { Write-Verbose "Reeds verbonden met Microsoft Graph" } } catch { Write-Warning "Kon niet verbinden met Microsoft Graph (sommige checks kunnen falen): $_" } Write-Host "Controleren van Microsoft Purview verbinding..." -ForegroundColor Gray try { $session = Get-PSSession | Where-Object { $_.ConfigurationName -eq "Microsoft.Exchange" -and $_.State -eq "Opened" } if (-not $session) { Write-Host "Verbinding maken met Microsoft Purview (Security & Compliance)..." -ForegroundColor Yellow Connect-IPPSSession -ErrorAction Stop | Out-Null Write-Host "Verbonden met Microsoft Purview" -ForegroundColor Green } else { Write-Verbose "Reeds verbonden met Microsoft Purview" } } catch { Write-Warning "Kon niet verbinden met Microsoft Purview (sommige checks kunnen falen): $_" } } function Invoke-Monitoring { <# .SYNOPSIS Controleert de aanwezigheid en configuratie van kerncomponenten voor geautomatiseerde compliance assessments. .DESCRIPTION Beoordeelt of logging is ingeschakeld, DLP-policies aanwezig zijn, retention policies zijn geconfigureerd, sensitivity labels zijn gepubliceerd en andere kritieke compliance-componenten correct zijn ingesteld. In DebugMode worden geen externe verbindingen gemaakt en wordt met voorbeelddata gewerkt. .OUTPUTS PSCustomObject met: - IsCompliant : Boolean - Timestamp : Datum/tijd van de meting - AuditLoggingEnabled : Boolean - HasDlpPolicies : Boolean - HasRetentionPolicies : Boolean - HasSensitivityLabels : Boolean - HasComplianceManager : Boolean - Findings : Lijst met geconstateerde issues of aandachtspunten #> [CmdletBinding()] param() $result = [PSCustomObject]@{ ScriptName = "automated-assessments.ps1" IsCompliant = $false Timestamp = Get-Date AuditLoggingEnabled = $false HasDlpPolicies = $false HasRetentionPolicies = $false HasSensitivityLabels = $false HasComplianceManager = $false 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 componenten aanwezig, maar compliance manager configuratie kan beter $result.AuditLoggingEnabled = $true $result.HasDlpPolicies = $true $result.HasRetentionPolicies = $true $result.HasSensitivityLabels = $true $result.HasComplianceManager = $false $result.Findings += "DebugMode: voorbeelddata – verifieer in productie of Compliance Manager assessments zijn geconfigureerd." } else { Connect-RequiredServices Write-Host "Controleren van audit logging..." -ForegroundColor Gray try { $auditConfig = Get-AdminAuditLogConfig -ErrorAction SilentlyContinue $result.AuditLoggingEnabled = ($auditConfig -ne $null -and ($auditConfig.UnifiedAuditLogIngestionEnabled -or $auditConfig.AdminAuditLogEnabled)) } catch { Write-Verbose "Kon audit logging configuratie niet ophalen: $_" } Write-Host "Controleren van DLP-policies..." -ForegroundColor Gray try { $dlpPolicies = Get-DlpCompliancePolicy -ErrorAction SilentlyContinue $result.HasDlpPolicies = ($dlpPolicies -ne $null -and $dlpPolicies.Count -gt 0) } catch { Write-Verbose "Kon DLP-policies niet ophalen: $_" } Write-Host "Controleren van retention policies..." -ForegroundColor Gray try { $retentionPolicies = Get-RetentionCompliancePolicy -ErrorAction SilentlyContinue $labelPolicies = Get-LabelPolicy -ErrorAction SilentlyContinue $result.HasRetentionPolicies = ( ($retentionPolicies -ne $null -and $retentionPolicies.Count -gt 0) -or ($labelPolicies -ne $null -and $labelPolicies.Count -gt 0) ) } catch { Write-Verbose "Kon retention policies niet ophalen: $_" } Write-Host "Controleren van sensitivity labels..." -ForegroundColor Gray try { $sensitivityLabels = Get-Label -ErrorAction SilentlyContinue $result.HasSensitivityLabels = ($sensitivityLabels -ne $null -and $sensitivityLabels.Count -gt 0) } catch { Write-Verbose "Kon sensitivity labels niet ophalen: $_" } Write-Host "Controleren van Compliance Manager configuratie..." -ForegroundColor Gray try { # Compliance Manager wordt beheerd via de webinterface, maar we kunnen controleren of # er compliance-gerelateerde configuraties zijn die wijzen op actief gebruik $alertPolicies = Get-ProtectionAlert -ErrorAction SilentlyContinue $result.HasComplianceManager = ($alertPolicies -ne $null -and $alertPolicies.Count -gt 0) } catch { Write-Verbose "Kon Compliance Manager indicatoren niet verifiëren: $_" } if (-not $result.AuditLoggingEnabled) { $result.Findings += "Audit logging is niet ingeschakeld. Schakel Unified Audit Log in om compliance-activiteiten te kunnen monitoren en verantwoorden." } if (-not $result.HasDlpPolicies) { $result.Findings += "Er zijn geen DLP-policies gevonden. Configureer DLP-regels om gevoelige data te beschermen en compliance-vereisten af te dwingen." } if (-not $result.HasRetentionPolicies) { $result.Findings += "Er zijn geen retention policies of label policies gevonden. Configureer retentiebeleid om bewaartermijnen af te dwingen en dataminimalisatie te ondersteunen." } if (-not $result.HasSensitivityLabels) { $result.Findings += "Er zijn geen sensitivity labels gevonden. Implementeer sensitivity labels om data te classificeren en automatische bescherming toe te passen." } if (-not $result.HasComplianceManager) { $result.Findings += "Compliance Manager assessments kunnen helpen om compliance-status gestructureerd te beheren. Overweeg het configureren van assessments in Microsoft Purview Compliance Manager." } } # Assessment is compliant als kerncomponenten aanwezig zijn $result.IsCompliant = $result.AuditLoggingEnabled -and $result.HasDlpPolicies -and $result.HasRetentionPolicies -and $result.HasSensitivityLabels Write-Host "`nResultaat geautomatiseerde compliance assessments:" -ForegroundColor Cyan Write-Host (" Audit logging ingeschakeld : {0}" -f $result.AuditLoggingEnabled) -ForegroundColor White Write-Host (" DLP-policies aanwezig : {0}" -f $result.HasDlpPolicies) -ForegroundColor White Write-Host (" Retention policies geconfigureerd: {0}" -f $result.HasRetentionPolicies) -ForegroundColor White Write-Host (" Sensitivity labels gepubliceerd : {0}" -f $result.HasSensitivityLabels) -ForegroundColor White Write-Host (" Compliance Manager indicatoren : {0}" -f $result.HasComplianceManager) -ForegroundColor White if ($result.IsCompliant) { Write-Host "`n[OK] Minimale kerncomponenten voor geautomatiseerde compliance assessments 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 monitoring: $_" -ForegroundColor Red throw } } function Invoke-Remediation { <# .SYNOPSIS Ondersteunt gerichte remediatie van ontbrekende compliance assessment componenten. .DESCRIPTION Voert zelf geen grootschalige wijzigingen door, maar geeft beheerders concrete aanwijzingen en voorbeeldcmdlets om ontbrekende logging, DLP-policies, retention policies en sensitivity labels in te richten. In DebugMode wordt uitsluitend de logica en messaging getest zonder verbinding met Microsoft 365. #> [CmdletBinding()] param() try { if ($DebugMode) { Write-Host "DebugMode: remediatiestappen worden alleen als voorbeeld getoond, er worden geen verbindingen gemaakt." -ForegroundColor Yellow } else { Connect-RequiredServices } Write-Host "`nRemediatie-advies voor geautomatiseerde compliance assessments:" -ForegroundColor Cyan Write-Host "`n1. Audit logging" -ForegroundColor White Write-Host " - Schakel Unified Audit Log in om alle compliance-gerelateerde activiteiten te loggen." -ForegroundColor Gray Write-Host " - Voorbeeld (PowerShell):" -ForegroundColor Gray Write-Host " Set-AdminAuditLogConfig -UnifiedAuditLogIngestionEnabled `$true" -ForegroundColor DarkGray Write-Host "`n2. DLP-policies" -ForegroundColor White Write-Host " - Configureer DLP-policies om gevoelige persoonsgegevens te beschermen en compliance-vereisten af te dwingen." -ForegroundColor Gray Write-Host " - Voorbeeld (PowerShell, vereenvoudigd):" -ForegroundColor Gray Write-Host " New-DlpCompliancePolicy -Name 'NBVC-DLP-Basis' -Mode TestWithoutNotifications" -ForegroundColor DarkGray Write-Host " New-DlpComplianceRule -Policy 'NBVC-DLP-Basis' -ContentContainsSensitiveInformation @{Name='Dutch Citizen Service Number'} -BlockAccess `$true" -ForegroundColor DarkGray Write-Host "`n3. Retention policies" -ForegroundColor White Write-Host " - Configureer retention policies of label policies om bewaartermijnen af te dwingen en dataminimalisatie te ondersteunen." -ForegroundColor Gray Write-Host " - Voorbeeld (PowerShell, vereenvoudigd):" -ForegroundColor Gray Write-Host " New-RetentionCompliancePolicy -Name 'NBVC-Retentie-Basis' -ExchangeLocation All -SharePointLocation All" -ForegroundColor DarkGray Write-Host "`n4. Sensitivity labels" -ForegroundColor White Write-Host " - Implementeer sensitivity labels om data te classificeren en automatische bescherming toe te passen." -ForegroundColor Gray Write-Host " - Voorbeeld (PowerShell, vereenvoudigd):" -ForegroundColor Gray Write-Host " New-Label -Name 'NBVC-Vertrouwelijk' -DisplayName 'Vertrouwelijk' -ToolTip 'Beperkte toegang'" -ForegroundColor DarkGray Write-Host "`n5. Compliance Manager assessments" -ForegroundColor White Write-Host " - Configureer assessments in Microsoft Purview Compliance Manager voor gestructureerd beheer van compliance-status." -ForegroundColor Gray Write-Host " - Ga naar Microsoft Purview Compliance Portal en maak assessments aan voor relevante normen (BIO, AVG, NIS2)." -ForegroundColor Gray Write-Host "`n6. Geautomatiseerde monitoring" -ForegroundColor White Write-Host " - Plan periodieke uitvoering van dit script (bijvoorbeeld wekelijks of maandelijks) om compliance-status te monitoren." -ForegroundColor Gray Write-Host " - Integreer resultaten in dashboards of GRC-tools voor continue zichtbaarheid." -ForegroundColor Gray if ($WhatIf) { Write-Host "`nWhatIf: bovenstaande voorbeelden tonen welke acties u zou kunnen uitvoeren. Er zijn geen wijzigingen toegepast." -ForegroundColor Yellow } else { Write-Host "`nLet op: pas bovenstaande voorbeeldcommando's alleen toe na interne afstemming, change-goedkeuring en testen in een acceptatieomgeving." -ForegroundColor Yellow Write-Host "Zorg ervoor dat alle wijzigingen worden gedocumenteerd in uw compliance-framework en compliance assessments." -ForegroundColor Yellow } } catch { Write-Host "`n[FAIL] Fout tijdens remediatie-ondersteuning: $_" -ForegroundColor Red throw } } function Invoke-Revert { <# .SYNOPSIS Plaatshouder voor toekomstig rollback-scenario. .DESCRIPTION Dit script voert geen automatische rollback uit voor compliance assessment configuraties. Rollback van logging, DLP-policies, retention policies en sensitivity labels vereist een zorgvuldige impactanalyse en wordt bij voorkeur handmatig of via change-scripts uitgevoerd. #> [CmdletBinding()] param() Write-Host "`nEr is geen automatische rollback-functionaliteit geïmplementeerd voor dit framework." -ForegroundColor Yellow Write-Host "Documenteer en beheer eventuele wijzigingen via uw reguliere change-managementproces." -ForegroundColor Yellow } try { if ($Revert) { Invoke-Revert } elseif ($Remediation) { Invoke-Remediation } elseif ($Monitoring) { $monitorResult = Invoke-Monitoring if ($monitorResult.IsCompliant) { exit 0 } else { exit 1 } } else { Write-Host "Beschikbare parameters:" -ForegroundColor Yellow Write-Host " -Monitoring : Controleer de aanwezigheid van kerncomponenten" -ForegroundColor Gray Write-Host " -Remediation : Toon remediatie-advies en voorbeeldcmdlets" -ForegroundColor Gray Write-Host " -DebugMode : Voer een veilige lokale test uit zonder cloudverbinding" -ForegroundColor Gray Write-Host " -WhatIf : Toon remediatievoorbeelden zonder uitvoer" -ForegroundColor Gray Write-Host " -Revert : Toon informatie over rollback (geen auto-rollback)" -ForegroundColor Gray Write-Host "`nVoorbeeld: .\automated-assessments.ps1 -Monitoring -DebugMode" -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 geautomatiseerde compliance assessments zijn organisaties afhankelijk van handmatige controles die tijdrovend, foutgevoelig en slechts momentopnames geven. Dit leidt tot blinde vlekken in compliance-monitoring, vertraagde detectie van configuratiefouten, en onvoldoende verantwoording richting bestuurders en toezichthouders.

Management Samenvatting

Implementeer geautomatiseerde compliance assessments in Microsoft 365 met behulp van Microsoft Purview Compliance Manager en PowerShell-scripts. Dit versnelt compliance-monitoring, maakt continue verantwoording mogelijk, en helpt organisaties om proactief te reageren op configuratiewijzigingen voordat deze leiden tot compliance-incidenten.