Standaard Versleutelingslabel Als Fundament Voor Microsoft 365-gegevensbescherming

💼 Management Samenvatting

Een standaard versleutelingslabel binnen Microsoft 365 zorgt ervoor dat elk nieuw document en elke e-mail automatisch wordt voorzien van een basisniveau van classificatie en bescherming. Dit artikel beschrijft hoe een default label het verhaal van informatiebeveiliging vereenvoudigt door gebruikers minder keuzes te laten maken en tegelijkertijd aantoonbaar te voldoen aan de eisen van Nederlandse toezichthouders.

Aanbeveling
IMPLEMENT
Risico zonder
Hoog
Risk Score
8/10
Implementatie
65u (tech: 30u)
Van toepassing op:
Microsoft 365 E5
Microsoft 365 E3
Microsoft Purview
Exchange Online
SharePoint Online
Microsoft Teams

Nederlandse overheidsorganisaties werken dagelijks met persoonsgegevens, staatsgevoelige dossiers en keteninformatie waarvan het uitlekken direct gevolgen heeft voor publieke veiligheid, vertrouwen en wettelijke verplichtingen. Wanneer de eerste opslag van een document afhankelijk is van het bewustzijn van individuele medewerkers, ontstaan er structurele gaten in het beschermingsniveau. Een standaardlabel met ingebouwde versleuteling voorkomt dat documenten ooit zonder basisbescherming worden opgeslagen of gedeeld en creëert een uniform vertrekpunt voor aanvullende beleidsregels, automatische labelling en auditverplichtingen. Het default label maakt het bovendien mogelijk om downstream processen, zoals Data Loss Prevention en archivering, te baseren op voorspelbare metadata.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, Security & Compliance PowerShell
Connection: Connect-MgGraph, Connect-IPPSSession
Required Modules: Microsoft.Graph.Authentication, Microsoft.Graph.InformationProtection, ExchangeOnlineManagement

Implementatie

In dit artikel wordt uitgelegd hoe een standaardlabel wordt ontworpen, welke versleutelingsinstellingen noodzakelijk zijn, hoe het label wordt gekoppeld aan labelbeleid en hoe organisaties controleren dat het beleid effectief wordt afgedwongen in Exchange Online, SharePoint, OneDrive en Microsoft Teams. Vervolgens behandelen we operationele aspecten zoals uitzonderingen voor hoog-risico dossiers, samenwerking met ketenpartners en het inzetten van PowerShell om compliance aantoonbaar te monitoren. Tot slot beschrijven we hoe remediatie verloopt wanneer audits aantonen dat gebruikers documenten zonder default label hebben aangemaakt.

Beleidsfundamenten en juridische noodzaak

Het standaard versleutelingslabel fungeert als het startpunt voor iedere informatiebeweging binnen Microsoft 365. Zonder deze basis moet een gebruiker telkens kiezen of en welk label hij toepast, waardoor de organisatie afhankelijk wordt van menselijke interpretatie op momenten van tijdsdruk of beperkte kennis. Een default label verwijdert die onzekerheid door automatisch een vooraf afgestemde classificatie te plaatsen zodra een document of e-mail wordt aangemaakt. Hierdoor zijn metadata zoals classificatieniveau, bewaartermijnen en toegangsbeperkingen vanaf de eerste seconde aanwezig, wat cruciaal is voor ketensturing, logging en rapportage. De maatregel sluit bovendien naadloos aan op het Nederlandse principe van informatie als gemeenschappelijk bezit: elke medewerker mag uitgaan van een gedeeld vertrekpunt dat altijd versleuteling afdwingt en geen ruimte laat voor dubbele standaarden tussen afdelingen.

De juridische drijfveren zijn onmiskenbaar. De Baseline Informatiebeveiliging Overheid vereist dat gevoelige gegevens standaard beschermd worden via passende cryptografische maatregelen. Artikel 32 van de AVG benoemt versleuteling expliciet als maatregel die moet worden overwogen wanneer persoonsgegevens worden verwerkt. De NIS2-richtlijn voegt daar een zorgplicht aan toe voor essentiële en belangrijke entiteiten om consistente beveiligingsniveaus te hanteren over alle systemen heen. Een default label met versleuteling demonstreert dat de organisatie beveiliging niet aan toeval overlaat, maar structureel borgt dat elk informatieobject minimaal hetzelfde basiskader doorloopt. Tijdens audits levert dit een stevige bewijspositie op omdat het beleid aantoonbaar is vastgelegd, het technisch is afgedwongen en afwijkingen traceerbaar zijn via logboeken. Wanneer incidenten plaatsvinden, kan de organisatie exact laten zien welke documenten door het standaardlabel zijn geraakt en welke uitzonderingen bewust zijn aangebracht.

Het beleidskader achter een default label begint bij een actueel classificatiemodel dat door bestuur, CISO en privacy officers gezamenlijk is bekrachtigd. Dit model koppelt classificaties aan concrete beschermingsmaatregelen en legt vast dat de laagste toegestane waarde voor interne informatie automatisch versleuteld wordt. In de praktijk betekent dit dat documenten met classificatie Intern of Vertrouwelijk altijd beginnen met een label dat versleuteling afdwingt, ook wanneer gebruikers het document nooit verhogen naar Zeer Vertrouwelijk. Het beleid beschrijft daarnaast hoe uitzonderingen worden goedgekeurd, welke teams afwijkende labels mogen publiceren en hoe wordt voorkomen dat externe samenwerkingsruimten onverwacht worden geblokkeerd. Door deze governance op te nemen in het informatiebeveiligingsplan ontstaat een traceerbare keten van besluitvorming die nodig is om richting Autoriteit Persoonsgegevens en Rijksauditdienst te verantwoorden waarom keuzes zijn gemaakt.

Technisch gezien stelt een default label eisen aan licenties, rollen en platformconfiguratie. Minimaal Microsoft 365 E3 met de Information Protection & Governance add-on is vereist om gevoelige labels met versleuteling toe te passen, terwijl E5 meer geavanceerde beleidsregels en automatische labeling biedt. Beheerders die labelbeleid beheren hebben Security Administrator- of Compliance Administrator-rollen nodig, en de organisatie moet procedures hebben voor het bijhouden van labelversies en sleutelbeheer. Verder moeten integraties met Microsoft Teams, SharePoint en OneDrive zijn gevalideerd zodat de standaardlabeling ook in co-authoring scenario's en mobiele apps actief blijft. Zonder deze randvoorwaarden loopt men het risico dat het default label alleen in Office-desktopclients wordt toegepast en dat bestanden die via API's of migratietools worden aangemaakt alsnog onbeschermd blijven. Het beleidsfundament eindigt daarom pas wanneer technische randvoorwaarden, roltoewijzingen en changeprocessen aantoonbaar zijn vastgelegd.

Architectuur en ontwerp van het standaardlabel

Het ontwerpen van een standaardlabel vraagt om meer dan het toekennen van een naam en kleur. Het label moet de volledige verhaalstructuur van data lifecycle management weerspiegelen, zodat elk document exact dezelfde encryptieparameters, toegangsrechten en metadata ontvangt. Architecten beginnen daarom met het uitwerken van de sleutelstrategie. In de meeste situaties volstaat Microsoft-beheerde sleutels, maar organisaties met soevereiniteits- of ketenverplichtingen kiezen voor Customer Key of Double Key Encryption om volledige controle over sleutelrotatie te behouden. Het standaardlabel wordt zo ingericht dat documenttoegang altijd authenticatie via Entra ID vereist, offline toegang beperkt wordt tot beheerde apparaten en forwarding van e-mails standaard wordt geblokkeerd tenzij een hogere autorisatie wordt verleend. De architectuur beschrijft ook hoe het label samenwerkt met Mobile Application Management, zodat versleutelde documenten alleen op compliant apparaten kunnen worden geopend.

Naast cryptografie bepaalt het label de combinatie van gebruikerservaring en governance. Het label moet streng genoeg zijn om risico's te mitigeren, maar niet zo beperkend dat reguliere samenwerking instort. Veel overheidsorganisaties kiezen daarom voor een label dat standaard versleutelt maar intern delen binnen de tenant toestaat, terwijl externe uitnodigingen expliciet moeten worden aangevinkt. Op die manier kan iedereen binnen de organisatie documenten lezen zonder extra toestemming, maar blijft het onmogelijk om per ongeluk gevoelige informatie naar privé-accounts te sturen. Ook wordt vastgelegd welke visuele markeringen, zoals headers of watermerken, automatisch worden toegevoegd zodat gebruikers zien dat zij met beschermd materiaal werken. Het ontwerp houdt verder rekening met archivering en records management: het label bevat metadata die koppelt naar het zaaktype of het wettelijke bewaarschema, waardoor downstream systemen het bestand automatisch kunnen opnemen in het juiste dossier.

Een belangrijk ontwerpaspect is de manier waarop het label wordt afgedwongen in verschillende clients. Office-voor-desktop, Office voor web en mobiele apps hebben elk een eigen label-engine. Architecten testen daarom scenario's waarin documenten worden aangemaakt in Teams-kanalen, via SharePoint-sjablonen of via Microsoft Loop. Het default label moet in al deze paden hetzelfde gedrag vertonen. Dat betekent onder meer dat synchronisatie via OneDrive-clients de labelmetadata behoudt, dat co-authoring geen foutmeldingen geeft en dat externe gasten die aan een document werken automatisch de juiste beperkingen meekrijgen. Voor scenario's waarin Power Automate of maatwerkapplicaties bestanden genereren, wordt afgesproken dat deze diensten gebruikmaken van Graph API's die labels kunnen toepassen of dat ze schrijven naar bibliotheken met beleid dat automatisch het standaardlabel oplegt. Zonder deze controles ontstaan quickly shadowdocumenten die het label omzeilen.

Tot slot legt het ontwerpteam vast hoe het default label zich verhoudt tot andere labels en beleidsregels. Het label bevindt zich meestal aan de basis van een hiërarchie: gebruikers kunnen escaleren naar Vertrouwelijk of Zeer Vertrouwelijk, maar mogen niet naar beneden. Dat betekent dat het labelbeleid configuraties bevat voor mandatory labeling en require justification wanneer iemand een lager label zou willen kiezen. Ook wordt bepaald hoe automatische labeling het default label kan overschrijven wanneer patroonherkenning of trainable classifiers een hogere gevoeligheid detecteren. Door deze relaties te documenteren blijft de labelarchitectuur uitlegbaar, ontstaan er geen conflicten tussen policies en kunnen auditors eenvoudig volgen hoe een document door de verschillende beschermingsniveaus heen beweegt. Het ontwerp sluit daarmee aan op het principe dat een standaardlabel geen eindpunt is, maar een startpunt dat naadloos integreert met hogere beschermingslagen.

Implementatie, adoptie en dagelijkse operatie

De implementatie van een default label begint met een gecontroleerde voorbereiding in het Microsoft Purview-portaal. Beheerders creëren het label met de juiste versleutelingsinstellingen en testen het in een aparte publicatiebeleidsgroep met alleen het securityteam. Tijdens deze fase worden alle relevante scenario's nagebootst: het aanmaken van een document vanuit Teams, het verzenden van e-mails met grote bijlagen, het opslaan van gegevens in gedeelde mailboxes en het gebruik van het label in mobiele applicaties. Deze testen moeten bewijzen dat de prestatie-impact acceptabel is en dat de labelinformatie consistent terug te vinden is in auditlogs. Pas daarna wordt het label gekoppeld aan het tenant-brede beleid dat mandatory labeling en de standaardwaarde definieert. Hierbij wordt vaak gekozen voor een gefaseerde rollout via scopegroepen zodat kritieke afdelingen eerst ondersteuning krijgen en lessons learned kunnen delen.

Adoptie vraagt om gerichte communicatie. Medewerkers moeten begrijpen dat een standaardlabel geen beperking is maar een verzekering dat de basisbescherming altijd actief is. Communicatiepakketten leggen uit waarom het label bestaat, welke scenario's het dekt en hoe gebruikers kunnen herkennen dat de standaardbescherming actief is. Trainingen demonstreren hoe men een document naar een hoger label verheft wanneer extra restricties vereist zijn en hoe uitzonderingen worden aangevraagd voor publieke documenten of datasets die bewust gedeeld moeten worden met ketenpartners. Door deze aanpak ontstaat een cultuur waarin het default label als vanzelfsprekend wordt gezien en waarin gebruikers begrijpen dat het label niet kan worden uitgeschakeld maar wel kan worden uitgebreid met aanvullende beleidsregels wanneer de gevoeligheid toeneemt.

Operationeel beheer draait om het continu controleren van labeldekking. Microsoft biedt hiervoor rapportages via het Purview Compliance-portaal en Graph API's waarmee beheerders kunnen uitlezen hoeveel documenten zonder label bestaan of welk label als standaard actief is binnen ieder beleid. Deze rapportages worden geïntegreerd in security dashboards en gekoppeld aan ServiceNow of TOPdesk tickets wanneer afwijkingen worden gevonden. Het is belangrijk om niet alleen te kijken naar aantallen, maar ook naar patronen: in welke afdelingen wordt het label regelmatig overschreven, welke applicaties uploaden onbeschermde bestanden en welke externe locaties weigeren documenten met versleuteling te openen. Door deze inzichten te combineren met awareness-campagnes en technische verbeteringen blijft het default label daadwerkelijk de norm in plaats van een papieren afspraak.

Een volwassen operatie omvat bovendien ketenafspraken. Wanneer documenten met het standaardlabel worden gedeeld met andere overheidslagen of leveranciers, moeten die partijen technisch in staat zijn de versleutelde inhoud te openen. Dat vraagt om federatieve identiteitskoppelingen, duidelijke instructies over hoe Entra ID B2B-accounts worden beheerd en hoe men toestemming intrekt wanneer samenwerking eindigt. Voor scenario's waarin documenten toch zonder versleuteling moeten worden gedeeld, wordt een aparte 'Publiek' werkruimte ingericht waarin het default label niet geldt. Deze uitzondering wordt zorgvuldig gelogd en maandelijks geëvalueerd. Zo blijft het uitgangspunt dat versleuteling de standaard is, terwijl samenwerkingen die open data vereisen alsnog kunnen doorgaan zonder dat medewerkers zelf aan instellingen hoeven te sleutelen.

Monitoring, aantoonbaarheid en remediatie

Gebruik PowerShell-script encryption-default-labels.ps1 (functie Invoke-Monitoring) – Haalt labelbeleid en sensitivity labels op, controleert of een standaardlabel met versleuteling is gekoppeld en rapporteert afwijkingen per policy..

Monitoring begint bij het objectief vastleggen van wat er verwacht wordt. Voor default labels betekent dit dat in het changeproces exact staat beschreven welk label-ID als standaard geldt, welke encryptieparameters actief zijn en welke gebruikersgroepen door het beleid worden geraakt. Het monitoringproces haalt deze configuratie minimaal dagelijks op via Graph API's of PowerShell en vergelijkt de uitkomsten met de referentiewaarden. De resultaten worden niet alleen als technisch rapport gedeeld, maar ook besproken in het security governance overleg zodat afwijkingen direct worden gekoppeld aan risico-eigenaren. Door monitoring in te bedden in reguliere managementrapportages wordt voorkomen dat default labels na een reorganisatie of licentiewijziging ongemerkt worden uitgezet. Iedere wijziging zonder change-ID leidt automatisch tot een incidentmelding die moet worden verklaard voordat de wijziging geldig wordt verklaard.

Gebruik PowerShell-script encryption-default-labels.ps1 (functie Invoke-Remediation) – Biedt beheerders een begeleide procedure om het gewenste standaardlabel opnieuw aan labelbeleid te koppelen en legt vast welke stappen zijn genomen voor auditdoeleinden..

Aantoonbaarheid richting auditors vereist dat monitoringresultaten worden verrijkt met forensische gegevens. Naast configuratiegegevens bewaart de organisatie exports van auditlogs waarin zichtbaar is dat het standaardlabel daadwerkelijk is toegepast op nieuwe documenten. Deze logs worden minimaal zeven jaar bewaard conform archiefwetgeving en zijn gekoppeld aan incidentdossiers wanneer afwijkingen zijn ontdekt. Auditors ontvangen bovendien bewijs dat uitzonderingen correct zijn goedgekeurd, bijvoorbeeld door het voegen van change-aanvragen en goedkeuringen door de CISO. Door deze combinatie van technische metingen en bestuurlijke documentatie ontstaat een sluitend dossier waarmee de organisatie kan aantonen dat default labeling een beheerst proces is in plaats van een statische instelling.

Remediatie volgt een vast draaiboek. Zodra monitoring aangeeft dat het standaardlabel ontbreekt of niet langer versleuteling afdwingt, wordt het beleid onmiddellijk vergrendeld voor verdere wijzigingen en wordt een noodchange gestart. Beheerders koppelen het juiste label opnieuw aan het beleid, controleren of de juiste gebruikersgroepen zijn opgenomen en forceren een herpublicatie via het Purview-portaal. Daarna wordt een retroactieve scan uitgevoerd die controleert of er documenten zonder label zijn ontstaan tijdens de verstoring. Indien nodig wordt automatische labeling tijdelijk ingesteld op 'Enforce' om achterstanden in te lopen. Alle stappen, inclusief tijden, betrokken rollen en aangetroffen afwijkingen, worden gedocumenteerd zodat lessons learned kunnen worden verwerkt in het changeproces. Zo ontstaat een cyclus van continue verbetering waarin technische maatregelen, governance en awareness elkaar versterken.

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 borgt het standaard versleutelingslabel in Microsoft 365 .DESCRIPTION Dit script helpt Nederlandse overheidsorganisaties om aan te tonen dat elk labelbeleid een standaardlabel met versleuteling toepast. Het script ondersteunt monitoring, begeleide remediatie en documentatie voor audits. .NOTES Filename: encryption-default-labels.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-11-27 Last Modified: 2025-11-27 Version: 1.0 Related JSON: content/m365/information-protection/encryption-default-labels.json Category: information-protection Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\encryption-default-labels.ps1 -Monitoring Controleert labelbeleid en rapporteert of een standaardlabel met versleuteling actief is. .EXAMPLE .\encryption-default-labels.ps1 -Remediation -PolicyName "Global Mandatory Policy" -DefaultLabelId "11111111-2222-3333-4444-555555555555" Koppelt het opgegeven label als standaardlabel aan het doelbeleid. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph.Authentication #Requires -Modules Microsoft.Graph.InformationProtection #Requires -Modules ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(HelpMessage = "Monitor de huidige default-labelconfiguratie")] [switch]$Monitoring, [Parameter(HelpMessage = "Pas het gewenste defaultlabel toe op een labelbeleid")] [switch]$Remediation, [Parameter(HelpMessage = "Toon informatie over het terugdraaien van wijzigingen")] [switch]$Revert, [Parameter(HelpMessage = "Naam van het labelbeleid dat moet worden aangepast")] [string]$PolicyName, [Parameter(HelpMessage = "GUID van het label dat als standaardlabel moet worden ingesteld")] [Guid]$DefaultLabelId, [Parameter(HelpMessage = "Voer een dry-run uit")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' # ============================================================================ # HEADER # ============================================================================ Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Default Encryption Label" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # ============================================================================ # GLOBAL STATE # ============================================================================ $script:GraphScopes = @( "Policy.Read.All", "InformationProtectionPolicy.Read.All", "InformationProtectionLabel.Read.All" ) # ============================================================================ # FUNCTIONS # ============================================================================ function Connect-RequiredServices { <# .SYNOPSIS Verbindt met Microsoft Graph en Security & Compliance PowerShell #> [CmdletBinding()] param() try { Write-Host "Verbindingen controleren..." -ForegroundColor Gray $mgContext = Get-MgContext -ErrorAction SilentlyContinue if (-not $mgContext) { Write-Host " Verbinden met Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes $script:GraphScopes -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Microsoft Graph" -ForegroundColor Green } else { Write-Host " [OK] Graph-verbinding reeds actief" -ForegroundColor Green } $complianceSession = Get-PSSession | Where-Object { $_.ConfigurationName -eq "Microsoft.Exchange" -and $_.UserName -match "Compliance" } if (-not $complianceSession) { Write-Host " Verbinden met Security & Compliance PowerShell..." -ForegroundColor Gray Connect-IPPSSession -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Compliance PowerShell" -ForegroundColor Green } else { Write-Host " [OK] Compliance-sessie reeds actief" -ForegroundColor Green } Write-Host "" } catch { Write-Host " [FAIL] Verbinding mislukt: $_" -ForegroundColor Red throw } } function Get-SensitivityLabelMap { <# .SYNOPSIS Bouwt een overzicht van labels en versleutelingsinstellingen #> [CmdletBinding()] param() $labelMap = @{} try { $complianceLabels = Get-Label -ErrorAction Stop } catch { Write-Host "[WARNING] Kon labels niet ophalen via Compliance PowerShell: $_" -ForegroundColor Yellow $complianceLabels = @() } foreach ($label in $complianceLabels) { $labelId = $label.ImmutableId if (-not $labelId -and $label.Guid) { $labelId = $label.Guid } if (-not $labelId -and $label.Id) { $labelId = $label.Id } if ($labelId) { $labelMap[$labelId.ToString()] = [PSCustomObject]@{ Name = $label.DisplayName EncryptionEnabled = [bool]$label.EncryptionEnabled Description = $label.Comment } } } if ($labelMap.Count -eq 0) { Write-Host "[WARNING] Geen labels gevonden via Compliance PowerShell" -ForegroundColor Yellow } return $labelMap } function Get-LabelPolicies { <# .SYNOPSIS Haalt alle labelbeleiden op #> [CmdletBinding()] param() try { return Get-LabelPolicy -ErrorAction Stop } catch { Write-Host "[FAIL] Kan labelbeleid niet ophalen: $_" -ForegroundColor Red throw } } function Test-DefaultLabelCoverage { <# .SYNOPSIS Controleert of labelbeleiden een standaardlabel met versleuteling hebben #> [CmdletBinding()] param( [Parameter(Mandatory)] [hashtable]$LabelMap, [Parameter(Mandatory)] [System.Collections.IEnumerable]$Policies ) $results = @() foreach ($policy in $Policies) { $defaultId = $policy.DefaultLabelId $policyResult = [PSCustomObject]@{ PolicyName = $policy.Name Enabled = $policy.Enabled DefaultLabelId = $defaultId DefaultLabelName = $null EncryptionEnforced = $false Status = "NonCompliant" Message = $null } if (-not $defaultId) { $policyResult.Message = "Geen standaardlabel gekoppeld" } else { $labelKey = $defaultId.ToString() if ($LabelMap.ContainsKey($labelKey)) { $labelInfo = $LabelMap[$labelKey] $policyResult.DefaultLabelName = $labelInfo.Name $policyResult.EncryptionEnforced = $labelInfo.EncryptionEnabled if ($labelInfo.EncryptionEnabled) { $policyResult.Status = "Compliant" $policyResult.Message = "Standaardlabel bevat versleuteling" } else { $policyResult.Message = "Standaardlabel ontbreekt versleuteling" } } else { $policyResult.Message = "Label niet gevonden; controleer publicatie en permissies" } } $results += $policyResult } return $results } function Invoke-Monitoring { <# .SYNOPSIS Voert monitoring uit en retourneert resultaatobject #> [CmdletBinding()] param() Connect-RequiredServices $labelMap = Get-SensitivityLabelMap $policies = Get-LabelPolicies $policyResults = Test-DefaultLabelCoverage -LabelMap $labelMap -Policies $policies $nonCompliant = $policyResults | Where-Object { $_.Status -ne "Compliant" -and $_.Enabled } Write-Host "`n----------------------------------------" -ForegroundColor Cyan Write-Host "SAMENVATTING" -ForegroundColor Cyan Write-Host "----------------------------------------" -ForegroundColor Cyan foreach ($policy in $policyResults) { $statusColor = if ($policy.Status -eq "Compliant") { "Green" } else { "Yellow" } Write-Host ("{0,-35} : {1}" -f $policy.PolicyName, $policy.Status) -ForegroundColor $statusColor if ($policy.DefaultLabelName) { Write-Host (" Label: {0} ({1})" -f $policy.DefaultLabelName, $policy.DefaultLabelId) -ForegroundColor Gray } Write-Host (" Info : {0}" -f $policy.Message) -ForegroundColor Gray } $result = [PSCustomObject]@{ Timestamp = Get-Date Policies = $policyResults IsCompliant = $nonCompliant.Count -eq 0 Findings = $nonCompliant | Select-Object PolicyName, Message, DefaultLabelId } if ($result.IsCompliant) { Write-Host "`n[OK] Alle actieve labelbeleiden hebben een standaardlabel met versleuteling." -ForegroundColor Green } else { Write-Host "`n[WARNING] Een of meerdere beleidsregels missen een standaardlabel of versleuteling." -ForegroundColor Yellow } return $result } function Invoke-Remediation { <# .SYNOPSIS Koppelt het gewenste label als standaardlabel #> [CmdletBinding()] param( [Parameter(Mandatory)] [string]$PolicyName, [Parameter(Mandatory)] [Guid]$DefaultLabelId, [switch]$WhatIf ) Connect-RequiredServices Write-Host "Remediatie starten voor beleid '$PolicyName'..." -ForegroundColor Yellow $policy = Get-LabelPolicy -Identity $PolicyName -ErrorAction Stop Write-Host ("Huidige standaardlabel: {0}" -f ($policy.DefaultLabelId ?? "niet ingesteld")) -ForegroundColor Gray if ($WhatIf) { Write-Host "[WhatIf] Zou Set-LabelPolicy uitvoeren met DefaultLabelId $DefaultLabelId" -ForegroundColor Cyan return } try { Set-LabelPolicy -Identity $PolicyName -DefaultLabelId $DefaultLabelId -Confirm:$false -Force -ErrorAction Stop Write-Host "[OK] DefaultLabelId bijgewerkt. Publicatie kan enkele minuten duren." -ForegroundColor Green } catch { Write-Host "[FAIL] Kon defaultlabel niet bijwerken: $_" -ForegroundColor Red throw } } function Invoke-Revert { <# .SYNOPSIS Beschrijft hoe wijzigingen kunnen worden teruggedraaid #> [CmdletBinding()] param() Write-Host "Revert-informatie:" -ForegroundColor Yellow Write-Host " - Gebruik Set-LabelPolicy met het voorafgaande DefaultLabelId om naar de oude situatie terug te keren." -ForegroundColor Gray Write-Host " - Houd er rekening mee dat documenten die al zijn gelabeld hun label behouden." -ForegroundColor Gray Write-Host " - Documenteer elke revertactie als change-record voor audits." -ForegroundColor Gray } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { if ($Monitoring) { $result = Invoke-Monitoring if ($result.IsCompliant) { exit 0 } else { exit 1 } } elseif ($Remediation) { if (-not $PolicyName -or -not $DefaultLabelId) { throw "Voor remediatie zijn -PolicyName en -DefaultLabelId verplicht." } Invoke-Remediation -PolicyName $PolicyName -DefaultLabelId $DefaultLabelId -WhatIf:$WhatIf } elseif ($Revert) { Invoke-Revert } else { Write-Host "Gebruik een van de volgende parameters:" -ForegroundColor Yellow Write-Host " -Monitoring Controleer standaardlabelconfiguratie" -ForegroundColor Gray Write-Host " -Remediation -PolicyName <naam> -DefaultLabelId <guid>" -ForegroundColor Gray Write-Host " -Revert Toon informatie over het terugdraaien" -ForegroundColor Gray Write-Host " -WhatIf Combineer met Remediation voor een dry-run" -ForegroundColor Gray } } catch { Write-Error "Script-fout: $_" exit 2 } finally { $complianceSession = Get-PSSession | Where-Object { $_.ConfigurationName -eq "Microsoft.Exchange" -and $_.UserName -match "Compliance" } if ($complianceSession) { Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } Write-Host "`n========================================`n" -ForegroundColor Cyan } # ============================================================================ # EXITCODES # ============================================================================ # 0 = Compliant # 1 = Niet compliant / aandacht nodig # 2 = Fout tijdens uitvoering

Risico zonder implementatie

Risico zonder implementatie
Hoog: Zonder standaardlabel blijft het beschermingsniveau afhankelijk van individuele keuzes en ontstaan er structureel onversleutelde documenten. Auditbewijzen ontbreken, waardoor toezichthouders sancties opleggen en incidenten moeilijk beheersbaar zijn.

Management Samenvatting

Stel een standaard sensitivity label met versleuteling verplicht voor alle Microsoft 365-documenten en e-mails, borg governance en monitoring via Purview en PowerShell, en herstuur het beleid onmiddellijk bij afwijkingen. Dit vormt de basis voor aantoonbare naleving van BIO, AVG en NIS2.