DLP Policies Voor Microsoft Teams

💼 Management Samenvatting

Datalekpreventiebeleid voor Microsoft Teams voorkomt dat vertrouwelijke gegevens tijdens chats, kanaalgesprekken en gedeelde bestanden weglekken doordat berichten in realtime worden geëvalueerd, geblokkeerd en begeleid met duidelijke meldingen aan de verzender.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
16u (tech: 8u)
Van toepassing op:
Microsoft Teams
M365 Compliance

Teams fungeert als het primaire samenwerkingsplatform voor projectgroepen, crisisteams en externe partners en is daardoor een aantrekkelijk kanaal voor gegevensdiefstal. Medewerkers kopiëren onbewust creditcardgegevens, burgerservicenummers of vertrouwelijke projectcodes naar een chat om snel te kunnen schakelen, terwijl gastgebruikers dezelfde informatie kunnen lezen en screenshots of exports kunnen maken. Ook gedeelde bestanden in kanalen worden vaak doorgestuurd naar persoonlijke opslag zonder aanvullende controle. DLP voor Teams verkleint deze risico's door elk bericht en elk gedeeld bestand te inspecteren op gevoelige inhoud, de verzending onmiddellijk te blokkeren wanneer een patroon wordt gedetecteerd, gebruikers met contextrijke policy tips te coachen en gelijktijdig een volledig auditspoor voor onderzoek en rapportage vast te leggen.

PowerShell Modules Vereist
Primary API: Exchange Online / Compliance
Connection: Connect-IPPSSession
Required Modules: ExchangeOnlineManagement

Implementatie

Een robuust Teams DLP-beleid combineert technische configuratie in Microsoft Purview met duidelijke governance-afspraken. Beheerders definiëren welke Teams-locaties worden afgedekt, welke ingebouwde en aangepaste gevoelige informatietypen relevant zijn en welke acties volgen uit een detectie. Hoogrisicogegevens leiden tot onmiddellijke blokkade, terwijl persoonsgegevens vaak worden doorgestuurd naar een toezichthoudend team voor review. Policy tips leggen uit waarom de verzending is tegengehouden en welke alternatieve kanalen gebruikt mogen worden. Het beleid wordt uitgerold via change management, getest in simulatiemodus en na acceptatie ingeschakeld zodat onderzoeksteams, auditors en lijnmanagers dezelfde controlemaatregelen verstaan en consistent toepassen.

Vereisten

Het vertrekpunt voor een effectief DLP-programma in Microsoft Teams is een solide organisatorische basis. Iedere tenant moet beschikken over een duidelijk mandaat vanuit het CISO-office en een governanceboard die datalekpreventie expliciet opneemt in het samenwerkingsbeleid. Nog voordat een technisch team een policy kan publiceren, moeten de security-architect, het compliance-team en de product owner van Teams gezamenlijk vastleggen welke bedrijfsprocessen door chat en kanaalgesprekken worden ondersteund, welke afdelingen met externe gasten samenwerken en hoe gevoelig de gedeelde informatie is. Zonder deze voorfase blijft elke technische configuratie een geïsoleerde maatregel die niet aansluit op bedrijfsdoelstellingen of wettelijke verplichtingen. Deze voorbereidende analyse levert eveneens de basis op voor risicogewogen beslissingen over uitzonderingen, bewaartermijnen en auditing. Licenties en toegangsrechten vormen de tweede pijler. Organisaties hebben minimaal Microsoft 365 E3 nodig om kernfunctionaliteit te activeren en profiteren van E5 wanneer geavanceerde detectie, automatische remediatie en uitgebreide rapportages vereist zijn. Naast de licentielaag moeten specifieke rollen worden toegekend: een Compliance Administrator of Compliance Data Administrator beheert de Purview-instellingen, terwijl een Global Reader of Teams service owner readonly-inspecties uitvoert. Machtigingen in PowerShell, zoals het kunnen opzetten van een Connect-IPPSSession, worden vooraf getest zodat scripts zoals dlp-teams.ps1 niet stranden op ontbrekende rechten. Deze afspraken worden vastgelegd in het identity-governanceproces zodat onboarding en offboarding van beheerders gecontroleerd verlopen. Een derde vereiste is een gedetailleerde inventarisatie van de informatie die beschermd moet worden. Built-in sensitive info types voor creditcardnummers, burgerservicenummers, IBAN-structuren en EU-debitcards worden gecombineerd met organisatie-eigen patronen, bijvoorbeeld projectcodes of interne documentnummers. Security-architecten beschrijven per patroon de herkomst, de verwachte foutmarge en de gewenste acties, waarna data stewards de definities valideren. Waar nodig worden aangepaste regexdefinities gemaakt, aangevuld met keyword dictionaries om context te leveren. Elke definitie wordt centraal beheerd in het Purview-catalogus zodat verschillende workloads identieke beschrijvingen hanteren en compliance-analisten met één taxonomie kunnen rapporteren. Gebruikersbewustzijn vormt de vierde succesfactor. Teams-berichten worden vaak impulsief verstuurd, dus medewerkers moeten begrijpen waarom een policy tip verschijnt, hoe zij de inhoud kunnen herschrijven en wanneer zij een uitzonderingsverzoek mogen indienen. Dit vereist korte leerinterventies gekoppeld aan onboarding, herhaaltrainingen per kwartaal en duidelijke FAQ-artikelen in het intranet. Communicatieprofessionals zorgen ervoor dat voorbeelden realistisch zijn, bijvoorbeeld een projectleider die een klantcontract deelt of een zorgverlener die patiëntgegevens in een chat zet. Door de toon positief te houden en te benadrukken dat DLP helpt om vertrouwen van burgers en partners te behouden, daalt de weerstand tegen blokkades. Tot slot verlangt een volwassen DLP-programma concrete incidentresponsprocedures. Wanneer een blokkade optreedt, moet het SOC weten welke queue wordt gemonitord, welke responstijd is afgesproken en hoe men contact opneemt met de verzender. Voor high-severity gebeurtenissen wordt een forensische workflow gedefinieerd inclusief ticketregistratie, koppeling aan het AVG-verwerkingsregister en escalatie naar juridische teams indien persoonsgegevens zijn aangeraakt. Documentatie van de procedures wordt opgenomen in het informatiebeveiligingsmanagementsysteem, inclusief sjablonen voor managementrapportages en lessons-learned-sessies. Zo ontstaat een beheersbaar proces waarbij technische controles, mensen en processen elkaar versterken en de kans op gegevenslekken aantoonbaar wordt beperkt.

Implementatie

Gebruik PowerShell-script dlp-teams.ps1 (functie Invoke-Remediation) – PowerShell-automatisering voor consistente inrichting van Teams-DLP-beleid.

De PowerShell-automatisering in dlp-teams.ps1 vormt het technische fundament van de implementatie. Het script maakt via Connect-IPPSSession verbinding met de Purview-omgeving, controleert bestaande beleidssjablonen en maakt vervolgens consistente policies aan over alle geselecteerde Teams. Omdat parameters voor naam, beschrijving, detectiepatronen en acties centraal in het script zijn gedefinieerd, wordt voorkomen dat beheerders per ongeluk afwijkende instellingen kiezen in verschillende tenants of omgevingen. Het script logt per stap welke instellingen zijn toegepast en welke fouten optraden, zodat wijzigingen volledig te herleiden zijn tijdens audits. Wanneer de organisatie meerdere tenants of testomgevingen hanteert, kan hetzelfde script met andere configuratiebestanden worden uitgevoerd, wat de beheerinspanning drastisch verlaagt. Tegelijkertijd blijft een handmatige configuratiestap in het Microsoft Purview complianceportaal noodzakelijk om de bedrijfscontext goed af te stemmen. Beheerders beschrijven de policy als Teams Bescherming Vertrouwelijke Gegevens, kiezen alle Teams-chats en kanaalberichten als locatie en koppelen specifieke businessunits wanneer bepaalde samenwerkingen extra toezicht vereisen. Ze selecteren de relevante gevoelige informatietypen, waaronder creditcardnummers, burgerservicenummers, IBAN-structuren, EU-debitcards en paspoortnummers, en voegen maatwerkpatronen toe voor bijvoorbeeld projectcodes of contractreferenties. Iedere keuze wordt gedocumenteerd in het ontwerpdocument zodat auditors exact begrijpen waarom specifieke types zijn opgenomen en hoe de detectieregels aansluiten op het gegevensregister. Het regelontwerp bepaalt hoe streng het beleid reageert. Voor financiële gegevens wordt een blokkade met hoge ernst geconfigureerd, gecombineerd met het automatisch versturen van een waarschuwing naar het compliance-team. Persoonsgegevens krijgen doorgaans een middelhoge ernst en worden in eerste instantie doorgestuurd voor menselijke beoordeling, zodat bedrijfsprocessen niet onnodig stilvallen. Policy tips leggen uit welk onderdeel van het bericht de blokkade veroorzaakte en verwijzen naar veilige alternatieven zoals versleutelde dossiers in SharePoint. Daarnaast worden uitzonderingsprocessen vastgelegd: als een directieteam onder toezicht staatsgeheimen bespreekt, kan men uitsluitend via vooraf goedgekeurde kanalen werken die niet aan Teams zijn gekoppeld. Voor een gecontroleerde uitrol wordt de policy eerst in testmodus geplaatst. Een pilotgroep van security champions stuurt bewust berichten met dummygegevens zodat detecties en false positives inzichtelijk worden. De SOC-analisten evalueren de gebeurtenissen in het DLP-rapportagedashboard en documenteren welke aanpassingen nodig zijn. Zodra de organisatie zeker is van de accuratesse, wordt de modus omgezet naar enforced. Tegelijkertijd worden change-notificaties verstuurd via Teams-aankondigingskanalen, intranet en e-mail, inclusief korte instructievideo's over het herschrijven van berichten. Gastgebruikers ontvangen aanvullende voorwaarden in uitnodigingen, zodat zij weten dat gevoelige informatie niet via Teams gedeeld mag worden. Procesintegratie is de laatste stap. Het beleid wordt gekoppeld aan het bestaande wijzigingsbeheer, waardoor elke update aan gevoelige informatietypen of acties vooraf wordt getoetst tijdens een CAB. Het script en de handmatige stappen worden geborgd in het technische runbook, inclusief vereisten voor logging, sleutelrotatie en authenticatie. Door implementatie-uren te verdelen over security-architecten, compliance officers en Teams-beheerders (ongeveer zestien uur totaal) blijft de inspanning beheersbaar, terwijl de organisatie kan aantonen dat DLP voor Teams niet een ad-hocoplossing is maar een structureel onderdeel van de Nederlandse Baseline voor Veilige Cloud.

Monitoring

Gebruik PowerShell-script dlp-teams.ps1 (functie Invoke-Monitoring) – Controleert publicatiestatus en rapporteert DLP-statistieken voor Teams.

Monitoring is cruciaal omdat DLP-controles alleen waardevol zijn wanneer bestuurders kunnen aantonen dat detecties worden opgevolgd en policies blijvend aansluiten op veranderende werkpatronen. Daarom wordt na livegang een ritme ingericht waarbij het SOC dagelijks naar realtime alerts kijkt en het compliance-team wekelijks trends bekijkt. Het MSP- of interne beheerteam zorgt ervoor dat logboeken minimaal zeven jaar beschikbaar blijven zodat reconstructies kunnen plaatsvinden wanneer de Autoriteit Persoonsgegevens daarom vraagt. Door deze werkwijze te borgen, wordt monitoring niet gezien als een optionele activiteit maar als een vast onderdeel van de operationele securitycyclus. Het script dlp-teams.ps1 bevat de functie Invoke-Monitoring die automatisch controleert of het beleid nog is gepubliceerd, welke Teams zijn uitgesloten en of de policy status per locatie nog overeenkomt met de gewenste instellingen. De functie haalt daarnaast statistieken op uit de Purview-rapportage-API en vergelijkt deze met drempelwaarden die de organisatie heeft vastgesteld. Wanneer er plotseling geen matches meer worden geregistreerd, kan dit duiden op een uitgeschakelde regel; een plotselinge stijging kan wijzen op misbruik of een nieuwe campagne van kwaadwillenden. De resultaten worden naar een centrale log analytics workspace geschreven zodat correlation rules in het SIEM aanvullende detectie kunnen doen. Een belangrijk onderdeel is het analyseren van false positives en false negatives. Analisten beoordelen per week een steekproef van geblokkeerde berichten om vast te stellen of de context juist is geïnterpreteerd. Indien legitieme berichten te vaak worden tegengehouden, wordt de regel aangepast door trefwoorden toe te voegen, proximity-waarden aan te passen of uitzonderingen toe te staan voor specifieke beschermde Teams. Omgekeerd wordt onderzocht of incidenten buiten DLP om zijn gemeld; wanneer een datalek wordt ontdekt zonder corresponderende DLP-match, is dat aanleiding om het gevoeligheidstype aan te scherpen. Op deze manier blijft het programma gericht op effectiviteit in plaats van op absolute blokkade. Gebruikerstevredenheid en bewustzijn maken eveneens deel uit van monitoring. Elke policy tip bevat een link naar een kort feedbackformulier waarin gebruikers kunnen aangeven of de blokkade terecht was en welke informatie zij probeerden te delen. Het adoption-team analyseert deze feedback, bespreekt het met security en verwerkt verbeteringen in de standaardinstructies. Bovendien worden maandelijks kennissessies georganiseerd waarin lessons learned uit echte incidenten worden gedeeld. Door open te communiceren blijft DLP een hulpmiddel dat medewerkers ondersteunt in plaats van een strikte controle die samenwerking frustreert. Rapportage naar management en auditcommissies sluit de monitoringcyclus af. Kwartaalrapportages tonen trends per afdeling, de verhouding tussen hoge en middelhoge ernst en de gemiddelde oplostijd van alerts. Deze rapporten koppelen technische statistieken aan bedrijfsdoelstellingen, zoals het verminderen van klachten van burgers of het behalen van BIO-controle 11.05. Dezelfde cijfers worden gebruikt om maturity assessments te voeden en investeringsbeslissingen te onderbouwen, bijvoorbeeld wanneer uitbreiding naar andere workloads gewenst is. Zo wordt monitoring een strategisch instrument waarmee de organisatie continu kan aantonen dat de Nederlandse Baseline voor Veilige Cloud daadwerkelijk wordt nageleefd.

Compliance en Auditing

Het DLP-beleid voor Teams fungeert als verbindende schakel tussen meerdere complianceraamwerken. De CIS Microsoft 365 Benchmark beveelt expliciet aan om datalekpreventie toe te passen op samenwerkingstools, en het hier beschreven beleid biedt het bewijs dat detectie, blokkade en logging zijn uitgewerkt. Iedere controlestap is herleidbaar naar een concreet script, een runbook en een monitoringsritme, waardoor auditors snel kunnen vaststellen dat niet alleen een ontwerp bestaat, maar dat de maatregel daadwerkelijk operationeel is. Dit sluit aan bij de eis om zowel preventieve als detectieve maatregelen in te richten. Onder de AVG vormt Artikel 32 het juridische fundament. De wetgever verwacht passende technische en organisatorische maatregelen om verlies of ongeoorloofde openbaarmaking te voorkomen. Teams DLP levert een directe invulling doordat gevoelige gegevens automatisch worden gedetecteerd, verzending wordt geblokkeerd en elk incident in een auditlog terechtkomt. Wanneer een betrokkene zijn rechten uitoefent, kan de organisatie dankzij deze logging aantonen welke berichten zijn geblokkeerd en welke vervolgacties zijn genomen. Het beleid verbindt hiermee de technische controls met processen rond meldplicht datalekken. De Baseline Informatiebeveiliging Overheid (BIO) koppelt DLP aan maatregel 11.05 rond gegevenslekpreventie. Door beleid, scripts en monitoring vast te leggen in het ISMS ontstaat een aantoonbare keten van planning, uitvoering, controle en verbetering. Auditresultaten worden teruggevoerd naar het verbeterregister zodat men kan laten zien dat lessons learned daadwerkelijk tot aanpassingen leiden. Voor overheidsorganisaties is dit essentieel om de volwassenheidsscore tijdens departementale audits op peil te houden en voor ketenpartners inzichtelijk te maken dat vertrouwelijke informatie veilig wordt behandeld. Sectorale normen zoals PCI-DSS en HIPAA vragen om aanvullende specifiekheden. PCI-DSS 3.4 vereist dat kaartgegevens worden beschermd tijdens transmissie en opslag. Het Teams DLP-beleid zorgt ervoor dat kaartgegevens een chat niet eens verlaten, waarmee het risico drastisch daalt en de scope van vervolgaatregelen kleiner wordt. HIPAA legt de nadruk op de bescherming van Protected Health Information; door regels te schrijven die patiëntnummers en medische termen herkennen, kunnen zorgorganisaties aantonen dat communicatiekanalen binnen Microsoft 365 voldoen aan de beveiligingsverwachtingen voor elektronische communicatie. Internationale best practices zoals ISO 27001:2022 Annex A.8.11 richten zich op data masking en het voorkomen van ongeautoriseerde openbaarmaking. Door de DLP-configuratie, monitoringresultaten en managementrapportages te koppelen aan het ISO-controleframework ontstaat een directe lijn tussen beleid en bewijsvoering. Auditrapporten bevatten screenshots van beleidsschermen, exporten van DLP-matchrapportages en verwijzingen naar de runbooks. Deze combinatie maakt het mogelijk om tijdens externe audits snel aan te tonen dat de Nederlandse Baseline voor Veilige Cloud niet alleen op papier bestaat, maar door concrete processen in Microsoft Teams wordt ondersteund.

Remediatie

Gebruik PowerShell-script dlp-teams.ps1 (functie Invoke-Remediation) – Automatiseert herstelacties en herpublicatie van Teams-DLP-beleid.

Remediatie begint bij een helder draaiboek waarin staat wie welke stappen uitvoert zodra een DLP-incident of configuratiefout wordt ontdekt. Het SOC of het compliance-team registreert het event in het ticketingsysteem en koppelt het aan de betreffende Teams-omgeving, het betrokken beleid en de ernstcategorie. Vervolgens bepalen zij of het incident het gevolg is van een echte datalekpoging of van een ontbrekende of foutieve instelling. Deze triage-fase is cruciaal, omdat zij voorkomt dat beheerders direct wijzigingen doorvoeren die later niet uitlegbaar zijn aan auditors of de Autoriteit Persoonsgegevens. Het draaiboek bevat decision trees die beschrijven welke criteria gelden voor doorzetten naar juridische of privacyteams. Wanneer blijkt dat beleid of configuratie moet worden hersteld, wordt de functie Invoke-Remediation in dlp-teams.ps1 ingezet. Dit script leest de gewenste instelling uit een gereviseerde configuratiefile en past de policy opnieuw toe, inclusief de koppeling met Teams-locaties, gevoeligheidstypen en actieprofielen. De output van het script wordt toegevoegd aan het ticket zodat er bewijs is van de uitgevoerde stappen. Tegelijkertijd controleert het script of de policy status daadwerkelijk op Enforced staat en herstart het indien nodig de synchronisatie naar het Purview-portaal. Hierdoor is herstel niet afhankelijk van handmatige bediening van de portal, wat fouten reduceert en de responstijd beperkt. Soms veroorzaakt DLP een onverwachte blokkade van legitieme berichten. In dat geval beschrijft het draaiboek hoe een tijdelijke vrijgave kan plaatsvinden zonder ongecontroleerde risico's te introduceren. Gebruikers dienen een gemotiveerd verzoek in inclusief de alternatieve veilige overdrachtsmethode. Een aangewezen reviewer beoordeelt het verzoek binnen de afgesproken SLA en kan het bericht vrijgeven via het DLP-incidentdashboard. Tegelijkertijd wordt onderzocht of de detectieregels verbeterd moeten worden. Deze lessons learned worden teruggevoerd naar het requirements-team en naar de trainingsprogramma's zodat herhaling wordt voorkomen. Bij ernstige incidenten, zoals een mislukte blokkade waardoor gegevens toch zijn gedeeld, wordt het remediatiepad opgeschaald. Het team verifieert welke ontvangers het bericht hebben gezien, schakelt juridische experts in om de meldplicht datalekken te beoordelen en documenteert alle acties in het privacydossier. Indien nodig wordt een retroactieve Clean-Up uitgevoerd door betrokken bestanden te verwijderen, toegang in te trekken en gebruikers aan te spreken op hun zorgplicht. Het DLP-beleid kan tijdelijk worden aangescherpt, bijvoorbeeld door alle berichten met specifieke keywords te blokkeren totdat het incident volledig onder controle is. Elke remediatiecyclus eindigt met een evaluatie waarin procesverbeteringen worden vastgelegd. Metrics zoals tijd tot detectie, tijd tot herstel en impact op de business worden besproken in het security-overleg. Indien scripts of runbooks zijn aangepast, worden deze opnieuw gepubliceerd in het centrale kennisplatform en gecommuniceerd naar de beheerorganisatie. Door deze systematische aanpak blijft remediatie niet beperkt tot technische herstelacties, maar groeit het uit tot een volwassen proces dat de weerbaarheid van Microsoft Teams continu verhoogt.

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 DLP for Microsoft Teams .DESCRIPTION Ensures Data Loss Prevention (DLP) policies are configured specifically for Microsoft Teams. Teams DLP helps protect sensitive information shared in chat and channel conversations. .NOTES Filename: dlp-teams.ps1 Author: Nederlandse Baseline voor Veilige Cloud Created: 2025-10-16 Last Modified: 2025-10-17 Version: 2.0 Related JSON: content/m365/audit-compliance/dlp-teams.json Category: audit-compliance Workload: m365 .LINK https://github.com/m365-tenant-best-practise .EXAMPLE .\dlp-teams.ps1 -Monitoring Check compliance status .EXAMPLE .\dlp-teams.ps1 -Remediation Apply configuration #> #Requires -Version 5.1 #Requires -Modules ExchangeOnlineManagement [CmdletBinding()] param( [Parameter()] [switch]$Monitoring, [Parameter()] [switch]$Remediation, [Parameter()] [switch]$Revert, [Parameter()] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' # ============================================================================ # HEADER # ============================================================================ Write-Host " ========================================" -ForegroundColor Cyan Write-Host "DLP for Microsoft Teams" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "======================================== " -ForegroundColor Cyan # ============================================================================ # FUNCTIONS # ============================================================================ function Test-Compliance { <# .SYNOPSIS Tests if current configuration is compliant #> [CmdletBinding()] param() return Invoke-Monitoring } function Invoke-Monitoring { <# .SYNOPSIS Monitors current configuration status #> [CmdletBinding()] param() try { Write-Host "`nMonitoring:" -ForegroundColor Yellow # Connect to Security & Compliance PowerShell Write-Host " Connecting to Security & Compliance Center..." -ForegroundColor Gray Connect-IPPSSession -ShowBanner:$false -ErrorAction Stop # Get all DLP compliance policies Write-Host " Retrieving DLP policies with Teams locations..." -ForegroundColor Gray $allPolicies = Get-DlpCompliancePolicy -ErrorAction Stop # Filter for policies that include Teams locations $teamsPolicies = $allPolicies | Where-Object { $_.TeamsLocation -ne $null -and $_.TeamsLocation.Count -gt 0 } # Analyze policies $result = @{ isCompliant = ($teamsPolicies.Count -gt 0) totalTeamsPolicies = $teamsPolicies.Count enabledTeamsPolicies = 0 disabledTeamsPolicies = 0 policyDetails = @() } if ($teamsPolicies.Count -eq 0) { Write-Host " No DLP policies found for Teams" -ForegroundColor Red } else { Write-Host "`n DLP Policies for Teams:" -ForegroundColor Cyan foreach ($policy in $teamsPolicies) { $policyInfo = @{ Name = $policy.Name Enabled = $policy.Enabled Mode = $policy.Mode TeamsLocation = $policy.TeamsLocation } if ($policy.Enabled) { $result.enabledTeamsPolicies++ Write-Host " ENABLED: $($policy.Name) (Mode: $($policy.Mode))" -ForegroundColor Green } else { $result.disabledTeamsPolicies++ Write-Host " DISABLED: $($policy.Name) (Mode: $($policy.Mode))" -ForegroundColor Yellow } # Show Teams location details if ($policy.TeamsLocation -contains "All") { Write-Host " Teams Location: All Teams" -ForegroundColor Gray } else { Write-Host " Teams Location: $($policy.TeamsLocation.Count) specific team(s)" -ForegroundColor Gray } $result.policyDetails += $policyInfo } } # Summary Write-Host "`n Summary:" -ForegroundColor Cyan Write-Host " Teams DLP Policies: $($result.totalTeamsPolicies)" -ForegroundColor Gray Write-Host " Enabled: $($result.enabledTeamsPolicies)" -ForegroundColor Gray Write-Host " Disabled: $($result.disabledTeamsPolicies)" -ForegroundColor Gray # Compliance status if ($result.isCompliant) { Write-Host "`n COMPLIANT: DLP policies are configured for Teams" -ForegroundColor Green exit 0 } else { Write-Host "`n NON-COMPLIANT: No DLP policies configured for Teams" -ForegroundColor Red exit 1 } return $result } catch { Write-Host "`n ERROR: $_" -ForegroundColor Red Write-Host " Error Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Remediation { <# .SYNOPSIS Applies recommended configuration #> [CmdletBinding()] param() try { Write-Host "`nRemediation:" -ForegroundColor Yellow # Connect to Security & Compliance PowerShell Write-Host " Connecting to Security & Compliance Center..." -ForegroundColor Gray Connect-IPPSSession -ShowBanner:$false -ErrorAction Stop # Check if Teams DLP policies already exist Write-Host " Checking existing Teams DLP policies..." -ForegroundColor Gray $allPolicies = Get-DlpCompliancePolicy -ErrorAction Stop $teamsPolicies = $allPolicies | Where-Object { $_.TeamsLocation -ne $null -and $_.TeamsLocation.Count -gt 0 } if ($teamsPolicies.Count -gt 0) { Write-Host " Teams DLP policies already exist ($($teamsPolicies.Count) found)" -ForegroundColor Green Write-Host "`n Configuration already compliant" -ForegroundColor Green exit 0 } # Create a Teams-specific DLP policy $policyName = "Teams Sensitive Information Protection" Write-Host " Creating Teams DLP compliance policy: $policyName..." -ForegroundColor Gray # Create the policy with Teams location $policy = New-DlpCompliancePolicy ` -Name $policyName ` -Comment "Created by Nederlandse Baseline voor Veilige Cloud - Teams sensitive information protection" ` -TeamsLocation All ` -Mode Enable ` -ErrorAction Stop Write-Host " Teams DLP policy created successfully" -ForegroundColor Green # Create a rule for the policy Write-Host " Creating DLP compliance rule for Teams..." -ForegroundColor Gray $rule = New-DlpComplianceRule ` -Name "$policyName - Rule" ` -Policy $policyName ` -ContentContainsSensitiveInformation @( @{Name = "Credit Card Number"; minCount = "1" }, @{Name = "EU Debit Card Number"; minCount = "1" }, @{Name = "International Banking Account Number (IBAN)"; minCount = "1" }, @{Name = "Social Security Number (SSN)"; minCount = "1" } ) ` -BlockAccess $true ` -NotifyUser "Owner,LastModifier" ` -NotifyUserType "NotSet" ` -NotifyPolicyTipCustomText "This message contains sensitive information and cannot be shared." ` -ErrorAction Stop Write-Host " Teams DLP rule created successfully" -ForegroundColor Green # Verify creation Start-Sleep -Seconds 3 $verifyPolicy = Get-DlpCompliancePolicy -Identity $policyName -ErrorAction SilentlyContinue if ($verifyPolicy -and $verifyPolicy.TeamsLocation) { Write-Host "`n Remediation completed successfully" -ForegroundColor Green Write-Host " Policy '$policyName' is now active for Teams" -ForegroundColor Green exit 0 } else { Write-Host "`n Failed to verify policy creation" -ForegroundColor Red exit 2 } } catch { Write-Host "`n ERROR: $_" -ForegroundColor Red Write-Host " Error Details: $($_.Exception.Message)" -ForegroundColor Red # Provide helpful guidance Write-Host "`n Manual Creation via Portal:" -ForegroundColor Yellow Write-Host " 1. Go to Microsoft Purview compliance portal" -ForegroundColor Gray Write-Host " 2. Navigate to Data loss prevention > Policies" -ForegroundColor Gray Write-Host " 3. Click 'Create policy'" -ForegroundColor Gray Write-Host " 4. Choose 'Custom' and select Teams location" -ForegroundColor Gray Write-Host " 5. Configure sensitive information types" -ForegroundColor Gray exit 2 } } function Invoke-Revert { <# .SYNOPSIS Reverts configuration to previous state #> [CmdletBinding()] param() try { Write-Host "`nRevert:" -ForegroundColor Yellow Write-Host " WARNING: This will remove the Teams DLP policy" -ForegroundColor Red # Connect to Security & Compliance PowerShell Write-Host "`n Connecting to Security & Compliance Center..." -ForegroundColor Gray Connect-IPPSSession -ShowBanner:$false -ErrorAction Stop # Find the policy created by remediation $policyName = "Teams Sensitive Information Protection" Write-Host " Looking for policy: $policyName..." -ForegroundColor Gray $policy = Get-DlpCompliancePolicy -Identity $policyName -ErrorAction SilentlyContinue if (-not $policy) { Write-Host " Policy not found - nothing to revert" -ForegroundColor Yellow exit 0 } # Remove the policy Write-Host " Removing Teams DLP policy..." -ForegroundColor Gray Remove-DlpCompliancePolicy -Identity $policyName -Confirm:$false -ErrorAction Stop # Verify removal Start-Sleep -Seconds 3 $verifyRemoval = Get-DlpCompliancePolicy -Identity $policyName -ErrorAction SilentlyContinue if (-not $verifyRemoval) { Write-Host " Successfully removed Teams DLP policy" -ForegroundColor Yellow Write-Host "`n Revert completed" -ForegroundColor Yellow exit 0 } else { Write-Host " Failed to remove Teams DLP policy" -ForegroundColor Red exit 2 } } catch { Write-Host "`n ERROR: $_" -ForegroundColor Red Write-Host " Error Details: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } # ============================================================================ # MAIN EXECUTION # ============================================================================ try { if ($Revert) { if ($WhatIf) { Write-Host "WhatIf: Would revert configuration" -ForegroundColor Yellow } else { Invoke-Revert } } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { if ($WhatIf) { Write-Host "WhatIf: Would apply remediation" -ForegroundColor Yellow } else { Invoke-Remediation } } else { Write-Host "Available parameters:" -ForegroundColor Yellow Write-Host " -Monitoring : Check current status" -ForegroundColor Gray Write-Host " -Remediation : Apply configuration" -ForegroundColor Gray Write-Host " -Revert : Revert changes" -ForegroundColor Gray Write-Host " -WhatIf : Show what would happen" -ForegroundColor Gray } } catch { Write-Error "Error: $_" throw } finally { Write-Host " ======================================== " -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder Teams-specifieke datalekpreventie kunnen medewerkers en gastgebruikers vertrouwelijke gegevens vrijwel ongemerkt verspreiden via chatberichten, kanaalconversaties of gedeelde bestanden. Dit leidt tot directe overtredingen van AVG Artikel 32, BIO 11.05 en sectorale normen zoals PCI-DSS of HIPAA en vergroot de kans op reputatieschade en boetes. Daarnaast ontbreekt zonder beleid een betrouwbaar auditspoor, waardoor organisaties tijdens onderzoeken niet kunnen aantonen welke maatregelen actief waren.

Management Samenvatting

Implementeer DLP-beleid voor Teams-chats en kanalen, combineer ingebouwde en aangepaste gevoeligheidstypen, blokkeer hoogrisicogegevens in realtime en informeer gebruikers met duidelijke policy tips. Automatiseer inrichting en monitoring via dlp-teams.ps1, borg governance, training en incidentrespons en toon zo naleving van de Nederlandse Baseline voor Veilige Cloud.