Privacy Controls Voor Microsoft 365

💼 Management Samenvatting

Privacy controls vormen het fundament onder betrouwbare dienstverlening in de Nederlandse publieke sector. Microsoft 365 biedt een rijk ecosysteem aan beleidsconfiguraties, labels, logging en governance-instrumenten, maar zonder duidelijke structuur en eigenaarschap blijft privacybescherming versnipperd en kwetsbaar. Dit artikel vertaalt wettelijke en organisatorische verwachtingen naar een concreet raamwerk dat direct toepasbaar is binnen de Nederlandse Baseline voor Veilige Cloud.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
200u (tech: 80u)
Van toepassing op:
Microsoft 365
Microsoft Purview
Microsoft Intune
Entra ID
Microsoft Defender

De AVG, BIO, Woo en sectorale richtlijnen leggen nadruk op aantoonbare bescherming van persoonsgegevens. Tegelijkertijd neemt de druk op overheidsorganisaties toe door toegenomen digitale dienstverlening, hybride werkpatronen en ketensamenwerking met leveranciers. Wanneer privacy controls niet uniform zijn ingericht ontstaan inconsistenties tussen applicaties, ontbreekt zicht op datastromen en is het onmogelijk om tijdig te reageren op datalekken of verzoeken van betrokkenen. Dit vergroot niet alleen juridische risico's, maar tast ook het vertrouwen van burgers en toezichthouders aan.

PowerShell Modules Vereist
Primary API: Microsoft Purview Compliance Portal, Microsoft 365 Defender, Entra ID en Intune admin center
Connection: Browser voor beleidsbeheer; Connect-MgGraph en Microsoft Graph PowerShell voor geautomatiseerde controles
Required Modules: Microsoft.Graph.Authentication, Microsoft.Graph.Identity.DirectoryManagement, Microsoft.Graph.Security

Implementatie

Het artikel beschrijft hoe organisaties privacy controls in Microsoft 365 strategisch ontwerpen, technisch implementeren en continu verbeteren. De nadruk ligt op governance, juridische verankering, technische configuraties in Purview en Intune, processen voor dataminimalisatie en betrokkenenrechten, en meetbare monitoring. Het gekoppelde PowerShell-script levert een reproduceerbare controle waarmee beheerders zonder zware afhankelijkheden de belangrijkste privacy-eisen kunnen toetsen, rapporteren en remediëren.

Governancekader en juridische context

Een volwassen privacybesturing start bij het expliciet benoemen van informatiestromen, gegevensverantwoordelijken en verwerkers binnen Microsoft 365. Nederlandse overheidsorganisaties opereren vaak in ketens met gedeelde data en gecombineerde verantwoordelijkheden. Daarom moet het privacy governance board – waarin CISO, FG, CIO en vertegenwoordigers van primaire processen zitting hebben – vastleggen wie welke gegevenscategorieën beheert, welk risiconiveau geldt en welke Microsoft 365-onderdelen worden gebruikt voor verwerking. Deze governancebeslissingen vormen het kader voor technische configuraties: zonder heldere scope ontbreekt de basis om Purview-beleid, meervoudige authenticatie of logging verplicht te stellen. De context moet worden gedocumenteerd in privacybeleid, register van verwerkingsactiviteiten en bijbehorende DPIA’s, zodat duidelijk is hoe Microsoft 365 wordt ingezet en welke controls per dienst noodzakelijk zijn.

De AVG vereist dat organisaties privacy by design en privacy by default toepassen. In Microsoft 365 vertaalt dit zich naar standaardconfiguraties waarin bijvoorbeeld auditing altijd actief is, gevoelige gegevens automatisch worden geclassificeerd en externe delen alleen mogelijk is wanneer passende bescherming is toegepast. Voor Nederlandse overheidsorganisaties betekent dit concreet dat elke nieuwe workload (Teams, SharePoint, Viva, Copilot) een privacy impact beoordeling doorloopt voordat deze breed wordt uitgerold. De beoordeling bepaalt welke gegevens worden verwerkt, welke bewaartermijnen gelden en welke technische controls verplicht worden. Door deze eisen vooraf vast te leggen kunnen beheerteams vanaf dag één consistent beleid afdwingen, in plaats van ad-hoc uitzonderingen te maken wanneer nieuwe diensten al in gebruik zijn.

Een governancekader blijft niet beperkt tot centrale richtlijnen: het moet zijn doorvertaald naar standaarden voor solution architects, ontwikkelteams en leveranciers. Dat betekent onder meer dat projectopdrachten eisen bevatten voor dataminimalisatie, dat toegang via Entra ID altijd onder Conditional Access valt en dat applicaties alleen data opslaan in beheerde locaties. Een change board toetst wijzigingen aan deze standaarden en borgt dat afwijkingen worden gecompenseerd met aanvullende maatregelen. Documentatie van besluiten is essentieel; toezichthouders vragen regelmatig om inzicht in waarom bepaalde risico’s acceptabel zijn geacht. Door besluitvorming en onderliggende analyses vast te leggen in een centrale privacy-architectuurbibliotheek kunnen organisaties aantonen dat keuzes bewust en risicogebaseerd zijn gemaakt.

Tot slot moet governance worden ondersteund met duidelijke KPI’s en rapportagelijnen. Het privacy board bepaalt meetpunten zoals de dekking van gevoeligheidslabels, het percentage te laat afgehandelde rechtenverzoeken of het aantal uitzonderingen op standaardbewaartermijnen. Deze indicatoren worden gekoppeld aan Microsoft 365-rapportages en het PowerShell-script, zodat het bestuur periodiek inzicht krijgt. Door KPI’s te koppelen aan risicoregisters en planning & control-cycli blijft privacyarchitectuur geen projectresultaat maar een continu proces. De combinatie van juridische borging, technische standaarden en zichtbare stuurinformatie vormt het fundament waarop de verdere hoofdstukken voortbouwen.

Technische privacy controls in Microsoft 365

Microsoft Purview biedt krachtige instrumenten om gegevensstromen te classificeren, beveiligen en volgen. Een effectieve privacyarchitectuur definieert minimaal drie lagen gevoeligheidslabels: openbaar, intern en vertrouwelijk/zeer vertrouwelijk. Voor elke laag wordt vastgelegd welke encryptie, watermerken, toegangsbeperkingen en delenregels gelden. Labels worden automatisch toegepast via trainable classifiers of DLP-regels, zodat handmatige fouten worden beperkt. Daarnaast worden retentie- en recordbeheerbeleid gekoppeld aan de labels, zodat bewaartermijnen automatisch worden afgedwongen. Voor verwerkingen met aanvullende eisen (bijvoorbeeld medische gegevens of strafrechtelijke gegevens) worden aparte labels toegevoegd met strengere restricties. Door labels te integreren met SharePoint, Teams, Exchange en OneDrive ontstaat een uniforme privacy- en dataprotectielaag over het hele ecosysteem.

Data Loss Prevention is de tweede pijler. DLP-beleid controleert e-mail, Teams-chats, SharePoint-sites en endpoints op gevoelige data en voorkomt ongewenste exfiltratie. Nederlandse overheden configureren meestal scenario’s voor BSN, gezondheidsinformatie, bijzondere persoonsgegevens en vertrouwelijke beleidsdocumenten. Regels bevatten een duidelijke escalatieroute: eerst een gebruikerswaarschuwing, daarna goedkeuring door een privacy officer en uiteindelijk blokkeren met logging en melding aan het SOC. Endpoint DLP wordt gekoppeld aan Intune-app- en device policies zodat ook offline scenario’s, USB-export of schermprints worden gedetecteerd. Door DLP te combineren met labels worden uitzonderingen beperkt; alleen wanneer data aantoonbaar is beveiligd mogen uitzonderingen worden goedgekeurd.

Toegangsbeheer vormt de derde technische laag. Entra ID Conditional Access policies eisen meervoudige authenticatie, compliant apparaten en restricties voor hoge risico-activiteiten. Voor privacygevoelige workloads worden sessiecontroles via Defender for Cloud Apps toegepast zodat documenten niet kunnen worden gedownload of geprint op onbeheerde apparaten. Intune handhaaft encryptie, wachtwoordbeleid en jailbreak/root-detectie op zowel corporate als BYOD-apparaten. Voor gedeelde werkplekken worden Windows 365 of AVD-sessies gebruikt, waarbij data het datacenter niet verlaat. Door identity, device en session controls te integreren met Purview-beleid ontstaat een sluitende keten: alleen geauthenticeerde gebruikers op vertrouwde apparaten kunnen gevoelige data verwerken binnen gecontroleerde applicaties.

Logging en auditing maken het geheel aantoonbaar. De unified audit log van Microsoft 365 staat standaard aan en bewaart gebeurtenissen minimaal één jaar; voor overheidsorganisaties is zeven jaar de norm, dus wordt Extended Audit ingesteld of worden logs geëxporteerd naar Sentinel of een SIEM met immutabele opslag. Specifieke privacyactiviteiten – zoals het openen van eDiscovery-sets, het wijzigen van DLP-regels of het downloaden van audit-logs – krijgen alarms in Defender en Sentinel. Hierdoor kan de FG real-time meekijken en zien welke medewerkers toegang hebben tot gevoelige datasets. Door logging te koppelen aan bewaarbeleid wordt voldaan aan zowel privacy- als archiefwetgeving.

Gebruik PowerShell-script privacy-controls.ps1 (functie Invoke-PrivacyControlsAssessment) – Inventariseert de configuratie van labels, DLP, Conditional Access en logging op basis van een configuratiebestand en genereert verbeterpunten voor privacy controls..

Dataminimalisatie en rechten van betrokkenen

Privacy controls zijn pas compleet wanneer processen voor dataminimalisatie en gegevensverzoeken naadloos aansluiten op de technische inrichting. Dataminimalisatie betekent dat alleen noodzakelijke gegevens worden verzameld en dat bewaartermijnen strikt worden gehandhaafd. In Microsoft 365 gebeurt dit door standaard sjablonen te gebruiken voor Teams en SharePoint-sites waarin privacylabels, bewaartermijnen en externe deelinstellingen vooraf zijn gedefinieerd. Nieuwe teams krijgen bijvoorbeeld automatisch een retentiebeleid van vijf jaar en staan externe gasten uit totdat een privacy officer expliciet toestemming geeft. Voor projectomgevingen wordt in de provisioning workflow vastgelegd welke persoonsgegevens worden verwerkt, zodat latere audits eenvoudig kunnen controleren of de configuratie overeenkomt met de oorspronkelijke DPIA.

Rechten van betrokkenen (inzage, rectificatie, verwijdering, beperking, overdraagbaarheid) worden ondersteund via Microsoft Purview eDiscovery, audit logging en data subject request workflows. Een volwassen proces kent duidelijke rollen: intake bij het privacyloket, beoordeling door de FG, uitvoering door het Microsoft 365-beheerteam en quality assurance voordat een reactie wordt verstuurd. Microsoft Purview levert tooling om relevante data te zoeken, maar het is aan de organisatie om zoekopdrachten te standaardiseren, filters te documenteren en resultaten veilig te delen. Door standaard queries en exportformats te beheren in een centrale bibliotheek kunnen teams snel en consistent reageren.

Dataverzoeken moeten worden gekoppeld aan logging en registraties, zodat kan worden aangetoond dat deadlines zijn gehaald. Het privacy-controls script kan een register bijhouden waarin verzoeken worden gelogd met status, betrokken systemen en toegepaste maatregelen (bijvoorbeeld anonimisering of het verwijderen van e-mails). Tevens controleert het script of gevoelige data daadwerkelijk is verwijderd door het retentiebeleid op de betreffende mailbox of site te her-evalueren. Hiermee voorkomen organisaties dat verwijderingsverzoeken vanwege een verkeerd beleid toch data achterlaten in back-ups of archieven.

Naast wettelijke verzoeken moet privacy by default ook zichtbaar zijn voor medewerkers en burgers. Gebruikers verdienen transparantie over welke labels zij moeten toepassen, hoe zij gevoelige bestanden moeten delen en welke contactpunten er zijn bij vragen. Daarom hoort communicatie over privacy controls onderdeel te zijn van adoptieprogramma’s. Trainingen tonen bijvoorbeeld hoe Teams automatisch labels toepast, waarom externe delen vaak wordt geblokkeerd en hoe medewerkers uitzonderingen kunnen aanvragen. Dit vergroot het draagvlak en verlaagt de kans dat gebruikers proberen beleid te omzeilen via schaduw-IT.

Monitoring, aantoonbaarheid en continue verbetering

Privacybescherming is nooit klaar; wijzigingen in wetgeving, Microsoft-functies of werkpatronen vragen om permanente evaluatie. Organisaties definiëren daarom een privacy control roadmap met kwartaalreviews. Tijdens zo’n review worden indicatoren bekeken zoals de dekking van labels, het aantal blokkades door DLP, trends in externe share-aanvragen en de performance van rechtenverzoeken. Deze data wordt gevisualiseerd in Power BI-rapporten op basis van exporten uit Purview, Defender en het PowerShell-script. Door de cijfers te koppelen aan risicoscores kunnen bestuurders prioriteiten stellen, bijvoorbeeld extra capaciteit vrijmaken voor het reduceren van achterstanden in DPIA’s of het versneld uitrollen van Endpoint DLP.

Auditeerbaarheid vraagt om herleidbare documentatie. Voor elke privacy control hoort een set bewijsmiddelen beschikbaar te zijn: beleidsteksten, configuratiescreenshots, exporten van labelstatistieken, registraties van verzoeken en resultaten van periodieke controles. Deze documenten worden centraal opgeslagen in een beveiligde SharePoint-site met versiebeheer en toegangslogging. Wanneer de Autoriteit Persoonsgegevens of de Auditdienst Rijk om bewijs vraagt, kan de organisatie binnen enkele uren een compleet dossier aanbieden. Dit voorkomt stressvolle handmatige reconstructies en toont aan dat privacy onderdeel is van de reguliere control-cyclus.

Continue verbetering betekent ook dat lessons learned uit incidenten of datalekken direct leiden tot aanpassingen in beleid en configuratie. Het privacy board hanteert daarom een post-incident review template waarin naast technische oorzaken ook governance- en gebruikersfactoren worden beoordeeld. De uitkomsten worden vertaald naar backlog-items voor het Microsoft 365-team: bijvoorbeeld het aanscherpen van DLP-regels, het toevoegen van een nieuw label of het verbeteren van de rechtenverzoekenworkflow. Door deze verbeterloop vast te leggen ontstaat een aantoonbare PDCA-cyclus die aansluit op ISO 27001 en BIO-eisen.

Gebruik PowerShell-script privacy-controls.ps1 (functie Invoke-PrivacyControlMonitoring) – Voert periodieke metingen uit op basis van de privacy-controls configuratie en levert een rapport met KPI’s, datalekindicatoren en openstaande acties..

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 Privacy controls voor Microsoft 365 beoordelen, monitoren en documenteren. .DESCRIPTION Dit script ondersteunt Nederlandse overheidsorganisaties bij het toetsen van privacy controls binnen Microsoft 365. Het gebruikt een eenvoudig configuratiebestand om de status van gevoeligheidslabels, DLP, Conditional Access, logging en rechtenverzoeken te beoordelen. Dankzij DebugMode kan het script lokaal worden getest zonder verbinding te maken met cloud-API's. .NOTES Filename : privacy-controls.ps1 Author : Nederlandse Baseline voor Veilige Cloud Category : privacy Created : 2025-11-27 .EXAMPLE .\privacy-controls.ps1 -PublishBaseline Maakt een basisconfiguratiebestand aan of werkt dit bij. .EXAMPLE .\privacy-controls.ps1 -Assessment -ReportPath .\rapporten\privacy-controls.json Voert een beoordeling uit en schrijft de resultaten naar een rapportbestand. .EXAMPLE .\privacy-controls.ps1 -Monitoring -DebugMode Draait de monitoringlogica met ingebouwde voorbeelddata voor lokale tests. #> #Requires -Version 5.1 [CmdletBinding()] param( [switch]$Assessment, [switch]$Monitoring, [switch]$PublishBaseline, [string]$ReportPath, [switch]$DebugMode, [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Set-StrictMode -Version Latest Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Privacy Controls Toolkit (Microsoft 365)" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Get-PrivacyConfigPath { $scriptDir = Split-Path -Parent $PSCommandPath return (Join-Path -Path $scriptDir -ChildPath "privacy-controls.config.json") } function Initialize-PrivacyBaseline { $today = (Get-Date).ToString("yyyy-MM-dd") return [ordered]@{ version = "1.0" generated = $today owner = "Privacy board" labels = @( [ordered]@{ name = "Openbaar" encryption = $false autoApply = $false retentionDays = 30 owner = "Communicatie" }, [ordered]@{ name = "Intern" encryption = $true autoApply = $true retentionDays = 365 owner = "CIO-office" }, [ordered]@{ name = "Zeer Vertrouwelijk" encryption = $true autoApply = $true requiresJustification = $true retentionDays = 2555 owner = "CISO/FG" } ) dlpPolicies = @( [ordered]@{ name = "BSN Exchange" workload = "ExchangeOnline" status = "Enabled" severity = "High" }, [ordered]@{ name = "BSN SharePoint" workload = "SharePointOnline" status = "Enabled" severity = "High" }, [ordered]@{ name = "BSN Teams" workload = "Teams" status = "Enabled" severity = "Medium" }, [ordered]@{ name = "BSN Endpoint" workload = "Endpoint" status = "Enabled" severity = "High" } ) conditionalAccess = @( [ordered]@{ name = "Require MFA" requiresMfa = $true requiresCompliantDevice = $false requiresApprovedApp = $true appliesTo = "AllUsers" }, [ordered]@{ name = "Privacy High-Risk" requiresMfa = $true requiresCompliantDevice = $true requiresApprovedApp = $true appliesTo = "HighValueApps" } ) logging = [ordered]@{ unifiedAuditEnabled = $true unifiedAuditRetentionDays = 2555 sentinelExportEnabled = $true dlpIncidentSyncEnabled = $true } dataSubjectRequests = [ordered]@{ owner = "Privacy office" standardDueDays = 30 averageCompletionDays = 21 backlogCount = 0 } } } function Get-PrivacyConfig { param( [switch]$DebugMode ) if ($DebugMode) { return (Initialize-PrivacyBaseline) } $configPath = Get-PrivacyConfigPath if (-not (Test-Path -Path $configPath)) { throw "Geen configuratiebestand gevonden. Voer '.\privacy-controls.ps1 -PublishBaseline' uit of gebruik -DebugMode." } $raw = Get-Content -Path $configPath -Raw return ($raw | ConvertFrom-Json -ErrorAction Stop) } function Save-PrivacyConfig { param( [Parameter(Mandatory = $true)] $Config ) $configPath = Get-PrivacyConfigPath $json = $Config | ConvertTo-Json -Depth 6 if ($WhatIf) { Write-Host "[WhatIf] Configuratie zou worden geschreven naar: $configPath" -ForegroundColor Yellow Write-Host $json return } $json | Out-File -FilePath $configPath -Encoding UTF8 -Force Write-Host "[OK] Configuratie opgeslagen: $configPath" -ForegroundColor Green } function Invoke-PrivacyControlsAssessment { param( [switch]$DebugMode ) $config = Get-PrivacyConfig -DebugMode:$DebugMode $issues = [System.Collections.Generic.List[string]]::new() if ($config.labels.Count -lt 3) { $issues.Add("Er zijn minder dan drie gevoeligheidslabels geregistreerd.") } elseif (-not ($config.labels | Where-Object { $_.name -match 'Vertrouwelijk' -and $_.encryption })) { $issues.Add("Er is geen vertrouwelijk label met encryptie geconfigureerd.") } $requiredDlp = @('ExchangeOnline', 'SharePointOnline', 'Teams', 'Endpoint') foreach ($workload in $requiredDlp) { if (-not ($config.dlpPolicies | Where-Object { $_.workload -eq $workload -and $_.status -eq 'Enabled' })) { $issues.Add("DLP-beleid ontbreekt of staat uit voor workload '$workload'.") } } $highRiskPolicy = $config.conditionalAccess | Where-Object { $_.requiresCompliantDevice -and $_.requiresApprovedApp } if (-not $highRiskPolicy) { $issues.Add("Geen Conditional Access-beleid gevonden dat zowel compliant devices als goedgekeurde apps vereist.") } if (-not $config.logging.unifiedAuditEnabled) { $issues.Add("Unified Audit Log staat niet aan.") } elseif ($config.logging.unifiedAuditRetentionDays -lt 2555) { $issues.Add("Bewaartermijn voor auditlogs is korter dan 7 jaar.") } if ($config.dataSubjectRequests.averageCompletionDays -gt $config.dataSubjectRequests.standardDueDays) { $issues.Add("Gemiddelde afhandeltijd voor rechtenverzoeken overschrijdt de wettelijke termijn.") } if ($config.dataSubjectRequests.backlogCount -gt 0) { $issues.Add("Er staan $($config.dataSubjectRequests.backlogCount) openstaande rechtenverzoeken in de backlog.") } return [PSCustomObject]@{ Script = 'privacy-controls.ps1' Timestamp = Get-Date Labels = $config.labels DlpPolicies = $config.dlpPolicies ConditionalAccess = $config.conditionalAccess Logging = $config.logging DataSubjectRequests = $config.dataSubjectRequests Issues = $issues IsHealthy = ($issues.Count -eq 0) } } function Invoke-PrivacyControlMonitoring { param( [switch]$DebugMode, [string]$ReportPath ) $assessment = Invoke-PrivacyControlsAssessment -DebugMode:$DebugMode $summary = [ordered]@{ timestamp = $assessment.Timestamp healthy = $assessment.IsHealthy issueCount = $assessment.Issues.Count compliantLabelCount = ($assessment.Labels | Where-Object { $_.encryption }).Count enforcedDlpPolicies = ($assessment.DlpPolicies | Where-Object { $_.status -eq 'Enabled' }).Count conditionalPolicies = $assessment.ConditionalAccess.Count auditRetentionDays = $assessment.Logging.unifiedAuditRetentionDays avgDsRequestDays = $assessment.DataSubjectRequests.averageCompletionDays backlogDsRequests = $assessment.DataSubjectRequests.backlogCount issues = $assessment.Issues } if ($ReportPath) { $dir = Split-Path -Parent $ReportPath if ($dir -and -not (Test-Path -Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null } $summary | ConvertTo-Json -Depth 4 | Out-File -FilePath $ReportPath -Encoding UTF8 -Force Write-Host "[OK] Monitoringsrapport opgeslagen: $ReportPath" -ForegroundColor Green } return $summary } function Publish-PrivacyBaseline { $baseline = Initialize-PrivacyBaseline Save-PrivacyConfig -Config $baseline } try { if ($PublishBaseline) { Publish-PrivacyBaseline } elseif ($Assessment) { $result = Invoke-PrivacyControlsAssessment -DebugMode:$DebugMode if ($ReportPath) { $dir = Split-Path -Parent $ReportPath if ($dir -and -not (Test-Path -Path $dir)) { New-Item -ItemType Directory -Path $dir -Force | Out-Null } $result | ConvertTo-Json -Depth 6 | Out-File -FilePath $ReportPath -Encoding UTF8 -Force Write-Host "[OK] Beoordelingsrapport opgeslagen: $ReportPath" -ForegroundColor Green } if ($result.IsHealthy) { Write-Host "[OK] Privacy controls voldoen aan de ingestelde criteria." -ForegroundColor Green } else { Write-Host "[WARN] Privacy controls vragen aandacht:" -ForegroundColor Yellow $result.Issues | ForEach-Object { Write-Host " - $_" -ForegroundColor Yellow } exit 1 } } elseif ($Monitoring) { $summary = Invoke-PrivacyControlMonitoring -DebugMode:$DebugMode -ReportPath $ReportPath if ($summary.healthy) { Write-Host "[OK] Monitoring afgerond zonder kritieke bevindingen." -ForegroundColor Green } else { Write-Host "[WARN] Monitoring detecteerde $($summary.issueCount) aandachtspunten." -ForegroundColor Yellow exit 1 } } else { Write-Host "Gebruik één van de volgende parameters:" -ForegroundColor Yellow Write-Host " -PublishBaseline Maak of vernieuw het configuratiebestand" -ForegroundColor Gray Write-Host " -Assessment Evalueer privacy controls en toon bevindingen" -ForegroundColor Gray Write-Host " -Monitoring Genereer KPI-samenvatting (optioneel met -ReportPath)" -ForegroundColor Gray Write-Host "Opties:" -ForegroundColor Yellow Write-Host " -ReportPath <pad> Schrijf resultaten naar JSON" -ForegroundColor Gray Write-Host " -DebugMode Gebruik voorbeelddata voor lokale tests" -ForegroundColor Gray Write-Host " -WhatIf Toon wijzigingen zonder deze op te slaan (alleen -PublishBaseline)" -ForegroundColor Gray } } catch { Write-Host "`n[FAIL] Er is een fout opgetreden: $_" -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: Zonder uniforme privacy controls in Microsoft 365 ontbreekt aantoonbare naleving van AVG, BIO en NIS2. Datalekken worden laat ontdekt, rechtenverzoeken lopen uit en bestuurders missen grip op risico’s.

Management Samenvatting

Stel een integraal privacy control framework op met Purview-labels, DLP, Conditional Access, logging en volwassen processen voor dataminimalisatie en rechtenverzoeken. Monitor periodiek met het PowerShell-script en koppel resultaten aan governance en verbeterplannen.