Data Loss Prevention Policies In Microsoft 365: Afdwinging En Borging

💼 Management Samenvatting

Een Data Loss Prevention (DLP)-beleid in Microsoft 365 is de technische vertaling van het Nederlandse informatiebeveiligingsbeleid naar concrete blokkades en waarschuwingen op Exchange, SharePoint, OneDrive, Teams en Power Platform. Het beleid zorgt ervoor dat documenten met burgerservicenummers, medische gegevens of vertrouwelijke beleidsstukken niet ongemerkt de tenant verlaten en vormt daarmee een onmisbare bouwsteen voor de Nederlandse Baseline voor Veilige Cloud.

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

Zonder een actief afgedwongen DLP-beleid kunnen medewerkers per ongeluk of doelbewust gevoelige data delen met onbevoegde ontvangers. Een Excel-bestand met BSN's dat via Teams wordt doorgestuurd, een Power BI-export met politiegegevens die in een persoonlijke OneDrive belandt of een Power Automate-flow die gegevens naar een buitenlandse API verstuurt, leidt direct tot AVG-meldplichten, sancties van de Autoriteit Persoonsgegevens en hersteltrajecten die maanden duren. De BIO-normen 09 en 12, de NIS2-verplichtingen voor essentiële entiteiten en sectorale kaders zoals de Wet politiegegevens eisen dat datalekken aantoonbaar worden voorkomen. DLP is bovendien een cruciaal controlemiddel tijdens audits van ADR, IAK of externe accountants en zonder aantoonbare blokkades is het onmogelijk om aan te tonen dat passende maatregelen uit artikel 32 AVG daadwerkelijk zijn geïmplementeerd.

PowerShell Modules Vereist
Primary API: Microsoft Purview (Security & Compliance PowerShell), Microsoft Graph DLP API
Connection: Connect-IPPSSession, Connect-MgGraph
Required Modules: ExchangeOnlineManagement, Microsoft.Graph

Implementatie

Dit artikel beschrijft hoe Nederlandse overheidsorganisaties een volledig DLP-programma inrichten dat techniek, governance en operations samenbrengt. U leest welke licenties, rollen en processen nodig zijn, hoe u Microsoft Purview DLP policies ontwerpt rond Nederlandse gevoelige informatietypen, hoe u automatische blokkades test en gefaseerd uitrolt, en hoe u monitoring, incidentrespons en rapportage structureert. Het sluit af met concrete aanwijzingen voor audits, continue verbetering en de koppeling met andere informatiebeveiligingsmaatregelen zoals retention, sensitivity labels en SOC-procedures.

Vereisten, licenties en governance

Een effectief DLP-programma begint bij de juiste licenties en bevoegdheden. Microsoft 365 E5 of de Microsoft 365 E5 Compliance add-on is noodzakelijk om geavanceerde DLP-functionaliteit zoals automatische blokkades, trainable classifiers en Power Platform DLP te activeren. Voor basisdetectie kunnen E3-licenties worden gebruikt, maar die ondersteunen enkel auditmodus en bieden geen granulariteit voor Power Platform connectors. Alle beheerders die DLP policies ontwikkelen hebben minimaal de rollen Compliance Administrator, Security Administrator en in sommige gevallen Power Platform Service Administrator nodig. De Functionaris Gegevensbescherming en de CISO moeten vanaf het begin betrokken zijn zodat juridische eisen uit de Archiefwet, AVG en Wpg worden vertaald naar werkbare technische uitgangspunten.

Naast licenties zijn organisatorische randvoorwaarden essentieel. Een multidisciplinair DLP-governanceboard verzamelt proceseigenaren, privacy officers, SOC-analisten en Microsoft 365-platformbeheerders om verzendlimieten af te stemmen, uitzonderingen te beoordelen en releasekalenders te beheren. Het board borgt dat classificatiebeleid voor documenten en e-mail is afgestemd op sensitivity labels, dat retentiebeleid in Microsoft Purview niet wordt doorkruist door DLP-acties en dat uitzonderingen altijd een einddatum en verantwoordelijke hebben. Verder moet een juridisch getoetst privacy impact assessment (PIA) beschrijven welke monitoring wordt uitgevoerd, hoe lang incidentdata worden bewaard en hoe proportionaliteit wordt geborgd.

Tot slot vergt DLP een volwassen change- en adoptieproces. Gebruikers moeten begrijpen waarom een verzonden bericht wordt geblokkeerd, hoe zij een override aanvragen en waar zij ondersteuning vinden. De servicedesk moet standaardantwoorden en escalatiepaden hebben, terwijl het SOC duidelijke responsplaybooks nodig heeft voor geclassificeerde incidenten. Zonder deze governance blijft technologie ongebruikt of wordt zij omzeild, hetgeen direct leidt tot auditbevindingen en herstelsancties.

Technische implementatie in Microsoft Purview

De technische implementatie start met het modelleren van informatiestromen en risico's per workload. In Microsoft Purview definieert u policies waarin Exchange Online, SharePoint, OneDrive, Teams en Power Platform connectors aan dezelfde regelset worden gekoppeld. Gevoelige informatietypen zoals "Netherlands Citizen Service Number (BSN)", "EU Financial Data" en maatwerkpatronen voor gemeentelijke zaaknummers worden geconfigureerd met drempelwaarden en betrouwbaarheidsgraden zodat de detectie zowel nauwkeurig als uitlegbaar is. Combineer deze detecties met contextuele voorwaarden, bijvoorbeeld alleen blokkeren wanneer documenten buiten de organisatie gedeeld worden of wanneer een gebruiker data downloadt naar een ongebeheerste endpoint.

Zodra de gevoeligheidstypen en voorwaarden zijn gedefinieerd, bouwt u gefaseerde policies: eerst een pilot in testmodus met uitgebreide rapportage, daarna een tenantbrede policy in Enforce-modus. In elke fase worden policy tips, e-mailnotificaties en justificatiemogelijkheden afgestemd op de communicatierichtlijnen van de organisatie. DLP policies moeten bovendien worden afgestemd op sensitivity labels die encryptie afdwingen; een document dat al is versleuteld kan andere acties vereisen dan een onbeveiligd document. Beste praktijken schrijven voor om policies logisch te scheiden (bijvoorbeeld "BSN hoog risico" versus "financiële data medium risico") zodat tuning en rapportage beheersbaar blijven.

Gebruik PowerShell-script dlp-policies-enabled.ps1 (functie Invoke-Remediation) – Automatiseert het aanmaken of bijwerken van baseline DLP-policies, inclusief koppeling aan alle workloads en blokkades voor Nederlandse gevoelige informatietypen..

De bijbehorende PowerShell-automatisering configureert baseline policies consistent, inclusief commentaarvelden, versienummers en standaardinstellingen voor blokkeren, auditmeldingen en rapportage. Hierdoor worden configuratiefouten beperkt en is elke wijziging herleidbaar naar een change met bewijs van goedkeuring. Tijdens implementatie is het raadzaam om policies in een gecontroleerde volgorde te activeren: eerst audit only, vervolgens notify, daarna blokkeren in productie. Iedere stap eindigt met een review van SOC-meldingen, functionele acceptatietests en communicatie richting sleutelgebruikers.

Monitoring, telemetrie en incidentrespons

Een DLP-configuratie is pas effectief wanneer incidenten continu worden bewaakt en opgevolgd. Microsoft Purview levert near real-time alerts, maar zonder gecentraliseerde monitoring verliezen organisaties het overzicht. SOC-analisten moeten dashboards hebben met aantallen blokkades per workload, trends in overrides, topgebruikers en herhaalde overtredingen. Deze informatie voedt maandelijkse rapportages voor CISO en FG en bepaalt welke processen extra training behoeven.

Gebruik PowerShell-script dlp-policies-enabled.ps1 (functie Invoke-Monitoring) – Inventariseert alle DLP-policies, controleert of Enforce-modus is ingeschakeld, of blokkades aanwezig zijn en geeft een compliance-status terug voor rapportages..

De monitoringmodus van het script valideert of baseline policies actief zijn, of rules een blokkade bevatten en of policies niet onbedoeld in testmodus staan. Resultaten worden verwerkt in CSV- of JSON-rapportages die in GRC-systemen kunnen worden opgeslagen als auditbewijsmateriaal. Parallel daaraan haalt het SOC mutaties en incidenten via de Microsoft Graph Security API op, waardoor men correlaties kan leggen met Defender-alerts, insider-riskcases en SIEM-events.

Incidentrespons vereist duidelijke draaiboeken. Wanneer een blokkade plaatsvindt moet het SOC binnen afgesproken tijden beoordelen of het een false positive betreft, de betrokken proceseigenaar informeren en de FG voorzien van feiten voor een eventuele AVG-melding. Door DLP-logboeken te verrijken met context uit Azure AD Sign-In Logs en Endpoint DLP kunnen analisten herkennen of een blokkade onderdeel is van een groter compromis. Deze integrale aanpak zorgt voor aantoonbare beheersing en maakt het mogelijk om lessons learned snel terug te voeren naar beleid en training.

Continu verbeteren en compliance aantonen

DLP is geen eenmalig project maar een cyclisch programma waarin beleid, detecties en processen telkens worden bijgesteld. Iedere wijziging in wetgeving (denk aan de Wet open overheid, NIS2-specifieke nadere regels of nieuwe aanwijzingen van de Autoriteit Persoonsgegevens) vereist een review van de gevoeligheidstypen en policy-teksten. Organisaties documenteren daarom per kwartaal welke wijzigingen zijn doorgevoerd, welke uitzonderingen tijdelijk gelden en welke auditbevindingen zijn opgelost.

Compliance vereist aantoonbaar bewijs. Bewaar PIA's, beleidsdocumenten, change logs, exporten van DLP-policies, rapportages uit het monitoring-script, SOC-incidenttickets en communicatie richting gebruikers in een gecontroleerde documentopslag. Tijdens audits kan hiermee worden aangetoond dat maatregelen uit BIO 09.02 (Bescherming van gegevens), BIO 12.04 (Logging en monitoring) en AVG artikel 32 structureel zijn geïmplementeerd en getoetst. Combineer deze stukken met rapportages van Sensitivity Labels en retention policies om te laten zien dat de volledige informatielevenscyclus onder controle is.

Continue verbetering betekent ook investeren in mens en proces. Train medewerkers in het herkennen van policy tips, voer tabletop-oefeningen uit waarin DLP-incidenten worden gesimuleerd en gebruik feedbackloops om regels minder hinderlijk en tegelijk effectiever te maken. Maak gebruik van trendanalyses uit Purview, Microsoft Sentinel en Power BI om hotspots te identificeren en de juiste managementaandacht te vragen. Zo blijft DLP niet beperkt tot technologie maar groeit het uit tot een volwassen beheersmaatregel binnen de gehele Nederlandse overheidsorganisatie.

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 Controleert en configureert Data Loss Prevention (DLP) policies in Microsoft 365. .DESCRIPTION Dit script ondersteunt Nederlandse overheidsorganisaties bij het borgen van de Nederlandse Baseline voor Veilige Cloud. Het script kan DLP-policies monitoren, baseline policies configureren en indien nodig verwijderen. De focus ligt op Exchange, SharePoint, OneDrive, Teams en Power Platform-workloads die worden beheerd via Microsoft Purview (Security & Compliance PowerShell). .NOTES Filename: dlp-policies-enabled.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-10 Last Modified: 2025-01-10 Version: 1.0 Related JSON: content/m365/information-protection/dlp-policies-enabled.json Category: information-protection Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\dlp-policies-enabled.ps1 -Monitoring Toont de status van alle DLP-policies en controleert of baseline policies actief zijn. .EXAMPLE .\dlp-policies-enabled.ps1 -Remediation Maakt of herconfigureert baseline DLP-policies en rules. .EXAMPLE .\dlp-policies-enabled.ps1 -Monitoring -DebugMode Voert een lokale test uit zonder verbinding te maken met Microsoft 365. #> #Requires -Version 5.1 #Requires -Modules ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(HelpMessage = "Monitor huidige DLP-configuratie")] [switch]$Monitoring, [Parameter(HelpMessage = "Configureer of herstel baseline DLP-policies")] [switch]$Remediation, [Parameter(HelpMessage = "Verwijder baseline DLP-policies (voorzichtig)")] [switch]$Revert, [Parameter(HelpMessage = "Toon welke acties zouden worden uitgevoerd")] [switch]$WhatIf, [Parameter(HelpMessage = "Lokale debugmodus zonder verbinding")] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' # ============================================================================ # HEADER # ============================================================================ Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Microsoft 365 DLP Policies" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # ============================================================================ # GLOBAL SETTINGS # ============================================================================ $script:BaselinePolicyName = "Baseline - Overheid DLP All Workloads" $script:BaselineRuleName = "$($script:BaselinePolicyName) - Hoog Risico" $script:PolicyComment = "Baseline DLP policy geconfigureerd door Nederlandse Baseline voor Veilige Cloud" $script:SensitiveInformationTypes = @( @{ Name = "Netherlands Citizen Service Number (BSN)" minCount = 1 maxCount = 9 minConfidence = 75 }, @{ Name = "IBAN" minCount = 1 maxCount = 9 minConfidence = 80 }, @{ Name = "EU PII Data" minCount = 1 maxCount = 9 minConfidence = 85 } ) # ============================================================================ # FUNCTIONS # ============================================================================ function Connect-ComplianceService { <# .SYNOPSIS Maakt verbinding met Microsoft Purview (Security & Compliance PowerShell). #> [CmdletBinding()] param() try { Write-Host "Verbinden met Microsoft Purview..." -ForegroundColor Gray $existingSession = Get-PSSession | Where-Object { $_.ConfigurationName -eq "Microsoft.Exchange" -and $_.State -eq "Opened" -and $_.Name -like "*IPPSSession*" } if ($existingSession) { Write-Host " [OK] Bestaande Security & Compliance-sessie gevonden" -ForegroundColor Green return } Connect-IPPSSession -ShowBanner:$false -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Security & Compliance PowerShell" -ForegroundColor Green } catch { Write-Error "Kon niet verbinden met Security & Compliance PowerShell: $_" throw } } function Get-DlpPolicyStatus { <# .SYNOPSIS Haalt de status van alle DLP-policies op. .OUTPUTS PSCustomObject met kerngegevens van de policy. #> [CmdletBinding()] param() try { Write-Host "Ophalen van DLP-policies..." -ForegroundColor Gray $policies = Get-DlpCompliancePolicy -ErrorAction Stop $results = @() foreach ($policy in $policies) { $rules = Get-DlpComplianceRule -Policy $policy.Name -ErrorAction SilentlyContinue $workloads = @() if ($policy.ExchangeLocation -or $policy.ExchangeLocationException) { $workloads += "Exchange" } if ($policy.SharePointLocation -or $policy.SharePointLocationException) { $workloads += "SharePoint" } if ($policy.OneDriveLocation -or $policy.OneDriveLocationException) { $workloads += "OneDrive" } if ($policy.TeamsLocation -or $policy.TeamsLocationException) { $workloads += "Teams" } if ($policy.PowerPlatformLocation -or $policy.PowerPlatformLocationException) { $workloads += "PowerPlatform" } $hasRules = $rules -and $rules.Count -gt 0 $blocksAccess = $false $severity = "Niet ingesteld" if ($hasRules) { $firstRule = $rules | Select-Object -First 1 $blocksAccess = [bool]$firstRule.BlockAccess if ($firstRule.ReportSeverity) { $severity = $firstRule.ReportSeverity } } $results += [PSCustomObject]@{ Name = $policy.Name Mode = if ($policy.Mode) { $policy.Mode } else { "Onbekend" } Workloads = if ($workloads) { $workloads -join ", " } else { "Geen locaties" } HasRules = $hasRules BlocksAccess = $blocksAccess Severity = $severity Comment = $policy.Comment IsBaseline = ($policy.Name -eq $script:BaselinePolicyName) } } Write-Host " [OK] $($results.Count) DLP-policies gevonden" -ForegroundColor Green return $results } catch { Write-Error "Fout bij ophalen van DLP-policies: $_" throw } } function Invoke-Monitoring { <# .SYNOPSIS Controleert of DLP-policies volgens de baseline actief zijn. #> [CmdletBinding()] param() if ($DebugMode) { Write-Host "`n[MODE] Debug Mode - Lokale test" -ForegroundColor Yellow $mock = [PSCustomObject]@{ Name = $script:BaselinePolicyName Mode = "Enforce" Workloads = "Exchange, SharePoint, OneDrive, Teams" HasRules = $true BlocksAccess = $true Severity = "High" Comment = $script:PolicyComment IsBaseline = $true } $mock | Format-Table -AutoSize return [PSCustomObject]@{ TotalPolicies = 1 BaselinePolicies = 1 Enforced = $true Policies = @($mock) } } try { Write-Host "`nMonitoring: DLP Policies" -ForegroundColor Cyan Write-Host "=========================" -ForegroundColor Cyan Connect-ComplianceService $policies = Get-DlpPolicyStatus if (-not $policies -or $policies.Count -eq 0) { Write-Host " ⚠️ Geen DLP-policies gevonden" -ForegroundColor Yellow return [PSCustomObject]@{ TotalPolicies = 0 BaselinePolicies = 0 Enforced = $false Policies = @() } } Write-Host "`nOverzicht:" -ForegroundColor Cyan $policies | Format-Table -AutoSize Name, Mode, Workloads, HasRules, BlocksAccess $baseline = $policies | Where-Object { $_.IsBaseline } $enforced = ($baseline.Count -gt 0) -and ($baseline | Where-Object { $_.Mode -eq "Enforce" -and $_.HasRules -and $_.BlocksAccess }).Count -eq $baseline.Count if ($enforced) { Write-Host "`n ✅ Baseline DLP-policies zijn actief en afdwingend" -ForegroundColor Green } else { Write-Host "`n ⚠️ Baseline DLP-policies ontbreken of staan niet in Enforce-modus" -ForegroundColor Yellow } return [PSCustomObject]@{ TotalPolicies = $policies.Count BaselinePolicies = $baseline.Count Enforced = $enforced Policies = $policies } } catch { Write-Error "Fout bij monitoring: $_" throw } } function New-OrUpdateDlpPolicy { <# .SYNOPSIS Creëert of actualiseert de baseline DLP-policy. #> [CmdletBinding(SupportsShouldProcess)] param() $policy = Get-DlpCompliancePolicy -Identity $script:BaselinePolicyName -ErrorAction SilentlyContinue if ($policy) { Write-Host " ℹ️ Baseline DLP-policy bestaat al" -ForegroundColor Yellow if ($policy.Mode -ne "Enforce") { Write-Host " - Policy staat in modus '$($policy.Mode)'. Bijwerken naar 'Enforce'..." -ForegroundColor Yellow if ($PSCmdlet.ShouldProcess($script:BaselinePolicyName, "Set-DlpCompliancePolicy naar Enforce")) { Set-DlpCompliancePolicy -Identity $script:BaselinePolicyName -Mode Enforce -ErrorAction Stop } } return $policy } if ($PSCmdlet.ShouldProcess($script:BaselinePolicyName, "Create DLP policy")) { Write-Host " Aanmaken van baseline DLP-policy..." -ForegroundColor Gray $policy = New-DlpCompliancePolicy ` -Name $script:BaselinePolicyName ` -Comment $script:PolicyComment ` -Mode Enforce ` -ExchangeLocation All ` -SharePointLocation All ` -OneDriveLocation All ` -TeamsLocation All ` -ErrorAction Stop Write-Host " [OK] DLP-policy aangemaakt" -ForegroundColor Green } return $policy } function New-OrUpdateDlpRule { <# .SYNOPSIS Creëert of actualiseert de baseline DLP-rule. #> [CmdletBinding(SupportsShouldProcess)] param() $existingRule = Get-DlpComplianceRule -Policy $script:BaselinePolicyName -ErrorAction SilentlyContinue | Where-Object { $_.Name -eq $script:BaselineRuleName } if ($existingRule) { Write-Host " ℹ️ Baseline DLP-rule bestaat al" -ForegroundColor Yellow $requiresUpdate = (-not $existingRule.BlockAccess) -or ($existingRule.ReportSeverity -ne "High") if ($requiresUpdate -and $PSCmdlet.ShouldProcess($script:BaselineRuleName, "Update DLP rule")) { Write-Host " - Bijwerken van bestaande regel zodat blokkade en High severity actief zijn" -ForegroundColor Yellow Set-DlpComplianceRule ` -Identity $script:BaselineRuleName ` -BlockAccess $true ` -ReportSeverity High ` -NotifyUser $true ` -NotifyPolicyTip $true ` -Mode Enforce ` -ErrorAction Stop } return } if ($PSCmdlet.ShouldProcess($script:BaselineRuleName, "Create DLP rule")) { Write-Host " Aanmaken van baseline DLP-rule..." -ForegroundColor Gray New-DlpComplianceRule ` -Name $script:BaselineRuleName ` -Policy $script:BaselinePolicyName ` -BlockAccess $true ` -ContentContainsSensitiveInformation $script:SensitiveInformationTypes ` -NotifyUser $true ` -NotifyPolicyTip $true ` -ReportSeverity High ` -Mode Enforce ` -ErrorAction Stop | Out-Null Write-Host " [OK] DLP-rule aangemaakt" -ForegroundColor Green } } function Invoke-Remediation { <# .SYNOPSIS Configureert baseline DLP-policies. #> [CmdletBinding()] param() if ($DebugMode) { Write-Host "`n[MODE] Debug Mode - Remediation preview" -ForegroundColor Yellow Write-Host " Zou policy '$script:BaselinePolicyName' aanmaken of bijwerken in Enforce-modus" -ForegroundColor Gray Write-Host " Zou rule '$script:BaselineRuleName' configureren met blokkade en meldingen" -ForegroundColor Gray return } try { Write-Host "`nRemediatie: DLP Policies" -ForegroundColor Cyan Write-Host "==========================" -ForegroundColor Cyan Connect-ComplianceService New-OrUpdateDlpPolicy Start-Sleep -Seconds 3 New-OrUpdateDlpRule Write-Host "`n ✅ Baseline DLP-policies zijn geconfigureerd" -ForegroundColor Green } catch { Write-Error "Fout bij remediatie: $_" throw } } function Invoke-Revert { <# .SYNOPSIS Verwijdert baseline DLP-policies. #> [CmdletBinding(SupportsShouldProcess)] param() if ($DebugMode) { Write-Host "`n[MODE] Debug Mode - Revert preview" -ForegroundColor Yellow Write-Host " Zou policy '$script:BaselinePolicyName' en gekoppelde rules verwijderen" -ForegroundColor Gray return } try { Write-Host "`nRevert: Baseline DLP Policies" -ForegroundColor Cyan Write-Host "==============================" -ForegroundColor Cyan Write-Host " ⚠️ Gebruik uitsluitend wanneer een alternatief beleid aanwezig is" -ForegroundColor Red if (-not $WhatIf) { $confirmation = Read-Host "Typ 'ja' om te bevestigen" if ($confirmation -ne "ja") { Write-Host " Operatie geannuleerd" -ForegroundColor Yellow return } } Connect-ComplianceService $rules = Get-DlpComplianceRule -Policy $script:BaselinePolicyName -ErrorAction SilentlyContinue foreach ($rule in $rules) { if ($PSCmdlet.ShouldProcess($rule.Name, "Remove DLP rule")) { Remove-DlpComplianceRule -Identity $rule.Name -Confirm:$false -ErrorAction SilentlyContinue Write-Host " [OK] Rule '$($rule.Name)' verwijderd" -ForegroundColor Green } } $policy = Get-DlpCompliancePolicy -Identity $script:BaselinePolicyName -ErrorAction SilentlyContinue if ($policy -and $PSCmdlet.ShouldProcess($script:BaselinePolicyName, "Remove DLP policy")) { Remove-DlpCompliancePolicy -Identity $script:BaselinePolicyName -Confirm:$false -ErrorAction Stop Write-Host " [OK] DLP-policy verwijderd" -ForegroundColor Green } } catch { Write-Error "Fout bij revert: $_" throw } } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { if ($Monitoring) { $result = Invoke-Monitoring if ($result) { Write-Host "`nSamenvatting:" -ForegroundColor Cyan Write-Host " Totaal policies : $($result.TotalPolicies)" -ForegroundColor Gray Write-Host " Baseline actief : $($result.BaselinePolicies)" -ForegroundColor Gray Write-Host " Enforce status : $(if ($result.Enforced) { 'Ja' } else { 'Nee' })" -ForegroundColor $(if ($result.Enforced) { 'Green' } else { 'Yellow' }) } } elseif ($Remediation) { Invoke-Remediation } elseif ($Revert) { Invoke-Revert } else { Write-Host "Geen modus opgegeven. Kies een van de volgende opties:" -ForegroundColor Yellow Write-Host " -Monitoring Controleer huidige DLP-configuratie" -ForegroundColor Yellow Write-Host " -Remediation Configureer baseline DLP-policies" -ForegroundColor Yellow Write-Host " -Revert Verwijder baseline DLP-policies (voorzichtig)" -ForegroundColor Yellow Write-Host " -DebugMode Voer controles uit zonder verbinding" -ForegroundColor Yellow } } catch { Write-Error "Fout in dlp-policies-enabled.ps1: $_" throw } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder afdwingbare DLP-policies blijft gevoelige informatie ongecontroleerd uitlekken via e-mail, Teams, OneDrive en Power Platform, wat leidt tot AVG-boetes, BIO-afwijkingen en NIS2-sancties.

Management Samenvatting

Schakel Microsoft Purview DLP in voor alle workloads, zorg dat blokkades en notificaties actief zijn en monitor continu via geautomatiseerde scripts om datalekken en compliance-risico's te voorkomen.