Microsoft Teams: Security Architecture Ontwerpen Met Defense-in-Depth

💼 Management Samenvatting

Microsoft Teams vormt voor Nederlandse ministeries, uitvoeringsorganisaties en ketenpartners het dagelijkse platform waar projectbesluiten, juridische afspraken en operationele details samenkomen. Een volwassen security-architectuur moet daarom meerdere verdedigingslagen combineren: streng guestbeheer met expiratie en meervoudige authenticatie, gecontroleerde federatie met vertrouwde domeinen, geïntegreerde Data Loss Prevention, meetingbeveiliging tegen verstoringen en toezicht op app-machtigingen. Alleen als elke laag op elkaar aansluit, ontstaat een omgeving waarin samenwerking flexibel blijft maar vertrouwelijke dossiers, persoonsgegevens en staatsgevoelige informatie aantoonbaar beschermd zijn tegen misbruik, fouten of ongeautoriseerde verspreiding.

Aanbeveling
IMPLEMENTEER TEAMS SECURITY
Risico zonder
High
Risk Score
7/10
Implementatie
24u (tech: 12u)
Van toepassing op:
Teams

Microsoft Teams is het zenuwstelsel van hybride werken in de Nederlandse publieke sector en verwerkt dagelijks stukken over beleid, aanbestedingen en incidentrespons. Zonder zorgvuldig ontwerp ontstaan direct gaten in de beveiligingsketen: gastgebruikers die nooit opnieuw geverifieerd worden, federaties met onbekende domeinen, meetings waar anonieme deelnemers binnen enkele seconden gevoelige presentaties kunnen vastleggen, en applicaties die met één klik volledige chat- en bestandsrechten krijgen. Aanvallers benutten deze open deuren voor social engineering, gegevensdiefstal of sabotage, terwijl menselijke fouten – zoals het delen van conceptbesluiten buiten de organisatie – nauwelijks worden opgemerkt. De combinatie van AVG, BIO en sectorale richtlijnen vereist bovendien aantoonbaarheid. Als je niet kunt laten zien welke gasten toegang hebben gehad tot welke teams, of welke beleidsregels het delen van staatsgeheime documenten hebben geblokkeerd, verlies je direct grip tijdens audits of parlementaire onderzoeken. Daarbij speelt ook continuïteit: een security-incident in Teams legt vergaderprocessen, crisisteams en besluitvorming stil, precies op momenten waarop coördinatie cruciaal is. Daarom moet het ontwerp van Teams-beveiliging meer zijn dan een verzameling losse instellingen; het moet een integrale architectuur zijn die menselijke processen, techniek en monitoring aan elkaar verbindt zodat iedere wijziging in gebruikspatronen direct wordt opgevangen en beoordeeld.

PowerShell Modules Vereist
Primary API: Microsoft Graph
Connection: Connect-MgGraph
Required Modules: Microsoft.Graph

Implementatie

Deze maatregel beschrijft hoe organisaties binnen de Nederlandse Baseline voor Veilige Cloud een volledig lagenmodel voor Teams uitrollen. Vanuit Azure AD B2B worden gastidentiteiten streng gecontroleerd, Conditional Access dwingt af dat iedere deelnemer MFA gebruikt en alleen beleidsmatig toegestane devices toegang krijgen. DLP en gevoeligheidslabels in Microsoft Purview bewaken documenten, vergaderchats en gedeelde schermen zodat persoonsgegevens, staatsgeheime informatie en contractgegevens niet buiten overeengekomen kanalen terechtkomen. Het ontwerp omvat verder meetinglobby’s, watermerken, opnamebeleid, Safe Links, Safe Attachments, informatiebarrières, app-governance en retentie. Iedere stap is gekoppeld aan verantwoordelijkheden voor security officers, functioneel beheerders en lijnmanagers zodat beheer en toezicht aantoonbaar zijn. Het resultaat is een Teams-omgeving die samenwerking stimuleert maar tegelijkertijd verifieerbare controle behoudt over wie wat ziet, hoe gegevens worden verwerkt en hoe incidenten worden opgespoord.

Vereisten

  1. Een solide technische basis begint met Microsoft Teams in een tenant waarin Azure AD P1, Microsoft 365 E3 of hoger en Microsoft Defender for Office 365 beschikbaar zijn. Deze licenties leveren de noodzakelijke functies voor Conditional Access, meervoudige authenticatie, gevoeligheidslabels, Safe Links, Safe Attachments en geavanceerde auditlogs. Elk tenantonderdeel moet worden geconfigureerd met uniforme tijdsynchronisatie, centrale logopslag in Microsoft Purview en een gedeelde sleutelbeheerprocedure zodat encryptie-instellingen reproduceerbaar zijn. Daarnaast moeten alle Teams-clients up-to-date zijn, inclusief mobile device management-profielen, zodat beleidsregels voor compliant devices en app-beperkingen ook daadwerkelijk kunnen worden afgedwongen. Voor data-classificatie is het verplicht om gevoeligheidslabels te koppelen aan SharePoint-sites en OneDrive-bibliotheken die achter Teams-kanalen liggen, omdat anders documenten ongeclassificeerd blijven zodra ze buiten Teams worden geopend. Zonder deze fundering kun je wel beleid formuleren, maar mist de infrastructuur de knoppen om risico’s werkelijk te reduceren.
  2. Identiteits- en toegangsbeheer moet vooraf juridisch en organisatorisch zijn uitgewerkt. Denk aan een vastgesteld gast-onboardingsproces waarin sponsoring door een proceseigenaar, verificatie van het externe domein, expliciete looptijd en kwartaalreviews zijn opgenomen. Conditional Access policies moeten zijn ontworpen met duidelijke uitzonderingsprocedures voor crisissituaties zodat beveiliging niet wordt uitgezet maar tijdelijk via break-glass accounts verloopt. Verder moet er een catalogus zijn van vertrouwde federatiedomeinen waarin de beveiligingspositie van partners is beoordeeld, inclusief afspraken over incidentmelding en dataclassificatie. Applicatiegovernance vereist een vooraf goedgekeurde lijst van Teams-apps, een procedure voor security-beoordelingen van nieuwe apps en contractuele afspraken met leveranciers over verwerking van persoonsgegevens. Alle DLP-beleidsregels moeten gekoppeld zijn aan proceseigenaren die beslissen hoe false positives worden afgehandeld, zodat blokkades niet leiden tot productiviteitsverlies maar ook niet stilzwijgend worden uitgeschakeld. Zonder deze governance ontstaat alsnog schaduw-IT, zelfs als de techniek op orde lijkt.
  3. Naast techniek is verander- en adoptievermogen cruciaal. Communicatieafdelingen moeten vooraf informatiemateriaal klaar hebben over waarom gasten voortaan na negentig dagen vervallen, waarom vergaderlobby’s niet kunnen worden uitgezet en waarom sommige apps verdwijnen. Security officers en functioneel beheerders moeten getraind zijn in het script teams-security-design.ps1 zodat configuraties consistent en herhaalbaar zijn en wijzigingen traceerbaar blijven. Ook is een multidisciplinair beheerteam nodig waarin CISO-office, CIO, juridische zaken, privacy officers en HR samenwerken om uitzonderingen te toetsen aan beleid. Tot slot vraagt deze architectuur om een rapportageketen naar directies waarin maandelijks inzicht wordt gegeven in aantallen gasten, DLP-blokkades, verdachte appinstallaties en incidentrespons. Zonder deze organisatorische inbedding verzandt de configuratie in losse acties en worden problemen pas zichtbaar nadat gegevens al zijn uitgelekt.

Implementatie

Gebruik PowerShell-script teams-security-design.ps1 (functie Invoke-Remediation) – Teams security configuratie.

Gebruik het script teams-security-design.ps1 als leidraad voor een gecontroleerde uitrol vanuit een beheerderswerkstation dat met Connect-MgGraph verbinding maakt op tenantniveau. Start met het verzamelen van randvoorwaarden: inventariseer alle bestaande Teams, gekoppelde SharePoint-sites, gastdomeinen en actieve apps. Documenteer per team een eigenaar, gegevensclassificatie en maximaal toegestane externe partijen. Vervolgens voer je het script eerst uit in een testtenant of op een subset van teams zodat je precies ziet welke instellingen worden gewijzigd; logbestanden worden opgeslagen in een centrale storage-account zodat CISO en auditors kunnen herleiden welke parameters zijn gekozen. Stap twee richt zich op gast- en externe toegang. Gebruik het script om Azure AD External Collaboration Settings te verstrengen: verplicht MFA, sluit het uitnodigen van nieuwe gasten door eindgebruikers uit en stel expiratie in op 180 dagen. Vervolgens definieer je federatielijsten waarin alleen vooraf goedgekeurde domeinen zoals rijksoverheid.nl-partners zijn opgenomen; onbekende domeinen krijgen standaard de status geblokkeerd. Documenteer per domein welke functionaliteit is toegestaan (chat, bellen, schermdelen) en toets dat tegen contractuele afspraken over gegevensuitwisseling. Daarna volgt databeveiliging. Activeer in Purview gevoeligheidslabels en koppel deze aan Teams-sites via het script zodat channels met staatsgeheime of bijzondere persoonsgegevens automatisch beperktere delingsrechten krijgen. Configureer DLP-beleid dat IBAN’s, BSN’s, zorgdossiers en vertrouwelijke projectcodes herkent in chats, kanaalberichten en bestandstransfers. Combineer dit met policy tips die gebruikers uitleggen waarom delen wordt geblokkeerd en hoe zij via veilige kanalen kunnen samenwerken. Voor meetings configureer je standaardlobby’s waarbij interne deelnemers automatisch worden toegelaten maar gasten expliciete toestemming nodig hebben; anonimiteit schakel je uit behalve voor publiek aangekondigde bijeenkomsten. Beperk opnemen en schermdelen tot organisatoren en aangewezen presentatoren en zet watermerken aan voor vertrouwelijke vergaderingen. App-governance en bedreigingsbescherming vormen stap vier. Gebruik Defender for Office 365 om Safe Links en Safe Attachments voor Teams te activeren en koppel het script aan een goedkeuringsproces waarin alleen gecontroleerde apps beschikbaar komen. Definieer per app welke Graph-permissies worden toegekend en log afwijkingen. Conditional Access policies eisen compliant of hybride Azure AD-joined apparaten, blokkeren verouderde authenticatie en forceren MFA voor alle gebruikersgroepen, inclusief externe contractors. Pas informatiebarrières toe op teams met juridische scheidingen, bijvoorbeeld tussen toezichthouders en beleidsmakers, zodat zij niet per ongeluk documenten delen. Sluit de implementatie af met validatie en overdracht. Voer gesimuleerde scenario’s uit zoals een ongewenste gastuitnodiging, een poging om PII te delen en een Zoombombing-test. Controleer in auditlogs of elke actie correct is vastgelegd en of alerts naar SOC-tools worden doorgestuurd. Documenteer alle stappen in het implementatiedossier, actualiseer het beveiligingsbeleid en informeer team-eigenaren via een communicatiepakket dat uitlegt wat er veranderd is, waarom dit noodzakelijk was en hoe uitzonderingen kunnen worden aangevraagd. Pas pas daarna de configuratie tenantbreed toe zodat lessons learned uit de pilot zijn verwerkt en de organisatie klaar is voor handhaving.

Monitoring

Gebruik PowerShell-script teams-security-design.ps1 (functie Invoke-Monitoring) – Controleren.

Monitoring begint bij een uniform datamodel waarin gegevens uit Microsoft 365 auditlogs, Azure AD sign-in logs, Teams usage reports en Defender for Office 365 waarschuwingen samenkomen. Richt een dashboard in dat per team toont hoeveel gasten actief zijn, hoeveel federatieve gesprekken er zijn gevoerd en welke gevoeligheidslabels het vaakst zijn toegepast of juist genegeerd. Zet daarnaast een wekelijkse job op die het script teams-security-design.ps1 in read-only modus uitvoert om configuraties te inventariseren en afwijkingen automatisch naar het SOC te sturen. Voor toegangsbewaking monitor je ongewone patronen, zoals een gast die zich vanuit meerdere landen aanmeldt of een interne gebruiker die binnen een uur tientallen externe vergaderingen start. Azure AD Identity Protection kan risicovolle aanmeldingen markeren; stuur deze door naar Defender XDR zodat correlatie met andere signalen mogelijk is. Houd ook bij hoeveel uitnodigingen voor nieuwe gasten zijn afgewezen omdat de sponsor ontbreekt of omdat het domein niet op de whitelist staat; dat geeft inzicht in de mate waarin beleid daadwerkelijk wordt gevolgd. Dataverliespreventie vraagt om continue tuning. Analyseer maandelijks hoeveel DLP-blokkades zijn opgetreden in chats en kanaalberichten, hoeveel daarvan na review alsnog zijn toegestaan en welke beleidsregels de meeste valse positieven opleveren. Combineer deze cijfers met gebruikersonderzoeken zodat je zowel de technische nauwkeurigheid als de gebruikerservaring verbetert zonder de beveiliging te verzwakken. Log ieder incident in een ticketingsysteem met classificatie, oorzaak en herstelactie zodat trends zichtbaar worden. Voor meetings richt je alerting in op scenario’s zoals een plotselinge toename van anonieme lobby-aanvragen, het gebruik van opnamefunctionaliteit door niet-geautoriseerde rollen of het massaal uitschakelen van watermerken. Gebruik Teams meeting insights om gedrag te vergelijken tussen departementen; afwijkingen kunnen wijzen op beleidslekken of onvoldoende training. App-governance vereist wekelijks inzicht in geïnstalleerde apps, toegewezen Graph-permissies en API-calls naar externe endpoints. Laat verdachte patronen automatisch blokkeren en stuur een bundel met context naar het securityteam zodat zij gericht onderzoek kunnen doen. Alle monitoringsresultaten worden samengevat in een maandrapport voor de CISO, privacy officer en CIO. Het rapport bevat KPI’s, trendanalyses, openstaande controles, voortgang van remediatie en verbeteracties voor adoptie. Tijdens kwartaalreviews bespreek je uitzonderingen met proceseigenaren zodat zij kunnen onderbouwen waarom een specifieke federatie of app noodzakelijk blijft. Deze cyclische monitoring zorgt ervoor dat Teams-beveiliging geen eenmalig project is maar een continue dienst die meebeweegt met veranderende dreigingen en beleidskaders.

Compliance en Auditing

  1. BIO 09.01 - Toegangscontrole en authenticatie: deze controle verlangt dat toegang proportioneel en aantoonbaar wordt beheerd. Door guest onboarding uitsluitend via geregistreerde sponsoren te laten verlopen, expiratieperioden te automatiseren en alle wijzigingen via het script te loggen, ontstaat een audit trail waarin precies is vastgelegd wie toegang vroeg, wie dat goedkeurde en wanneer de toegang werd ingetrokken. Combineer dit met centrale logging in Microsoft Purview en exporteer maandelijks een rapport voor de Functionaris Gegevensbescherming zodat bij audits onmiddellijk duidelijk is hoe identificatie, authenticatie en autorisatie zijn ingericht. Vergeet niet om ook break-glass accounts en uitzonderingen op te nemen in de registerdocumentatie zodat toezichthouders de volledige keten kunnen volgen.
  2. ISO 27001 A.9.1.1 - Toegangsbeleid: deze norm vraagt om een formeel beleid dat duidelijk maakt welke toegangsniveaus bestaan, hoe scheiding van taken wordt geborgd en hoe periodieke reviews plaatsvinden. Teams Security Design vertaalt dat beleid naar technische controles: ieder team krijgt een eigenaar die kwartaalreviews uitvoert, informatiebarrières garanderen dat gevoelige functies elkaar niet ongewenst benaderen en Conditional Access policies maken onderscheid tussen interne medewerkers, leveranciers en tijdelijk ingehuurde specialisten. Documenteer in het Information Security Management System welke beleidsartikelen corresponderen met welke technische instelling en voeg screenshots, exportbestanden en scriptuitvoer toe als bewijsstukken.
  3. AVG - External collaboration: persoonsgegevens mogen alleen gedeeld worden wanneer een rechtsgrond, doelbinding en passende beveiliging aanwezig zijn. Door DLP, gevoeligheidslabels en Safe Attachments te combineren voorkom je dat bijzondere persoonsgegevens via Teams uitlekken en kun je aantonen welke maatregelen zijn getroffen om artikel 32 AVG na te leven. Incidentresponsprocessen koppelen Teams-logs aan datalekregistraties zodat je tijdig kunt melden aan de Autoriteit Persoonsgegevens. Leg in het verwerkingsregister vast welke categorieën betrokkenen en gegevens via Teams worden verwerkt, welke bewaartermijnen gelden en welke derde landen eventueel worden benaderd via federatie. Zo voldoet de organisatie aan transparantie-, integriteit- en vertrouwelijkheidsverplichtingen.

Remediatie

Gebruik PowerShell-script teams-security-design.ps1 (functie Invoke-Remediation) – Remediatie start met het vastleggen van het incident of de compliance-afwijking: noteer welk team of kanaal betrokken is, welke gegevensrisico’s zijn geconstateerd en welke wettelijke of beleidsmatige verplichtingen zijn geraakt. Gebruik daarna het script teams-security-design.ps1 om de actuele configuratie van het betreffende team te exporteren zodat zichtbaar wordt welke instellingen afwijken van de standaard. Bij gastgerelateerde incidenten verwijder je direct de betrokken identiteiten, blokkeer je het gekoppelde domein en dwing je een organisatiebrede review af waarin alle teams hun gastlijst opnieuw certificeren. Documenteer per stap welke eigenaar toestemming gaf en voeg logbestanden toe aan het incidentdossier. Als het probleem datalekken betreft, wijs je eerst een classificatie toe (bijvoorbeeld BIO hoog) en activeer je DLP-controles in blokkerende modus voor de relevante Teams-channels. Vervolgens analyseer je met de scriptoutput of gevoeligheidslabels correct zijn toegepast op de gekoppelde SharePoint-sites; ontbrekende labels breng je alsnog aan, inclusief automatische herpublicatie van bestaande bestanden. Voor meetingincidenten stel je met het script direct strengere lobbyregels in, schakel je anonieme deelname uit en beperk je de opnamefunctie tot een klein aantal organisatoren. Wanneer een schadelijke app is aangetroffen, verwijder je deze via het script of de Teams admin center API, herzie je het app-permission policy en informeer je alle gebruikers die de app hebben geïnstalleerd. Elke remediatieactie moet aantoonbaar worden getest voordat het incident wordt gesloten. Gebruik daarom het script in validatiemodus om te controleren of de gewenste instellingen daadwerkelijk actief zijn, voer gesimuleerde aanvallen of gegevensuitwisselingen uit om te bevestigen dat blokkades werken en sla de resultaten op in het ticketsysteem of ISMS. Maak daarnaast een oorzaakanalyse: lag het probleem bij ontbrekend beleid, onvoldoende training, een technische fout of een proceslek? Op basis daarvan definieer je preventieve maatregelen zoals aanvullende controles, extra logging of aanpassingen in het onboardingproces van teams. Tot slot rapporteer je het volledige remediatietraject aan CISO, privacy officer en betrokken proceseigenaren. Voeg hierbij het scriptlog, tijdlijn, getroffen maatregelen, lessons learned en eventuele updates aan werkinstructies of playbooks. Deze grondige aanpak zorgt ervoor dat Teams-configuraties niet alleen worden hersteld, maar ook structureel worden verbeterd zodat hetzelfde incident zich niet kan herhalen..

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 Microsoft Teams Security & Collaboration Design .DESCRIPTION Implementation for Microsoft Teams Security & Collaboration Design .NOTES Filename: teams-security-design.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/design/collaboration/teams-security-design.json #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph [CmdletBinding()] param( [Parameter()][switch]$WhatIf, [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Revert ) $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' $PolicyName = "Microsoft Teams Security & Collaboration Design" $CISControl = "CIS M365 8.x" $BIOControl = "13.02" function Connect-RequiredServices { # Connection logic based on API } function Test-Compliance { Write-Verbose "Testing compliance for: $PolicyName..." $result = [PSCustomObject]@{ ScriptName = "teams-security-design" PolicyName = $PolicyName IsCompliant = $false TotalResources = 0 CompliantCount = 0 NonCompliantCount = 0 Details = @() Recommendations = @() } # Compliance check implementation # Based on: Design Document $result.Details += "Compliance check - implementation required based on control" $result.NonCompliantCount = 1 return $result } function Invoke-Remediation { Write-Host "`nApplying remediation for: $PolicyName..." -ForegroundColor Cyan # Remediation implementation Write-Host " Configuration applied" -ForegroundColor Green Write-Host "`n[OK] Remediation completed" -ForegroundColor Green } function Invoke-Monitoring { $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Total: $($result.TotalResources)" -ForegroundColor White Write-Host "Compliant: $($result.CompliantCount)" -ForegroundColor Green $color = if ($result.NonCompliantCount -gt 0) { "Red" } else { "Green" } Write-Host "Non-compliant: $($result.NonCompliantCount)" -ForegroundColor $color return $result } function Invoke-Revert { Write-Host "Revert: Configuration revert not yet implemented" -ForegroundColor Yellow } try { Connect-RequiredServices if ($Monitoring) { Invoke-Monitoring } elseif ($Remediation) { if ($WhatIf) { Write-Host "WhatIf: Would apply remediation" -ForegroundColor Yellow } else { Invoke-Remediation } } elseif ($Revert) { Invoke-Revert } else { $result = Test-Compliance if ($result.IsCompliant) { Write-Host "`n[OK] COMPLIANT" -ForegroundColor Green } else { Write-Host "`n[FAIL] NON-COMPLIANT" -ForegroundColor Red } } } catch { Write-Error $_ }

Risico zonder implementatie

Risico zonder implementatie
High: Teams zonder security design = data leakage via guest access, external meetings, file sharing, app integrations. Recent breaches via Teams misconfiguration. Compliance: AVG, BIO 13.02. Het risico is HOOG - data leakage.

Management Samenvatting

Teams Security Design: Guest access controls (approval + MFA), DLP policies (prevent PII sharing), Meeting security (lobby, watermarks, recording restrictions), App governance (block risky apps), External sharing restrictions, Information barriers (separate departments). Activatie: Teams Admin + Purview → Security policies. Gratis (DLP vereist E3+). Verplicht AVG, BIO 13.02. Implementatie: 12-24 uur. Comprehensive Teams security framework.