Versleuteling In Microsoft 365: Complete Beveiliging Van Gegevens In Transit En Bij Rust

💼 Management Samenvatting

Versleuteling vormt de ruggengraat van informatiebeveiliging in Microsoft 365 en beschermt gegevens zowel tijdens transport als wanneer deze in rust zijn. Voor Nederlandse overheidsorganisaties is een volledig begrip van de versleutelingslagen in Microsoft 365 essentieel om te voldoen aan de Baseline Informatiebeveiliging Overheid (BIO), de Algemene Verordening Gegevensbescherming (AVG) en de NIS2-richtlijn.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
40u (tech: 16u)
Van toepassing op:
Microsoft 365 E3
Microsoft 365 E5
Exchange Online
SharePoint Online
OneDrive for Business
Microsoft Teams
Office 365

Zonder adequate versleuteling lopen organisaties aanzienlijke risico's. Onversleutelde e-mails kunnen worden onderschept tijdens transport, waardoor gevoelige overheidsinformatie of persoonsgegevens in handen van onbevoegden kunnen komen. Bestanden in SharePoint of OneDrive die niet versleuteld zijn, kunnen bij een datalek direct gelezen worden zonder aanvullende authenticatie. Dit leidt tot potentiële AVG-schendingen met boetes tot €20 miljoen of 4% van de wereldwijde jaaromzet. Bovendien vereisen de BIO normen 10.01 en 10.02 expliciet versleuteling voor gevoelige informatie, en schrijft de NIS2-richtlijn voor dat essentiële entiteiten passende cryptografische maatregelen moeten implementeren. Het niet implementeren van adequate versleuteling leidt tot een zwakke bewijspositie bij audits, reputatieschade wanneer datalekken worden gepubliceerd, en mogelijk zelfs tot uitsluiting van aanbestedingen waarbij versleuteling als harde eis is gesteld. Microsoft 365 biedt meerdere lagen van versleuteling: versleuteling in transit via TLS 1.2 of hoger voor alle communicatie, versleuteling bij rust met BitLocker voor alle data op Microsoft's datacenters, en optionele client-side versleuteling via Microsoft Purview Information Protection voor extra bescherming. Deze gelaagde aanpak zorgt ervoor dat gegevens beschermd blijven ongeacht waar zij zich bevinden in de Microsoft 365-omgeving.

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

Implementatie

Dit artikel biedt een complete gids voor versleuteling in Microsoft 365, waarbij zowel de automatisch ingeschakelde standaardversleuteling als de configuratie-opties die organisaties zelf kunnen instellen worden behandeld. Het artikel beschrijft hoe Exchange Online automatisch TLS 1.2 of hoger gebruikt voor alle e-mailcommunicatie, hoe SharePoint en OneDrive BitLocker-versleuteling gebruiken voor alle data bij rust, en hoe Microsoft Teams end-to-end versleuteling ondersteunt voor gevoelige gesprekken. Daarnaast wordt uitgebreid ingegaan op Microsoft Purview Information Protection, waarmee organisaties gevoelige documenten kunnen classificeren en versleutelen met sensitivity labels, en hoe Rights Management Services (RMS) en Azure Information Protection extra bescherming bieden voor vertrouwelijke documenten. Het artikel behandelt ook praktische aspecten zoals het controleren van de versleutelingsstatus, het configureren van minimaal vereiste TLS-versies, het beheren van versleutelingssleutels, en het monitoren van versleutelingsgedrag via logging en rapportage. Nederlandse overheidsorganisaties leren hoe zij kunnen verifiëren dat alle verplichte versleutelingslagen actief zijn, hoe zij aanvullende versleutelingsmaatregelen kunnen implementeren voor extra gevoelige informatie, en hoe zij compliance kunnen aantonen richting auditors en toezichthouders.

Vereisten en Juridische Context

Versleuteling in Microsoft 365 is niet alleen een technische kwestie, maar ook een juridische verplichting voor Nederlandse overheidsorganisaties. De Baseline Informatiebeveiliging Overheid (BIO) vereist in norm 10.01 dat organisaties passende cryptografische maatregelen treffen voor de bescherming van gevoelige informatie, waarbij onderscheid wordt gemaakt tussen informatie met verschillende classificatieniveaus. Norm 10.02 specificeert dat organisaties moeten beschikken over een cryptografiebeleid dat definieert wanneer en hoe versleuteling wordt toegepast. De Algemene Verordening Gegevensbescherming (AVG) stelt in artikel 32 dat organisaties passende technische en organisatorische maatregelen moeten treffen, waarbij expliciet versleuteling wordt genoemd als mogelijke maatregel. Voor bijzondere categorieën van persoonsgegevens, zoals gezondheidsgegevens of etnische gegevens, geldt een nog strengere standaard waarbij versleuteling vrijwel altijd noodzakelijk is.

De NIS2-richtlijn, die sinds 2024 van kracht is voor essentiële en belangrijke entiteiten in Nederland, vereist dat organisaties passende maatregelen treffen voor de beveiliging van netwerk- en informatiesystemen, waarbij expliciet cryptografie wordt genoemd. Voor organisaties in kritieke sectoren zoals de publieke sector, gezondheidszorg, of financiële dienstverlening zijn deze vereisten nog strenger. Daarnaast moeten Nederlandse overheidsorganisaties rekening houden met sectorale richtlijnen, zoals de specifieke eisen voor gemeenten, provincies of rijksorganisaties, die vaak aanvullende versleutelingsvereisten bevatten voor bepaalde categorieën informatie.

Vanuit technisch perspectief vereist een volledige versleutelingsconfiguratie in Microsoft 365 minimaal Microsoft 365 E3- of E5-licenties voor alle gebruikers, omdat deze licenties toegang bieden tot Microsoft Purview Information Protection en Azure Information Protection. Voor organisaties die alleen basisversleuteling nodig hebben, is Microsoft 365 E1 voldoende, maar deze licentie biedt beperkte mogelijkheden voor geavanceerde classificatie en versleuteling met sensitivity labels. Daarnaast moeten beheerders beschikken over de juiste rollen, zoals Compliance Administrator voor het configureren van sensitivity labels, Security Administrator voor het beheren van versleutelingsinstellingen, en Global Reader voor het lezen van versleutelingsconfiguraties.

Organisatorisch is het noodzakelijk dat er een duidelijk cryptografiebeleid bestaat dat definieert wanneer versleuteling moet worden toegepast, welke informatie welke versleutelingsniveaus vereist, en wie verantwoordelijk is voor het beheren en monitoren van versleutelingsconfiguraties. Dit beleid moet zijn afgestemd op het classificatieschema van de organisatie, waarbij bijvoorbeeld informatie met classificatie 'Vertrouwelijk' altijd versleuteld moet zijn, terwijl 'Openbaar' informatie mogelijk geen versleuteling vereist. Daarnaast moet er een proces zijn voor het beoordelen van nieuwe Microsoft 365-services en -functies op hun versleutelingsmogelijkheden en voor het bijwerken van het cryptografiebeleid wanneer nieuwe dreigingen of compliance-vereisten zich voordoen.

Implementatie van Versleutelingslagen

Microsoft 365 implementeert versleuteling op meerdere niveaus, waarbij sommige versleutelingslagen automatisch actief zijn zonder dat organisaties actie hoeven te ondernemen, terwijl andere lagen configuratie vereisen. De eerste laag, versleuteling in transit, is standaard ingeschakeld voor alle Microsoft 365-services. Exchange Online gebruikt TLS 1.2 of hoger voor alle e-mailcommunicatie, zowel binnen Microsoft 365 als voor externe e-mailservers. SharePoint Online en OneDrive for Business gebruiken HTTPS met TLS 1.2 of hoger voor alle webcommunicatie, en Microsoft Teams versleutelt alle communicatie tussen clients en servers met TLS 1.2. Organisaties kunnen via Exchange Online PowerShell de minimale TLS-versie configureren en verouderde TLS-versies blokkeren om ervoor te zorgen dat alleen de meest beveiligde verbindingen worden toegestaan.

De tweede laag, versleuteling bij rust, wordt automatisch toegepast door Microsoft op alle data die wordt opgeslagen in Microsoft datacenters. Exchange Online gebruikt BitLocker-versleuteling voor alle mailbox-data op schijf, waarbij de versleutelingssleutels worden beheerd door Microsoft. SharePoint Online en OneDrive for Business gebruiken eveneens BitLocker-versleuteling voor alle opgeslagen bestanden en documenten. Deze versleuteling is volledig transparant voor gebruikers en vereist geen configuratie, maar organisaties kunnen wel verifiëren dat deze actief is via Microsoft's compliance- en beveiligingsrapportages. Voor organisaties met zeer strikte compliance-vereisten kunnen Customer-Managed Keys (CMK) worden geconfigureerd via Azure Key Vault, waardoor organisaties volledige controle krijgen over de versleutelingssleutels die worden gebruikt voor Microsoft 365-data.

De derde laag, client-side versleuteling en classificatie, wordt geleverd via Microsoft Purview Information Protection. Deze laag stelt organisaties in staat om sensitivity labels te definiëren die automatisch versleuteling kunnen toepassen op documenten en e-mails. Wanneer een gebruiker een sensitivity label toepast op een document, wordt dat document automatisch versleuteld voordat het wordt opgeslagen of verzonden. De versleuteling gebruikt Azure Rights Management Services (RMS), wat betekent dat alleen geautoriseerde gebruikers het document kunnen openen, zelfs wanneer het wordt gedeeld buiten de organisatie. Organisaties kunnen sensitivity labels configureren met verschillende versleutelingsniveaus, waarbij bijvoorbeeld 'Vertrouwelijk' altijd versleuteling vereist, terwijl 'Intern' mogelijk geen versleuteling nodig heeft. De configuratie van sensitivity labels gebeurt via het Microsoft Purview Compliance-portaal, waarbij beheerders labels kunnen definiëren met specifieke versleutelingsinstellingen, toegangsbeperkingen en visuele markeringen zoals watermerken of headers.

Voor een volledige implementatie moeten organisaties beginnen met het definiëren van hun classificatieschema, waarbij zij bepalen welke informatiecategorieën welke versleutelingsniveaus vereisen. Vervolgens worden sensitivity labels aangemaakt in het Purview-portaal die overeenkomen met deze classificaties, waarbij voor elke label de gewenste versleutelingsinstellingen worden geconfigureerd. Labels kunnen vervolgens worden gepubliceerd naar gebruikersgroepen, zodat gebruikers de juiste labels kunnen toepassen op hun documenten en e-mails. Voor automatische classificatie kunnen organisaties trainable classifiers of informatiebeschermingssensoren gebruiken die automatisch gevoelige informatie detecteren en de juiste labels toepassen. Daarnaast kunnen organisaties beleidsregels configureren die automatisch labels toepassen op basis van bepaalde voorwaarden, zoals de aanwezigheid van persoonsgegevens, creditcardnummers of andere gevoelige informatiepatronen.

Compliance en Framework Mapping

Een goed geconfigureerde versleutelingsarchitectuur in Microsoft 365 ondersteunt directe compliance met meerdere frameworks. De Baseline Informatiebeveiliging Overheid (BIO) vereist in norm 10.01 passende cryptografische maatregelen voor gevoelige informatie, waarbij norm 10.02 specificeert dat organisaties een cryptografiebeleid moeten hebben. Door Microsoft 365-versleuteling correct te configureren en te documenteren, kunnen organisaties aantonen dat zij voldoen aan deze normen. De automatische versleuteling in transit en bij rust dekt de basisvereisten, terwijl sensitivity labels en Azure Information Protection de mogelijkheid bieden om aanvullende versleutelingsmaatregelen te treffen voor bijzonder gevoelige informatie in lijn met de organisatiespecifieke classificaties.

De Algemene Verordening Gegevensbescherming (AVG) vereist in artikel 32 passende technische en organisatorische maatregelen, waarbij versleuteling expliciet wordt genoemd als mogelijke maatregel. Voor bijzondere categorieën van persoonsgegevens is versleuteling vrijwel altijd noodzakelijk. Microsoft 365-versleuteling helpt organisaties te voldoen aan deze vereisten door persoonsgegevens te beschermen zowel tijdens transport als wanneer deze in rust zijn. Wanneer organisaties sensitivity labels gebruiken om persoonsgegevens automatisch te classificeren en te versleutelen, kunnen zij bovendien aantonen dat zij actief maatregelen nemen om dataminimalisatie en opslagbeperking te realiseren, wat vereist is onder artikel 5 van de AVG.

De NIS2-richtlijn vereist dat essentiële en belangrijke entiteiten passende maatregelen treffen voor de beveiliging van netwerk- en informatiesystemen, waarbij cryptografie expliciet wordt genoemd. Microsoft 365-versleuteling helpt organisaties te voldoen aan deze vereisten door kritieke informatiesystemen te beschermen tegen ongeautoriseerde toegang. Voor organisaties in kritieke sectoren kunnen aanvullende maatregelen zoals Customer-Managed Keys noodzakelijk zijn om volledige controle te behouden over versleutelingssleutels en om te voldoen aan specifieke sectorale eisen.

ISO 27001 controle A.8.24 vereist dat organisaties cryptografische controles gebruiken voor de bescherming van informatie. Microsoft 365-versleuteling biedt een implementatie van deze controles, waarbij organisaties kunnen aantonen via auditlogging en rapportage dat versleuteling actief is en correct functioneert. Door gebruik te maken van Microsoft Purview Compliance-rapportages kunnen organisaties snel aantonen welke versleutelingsmaatregelen actief zijn, welke sensitivity labels zijn geconfigureerd, en hoe vaak versleutelde documenten worden gebruikt, wat waardevol bewijsmateriaal is tijdens externe audits.

Monitoring en Verificatie

Gebruik PowerShell-script encryption-microsoft-365.ps1 (functie Invoke-Monitoring) – Controleert of versleuteling correct is geconfigureerd in Microsoft 365, inclusief TLS-instellingen, sensitivity labels en versleutelingsstatus.

Regelmatige monitoring van versleutelingsconfiguraties is essentieel om te borgen dat alle vereiste versleutelingslagen actief blijven en correct functioneren. Organisaties moeten minimaal maandelijks controleren of TLS 1.2 of hoger nog steeds de minimale vereiste versie is voor alle Microsoft 365-services, of er geen verouderde TLS-versies zijn ingeschakeld die een beveiligingsrisico vormen, en of sensitivity labels correct zijn geconfigureerd en actief zijn. Daarnaast moeten organisaties periodiek controleren of gebruikers de juiste sensitivity labels toepassen op gevoelige documenten en e-mails, en of automatische classificatie correct functioneert voor het detecteren en labelen van gevoelige informatie.

Microsoft biedt verschillende rapportages en loggingmogelijkheden voor het monitoren van versleuteling. Het Microsoft Purview Compliance-portaal biedt rapportages over het gebruik van sensitivity labels, waarbij organisaties kunnen zien hoeveel documenten en e-mails zijn gelabeld, welke labels het meest worden gebruikt, en of er documenten zijn die mogelijk versleuteling nodig hebben maar nog niet zijn gelabeld. Exchange Online biedt logging van TLS-verbindingen, waarbij organisaties kunnen zien welke TLS-versies worden gebruikt voor e-mailcommunicatie en of er verbindingen zijn die verouderde TLS-versies gebruiken. Daarnaast kunnen organisaties via Microsoft Graph API en PowerShell-scripts geautomatiseerde controles uitvoeren die de versleutelingsstatus verifiëren en waarschuwingen genereren wanneer afwijkingen worden gedetecteerd.

Voor een volledige audit trail moeten organisaties documenteren welke versleutelingsmaatregelen actief zijn, wanneer deze zijn geconfigureerd, wie verantwoordelijk is voor het beheer ervan, en welke wijzigingen in de loop van de tijd zijn doorgevoerd. Deze documentatie is essentieel voor externe audits en voor het aantonen van compliance richting toezichthouders. Daarnaast moeten organisaties periodieke tests uitvoeren om te verifiëren dat versleuteling daadwerkelijk werkt zoals verwacht, bijvoorbeeld door testdocumenten te versleutelen en te verifiëren dat deze alleen door geautoriseerde gebruikers kunnen worden geopend, of door e-mailcommunicatie te monitoren om te verifiëren dat deze inderdaad via TLS wordt verzonden.

Remediatie en Verbetering

Gebruik PowerShell-script encryption-microsoft-365.ps1 (functie Invoke-Remediation) – Configureert versleutelingsinstellingen en sensitivity labels om te voldoen aan de Nederlandse Baseline voor Veilige Cloud.

Wanneer monitoring uitwijst dat versleutelingsconfiguraties niet optimaal zijn of niet voldoen aan compliance-vereisten, moeten organisaties gericht kunnen bijsturen. Remediatie begint met het analyseren van de huidige situatie: welke versleutelingslagen zijn actief, welke TLS-versies worden gebruikt, welke sensitivity labels zijn geconfigureerd, en waar zijn er hiaten in vergelijking met het cryptografiebeleid. Vervolgens worden, in overleg tussen security officers, compliance officers en IT-beheerders, voorstellen gemaakt om ontbrekende versleutelingsmaatregelen toe te voegen of bestaande configuraties te verbeteren.

Voor TLS-configuratie kunnen organisaties via Exchange Online PowerShell de minimale TLS-versie verhogen naar TLS 1.2 of hoger, en verouderde TLS-versies zoals TLS 1.0 of 1.1 blokkeren. Dit vereist echter zorgvuldige planning, omdat sommige oudere systemen mogelijk nog steeds verouderde TLS-versies gebruiken en verbindingen kunnen verliezen wanneer deze worden geblokkeerd. Organisaties moeten eerst een impactanalyse uitvoeren om te identificeren welke systemen of clients mogelijk worden beïnvloed, en vervolgens gefaseerd de minimale TLS-versie verhogen terwijl zij monitoring uitvoeren om te detecteren of er verbindingsproblemen optreden.

Voor sensitivity labels en client-side versleuteling kunnen organisaties nieuwe labels aanmaken of bestaande labels aanpassen om ervoor te zorgen dat alle vereiste versleutelingsniveaus beschikbaar zijn. Wanneer labels ontbreken, kunnen deze worden aangemaakt via het Microsoft Purview Compliance-portaal, waarbij beheerders de gewenste versleutelingsinstellingen configureren en labels publiceren naar de relevante gebruikersgroepen. Voor bestaande labels die mogelijk verouderde instellingen hebben, kunnen beheerders de configuratie bijwerken en vervolgens de labels opnieuw publiceren. Het is belangrijk om gebruikers te informeren over nieuwe of gewijzigde labels en hen te trainen in het correct toepassen ervan, zodat de versleutelingsmaatregelen daadwerkelijk worden gebruikt in de praktijk.

In gevallen waar automatische versleuteling nodig is maar nog niet is geconfigureerd, kunnen organisaties automatische labeling-beleidsregels opzetten die gevoelige informatie detecteren en automatisch de juiste sensitivity labels toepassen. Deze beleidsregels kunnen worden geconfigureerd om te zoeken naar specifieke informatiepatronen, zoals creditcardnummers, BSN-nummers, of andere persoonsgegevens, en automatisch versleuteling toe te passen wanneer deze worden gedetecteerd. Dit helpt ervoor te zorgen dat gevoelige informatie niet per ongeluk onversleuteld wordt opgeslagen of verzonden, zelfs wanneer gebruikers vergeten om handmatig labels toe te passen.

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 Controle en configuratie van versleuteling in Microsoft 365 .DESCRIPTION Dit script controleert of versleuteling correct is geconfigureerd in Microsoft 365, inclusief TLS-instellingen voor e-mailcommunicatie, sensitivity labels voor client-side versleuteling, en de algemene versleutelingsstatus. Het script ondersteunt zowel monitoring als remediatie om te voldoen aan de Nederlandse Baseline voor Veilige Cloud en compliance met BIO, AVG en NIS2. .NOTES Filename: encryption-microsoft-365.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-01-16 Last Modified: 2025-01-16 Version: 1.0 Related JSON: content/m365/information-protection/encryption-microsoft-365.json Category: information-protection Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\encryption-microsoft-365.ps1 -Monitoring Controleert of versleuteling correct is geconfigureerd in Microsoft 365. .EXAMPLE .\encryption-microsoft-365.ps1 -Remediation Configureert versleutelingsinstellingen en sensitivity labels om te voldoen aan de baseline. #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph, ExchangeOnlineManagement [CmdletBinding()] param( [Parameter(HelpMessage = "Monitor current encryption configuration status")] [switch]$Monitoring, [Parameter(HelpMessage = "Apply recommended encryption configuration")] [switch]$Remediation, [Parameter(HelpMessage = "Revert to previous configuration")] [switch]$Revert, [Parameter(HelpMessage = "Show what would happen without making changes")] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' # ============================================================================ # HEADER # ============================================================================ Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Encryption Microsoft 365" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan # ============================================================================ # GLOBAL SETTINGS # ============================================================================ $script:MinTLSVersion = "1.2" $script:BaselineSensitivityLabelPrefix = "Baseline -" # ============================================================================ # FUNCTIONS # ============================================================================ function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met benodigde Microsoft 365-services #> [CmdletBinding()] param() try { Write-Host "Verbinden met Microsoft 365-services..." -ForegroundColor Gray # Check if already connected to Microsoft Graph $mgContext = Get-MgContext -ErrorAction SilentlyContinue if (-not $mgContext) { Write-Host " Verbinden met Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes "InformationProtectionPolicy.Read.All", "Policy.Read.All" -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Microsoft Graph" -ForegroundColor Green } else { Write-Host " [OK] Al verbonden met Microsoft Graph" -ForegroundColor Green } # Check if already connected to Exchange Online $exoSession = Get-PSSession | Where-Object { $_.ConfigurationName -eq "Microsoft.Exchange" -and $_.State -eq "Opened" } if (-not $exoSession) { Write-Host " Verbinden met Exchange Online..." -ForegroundColor Gray Connect-ExchangeOnline -ShowBanner:$false -ErrorAction Stop | Out-Null Write-Host " [OK] Verbonden met Exchange Online" -ForegroundColor Green } else { Write-Host " [OK] Al verbonden met Exchange Online" -ForegroundColor Green } Write-Host "" } catch { Write-Host " [FAIL] Fout bij verbinden: $_" -ForegroundColor Red throw } } function Test-TLSConfiguration { <# .SYNOPSIS Controleert TLS-configuratie voor Exchange Online #> [CmdletBinding()] param() try { Write-Host "TLS-configuratie controleren..." -ForegroundColor Gray # Check TLS settings via Exchange Online $tlsSettings = Get-OrganizationConfig -ErrorAction SilentlyContinue if ($tlsSettings) { Write-Host " [OK] TLS-configuratie opgehaald" -ForegroundColor Green # Note: Exchange Online uses TLS 1.2+ by default, but we verify Write-Host " [INFO] Exchange Online gebruikt standaard TLS 1.2 of hoger" -ForegroundColor Cyan return @{ Status = "Compliant" Message = "TLS 1.2+ is de standaard voor Exchange Online" } } else { Write-Host " [WARNING] Kon TLS-configuratie niet verifiëren" -ForegroundColor Yellow return @{ Status = "Unknown" Message = "Kan TLS-configuratie niet verifiëren" } } } catch { Write-Host " [WARNING] Fout bij controleren TLS: $_" -ForegroundColor Yellow return @{ Status = "Unknown" Message = "Fout bij controleren TLS-configuratie" } } } function Test-SensitivityLabels { <# .SYNOPSIS Controleert of sensitivity labels zijn geconfigureerd #> [CmdletBinding()] param() try { Write-Host "Sensitivity labels controleren..." -ForegroundColor Gray $labels = Get-MgInformationProtectionLabel -ErrorAction SilentlyContinue if ($labels -and $labels.Count -gt 0) { Write-Host " [OK] Gevonden $($labels.Count) sensitivity label(s)" -ForegroundColor Green $labelsWithEncryption = $labels | Where-Object { $_.ProtectionSettings -ne $null } if ($labelsWithEncryption.Count -gt 0) { Write-Host " [OK] $($labelsWithEncryption.Count) label(s) met versleuteling geconfigureerd" -ForegroundColor Green foreach ($label in $labelsWithEncryption) { Write-Host " - $($label.Name): Versleuteling actief" -ForegroundColor Cyan } return @{ Status = "Compliant" TotalLabels = $labels.Count LabelsWithEncryption = $labelsWithEncryption.Count Message = "Sensitivity labels met versleuteling gevonden" } } else { Write-Host " [WARNING] Geen labels met versleuteling gevonden" -ForegroundColor Yellow return @{ Status = "Partial" TotalLabels = $labels.Count LabelsWithEncryption = 0 Message = "Sensitivity labels gevonden, maar zonder versleuteling" } } } else { Write-Host " [WARNING] Geen sensitivity labels gevonden" -ForegroundColor Yellow return @{ Status = "NonCompliant" TotalLabels = 0 LabelsWithEncryption = 0 Message = "Geen sensitivity labels geconfigureerd" } } } catch { Write-Host " [WARNING] Fout bij controleren sensitivity labels: $_" -ForegroundColor Yellow return @{ Status = "Unknown" Message = "Kan sensitivity labels niet controleren" } } } function Test-EncryptionAtRest { <# .SYNOPSIS Verifieert dat versleuteling bij rust actief is #> [CmdletBinding()] param() try { Write-Host "Versleuteling bij rust controleren..." -ForegroundColor Gray # Microsoft 365 uses BitLocker encryption at rest by default for all data # This is automatically enabled and cannot be disabled Write-Host " [OK] Microsoft 365 gebruikt standaard BitLocker-versleuteling voor alle data" -ForegroundColor Green Write-Host " [INFO] Versleuteling bij rust is automatisch actief voor Exchange, SharePoint, OneDrive en Teams" -ForegroundColor Cyan return @{ Status = "Compliant" Message = "Versleuteling bij rust is standaard actief in Microsoft 365" } } catch { Write-Host " [WARNING] Fout bij controleren versleuteling bij rust: $_" -ForegroundColor Yellow return @{ Status = "Unknown" Message = "Kan versleuteling bij rust niet verifiëren" } } } function Invoke-Monitoring { <# .SYNOPSIS Monitors and reports current encryption configuration status .DESCRIPTION Checks current encryption configuration against security baseline requirements. Reports compliance status and identifies non-compliant settings. .OUTPUTS Returns hashtable with compliance status and findings #> [CmdletBinding()] param() try { Write-Host "Monitoring:" -ForegroundColor Yellow # Connect to required services Connect-RequiredServices # Initialize result object $result = @{ isCompliant = $true timestamp = Get-Date findings = @() details = @{} } # Check TLS configuration $tlsResult = Test-TLSConfiguration $result.details["TLS"] = $tlsResult if ($tlsResult.Status -ne "Compliant" -and $tlsResult.Status -ne "Unknown") { $result.isCompliant = $false $result.findings += "TLS-configuratie vereist aandacht: $($tlsResult.Message)" } # Check Sensitivity Labels $labelsResult = Test-SensitivityLabels $result.details["SensitivityLabels"] = $labelsResult if ($labelsResult.Status -eq "NonCompliant") { $result.isCompliant = $false $result.findings += "Geen sensitivity labels geconfigureerd" } elseif ($labelsResult.Status -eq "Partial") { Write-Host " [WARNING] Sensitivity labels gevonden zonder versleuteling" -ForegroundColor Yellow $result.findings += "Sensitivity labels zonder versleuteling geconfigureerd" } # Check Encryption at Rest $encryptionResult = Test-EncryptionAtRest $result.details["EncryptionAtRest"] = $encryptionResult # Summary Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "SAMENVATTING:" -ForegroundColor Cyan Write-Host " TLS-configuratie: $($tlsResult.Status)" -ForegroundColor White Write-Host " Sensitivity labels: $($labelsResult.TotalLabels) totaal, $($labelsResult.LabelsWithEncryption) met versleuteling" -ForegroundColor White Write-Host " Versleuteling bij rust: $($encryptionResult.Status)" -ForegroundColor White if ($result.isCompliant) { Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green Write-Host " Basisversleuteling is actief. Overweeg sensitivity labels voor extra bescherming." -ForegroundColor Gray } else { Write-Host "`n[WARNING] ATTENTIE NODIG" -ForegroundColor Yellow Write-Host " Gevonden issues:" -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 Applies recommended encryption configuration .DESCRIPTION Implements the recommended encryption configuration to meet security baseline. Configures TLS settings and creates baseline sensitivity labels if needed. .PARAMETER WhatIf Shows what would be changed without making actual changes #> [CmdletBinding(SupportsShouldProcess)] param() try { Write-Host "`nRemediatie:" -ForegroundColor Yellow # Connect to required services Connect-RequiredServices Write-Host "Versleutelingsconfiguratie toepassen..." -ForegroundColor Gray # TLS configuration note Write-Host "`n[INFO] TLS-configuratie:" -ForegroundColor Cyan Write-Host " Exchange Online gebruikt standaard TLS 1.2 of hoger voor alle communicatie." -ForegroundColor White Write-Host " Geen aanvullende configuratie vereist voor basis-TLS-versleuteling." -ForegroundColor White # Check and create sensitivity labels if needed $labels = Get-MgInformationProtectionLabel -ErrorAction SilentlyContinue if (-not $labels -or $labels.Count -eq 0) { Write-Host "`n[INFO] Sensitivity labels:" -ForegroundColor Cyan Write-Host " Geen sensitivity labels gevonden. Voor het aanmaken van sensitivity labels:" -ForegroundColor White Write-Host " 1. Ga naar Microsoft Purview Compliance-portaal" -ForegroundColor White Write-Host " 2. Navigeer naar Information protection > Labels" -ForegroundColor White Write-Host " 3. Maak labels aan met versleutelingsinstellingen voor gevoelige informatie" -ForegroundColor White Write-Host " 4. Publiceer labels naar gebruikersgroepen" -ForegroundColor White Write-Host "`n PowerShell-ondersteuning voor het aanmaken van labels is beperkt." -ForegroundColor Yellow Write-Host " Gebruik het Purview-portaal of Microsoft Graph API voor geavanceerde configuratie." -ForegroundColor Yellow } else { Write-Host "`n[OK] Sensitivity labels zijn al geconfigureerd" -ForegroundColor Green } # Encryption at Rest is automatic Write-Host "`n[OK] Versleuteling bij rust:" -ForegroundColor Green Write-Host " BitLocker-versleuteling is automatisch actief voor alle Microsoft 365-data." -ForegroundColor White Write-Host "`n[INFO] Remediatie voltooid" -ForegroundColor Green Write-Host " Basisversleuteling is actief. Overweeg aanvullende sensitivity labels via het Purview-portaal." -ForegroundColor Gray } catch { Write-Host "`n[FAIL] Fout tijdens remediatie: $_" -ForegroundColor Red throw } } function Invoke-Revert { <# .SYNOPSIS Reverts configuration to previous state .DESCRIPTION Note: Microsoft 365 encryption at rest cannot be disabled. This function provides information about what cannot be reverted. #> [CmdletBinding(SupportsShouldProcess)] param() try { Write-Host "`nRevert:" -ForegroundColor Yellow Write-Host "[INFO] Versleuteling in Microsoft 365:" -ForegroundColor Cyan Write-Host " - Versleuteling bij rust (BitLocker) kan niet worden uitgeschakeld - dit is standaard actief" -ForegroundColor White Write-Host " - TLS-versleuteling in transit is standaard actief en kan niet worden uitgeschakeld" -ForegroundColor White Write-Host " - Sensitivity labels kunnen handmatig worden verwijderd via het Purview-portaal indien nodig" -ForegroundColor White Write-Host "`n Er zijn geen wijzigingen die kunnen worden teruggedraaid via dit script." -ForegroundColor Yellow } catch { Write-Host "`n[FAIL] Fout tijdens revert: $_" -ForegroundColor Red throw } } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { # Determine which action to perform if ($Revert) { if ($WhatIf) { Write-Host "WhatIf: Zou versleutelingsconfiguratie informatie tonen (geen wijzigingen mogelijk)" -ForegroundColor Yellow } else { Invoke-Revert } } elseif ($Remediation) { if ($WhatIf) { Write-Host "WhatIf: Zou versleutelingsconfiguratie informatie tonen" -ForegroundColor Yellow Write-Host " - TLS is standaard actief (geen wijzigingen nodig)" -ForegroundColor Gray Write-Host " - Versleuteling bij rust is standaard actief (geen wijzigingen nodig)" -ForegroundColor Gray Write-Host " - Sensitivity labels kunnen handmatig worden geconfigureerd via Purview-portaal" -ForegroundColor Gray } else { Invoke-Remediation } } elseif ($Monitoring) { $result = Invoke-Monitoring # Exit with appropriate code for automation if ($result.isCompliant) { exit 0 # Success - Compliant } else { exit 1 # Warning - Needs attention } } else { # No parameters - show usage Write-Host "Beschikbare parameters:" -ForegroundColor Yellow Write-Host " -Monitoring : Controleer huidige versleutelingsconfiguratie" -ForegroundColor Gray Write-Host " -Remediation : Pas aanbevolen versleutelingsconfiguratie toe" -ForegroundColor Gray Write-Host " -Revert : Toon informatie over terugdraaien (beperkt mogelijk)" -ForegroundColor Gray Write-Host " -WhatIf : Preview wijzigingen zonder toe te passen" -ForegroundColor Gray Write-Host "`nVoorbeeld: .\encryption-microsoft-365.ps1 -Monitoring" -ForegroundColor Cyan } } catch { Write-Error "Script-uitvoering mislukt: $_" exit 2 # Error } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan # Cleanup sessions if needed $exoSession = Get-PSSession | Where-Object { $_.ConfigurationName -eq "Microsoft.Exchange" } if ($exoSession) { Write-Host "Verbindingen sluiten..." -ForegroundColor Gray Disconnect-ExchangeOnline -Confirm:$false -ErrorAction SilentlyContinue | Out-Null } } # ============================================================================ # EXIT CODES # ============================================================================ # 0 = Success / Compliant # 1 = Warning / Needs attention # 2 = Error / Execution failed

Risico zonder implementatie

Risico zonder implementatie
High: Kritiek risico op datalekken, AVG-schendingen met potentiële boetes tot €20 miljoen of 4% van de wereldwijde jaaromzet, non-compliance met BIO normen 10.01 en 10.02, NIS2-vereisten en ISO 27001 controles. Onversleutelde gegevens zijn direct toegankelijk bij een datalek, wat leidt tot ernstige reputatieschade en mogelijke uitsluiting van aanbestedingen.

Management Samenvatting

Microsoft 365 biedt meerdere lagen van automatische versleuteling (TLS voor transit, BitLocker voor data bij rust). Configureer sensitivity labels en Azure Information Protection voor extra bescherming van gevoelige informatie. Verifieer regelmatig dat alle versleutelingslagen actief zijn. Kritieke compliance-vereiste voor BIO, AVG en NIS2.