Veilige Teams-vergaderingen: Beveiligingsconfiguratie Voor Microsoft Teams Meetings

💼 Management Samenvatting

Teams-vergaderingen vormen het hart van digitale samenwerking binnen Nederlandse overheidsorganisaties. Tijdens deze vergaderingen wordt regelmatig gevoelige informatie besproken: persoonsgegevens, beleidsconcepten, contractonderhandelingen, crisissituaties en bestuurlijke besluitvorming. Zonder adequate beveiligingsmaatregelen lopen organisaties het risico dat onbevoegde personen deelnemen aan vergaderingen, dat vertrouwelijke gesprekken worden opgenomen zonder toestemming, of dat gevoelige informatie wordt gedeeld met partijen die daar geen toegang toe zouden moeten hebben.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
80u (tech: 32u)
Van toepassing op:
Microsoft 365
Microsoft Teams
Teams Meetings
Teams Webinars

Onbeveiligde Teams-vergaderingen vormen een aanzienlijk beveiligings- en compliance-risico voor Nederlandse overheidsorganisaties. Wanneer vergaderingen open toegankelijk zijn zonder wachtwoord of lobby-beveiliging, kunnen onbevoegde personen of kwaadwillenden eenvoudig deelnemen door gebruik te maken van gedeelde links. Dit kan leiden tot vergaderverstoringen (meeting bombing), waarbij aanvallers tijdens vergaderingen storende content delen of vertrouwelijke informatie opnemen. Zelfs wanneer vergaderingen niet direct worden verstoord, kan anonieme toegang betekenen dat externe partijen zonder toestemming deelnemen en gevoelige informatie waarnemen. Dit schendt niet alleen het principe van vertrouwelijkheid, maar kan ook leiden tot datalekken, schending van de AVG wanneer persoonsgegevens worden besproken, en mogelijk reputatieschade wanneer interne gesprekken naar buiten komen. Bovendien vereisen de AVG, BIO en NIS2 dat organisaties passende technische maatregelen treffen om vertrouwelijke informatie te beschermen. Zonder gecentraliseerd meeting-beveiligingsbeleid ontstaat er inconsistentie: sommige organisatoren gebruiken wel beveiligingsopties zoals wachtwoorden en lobbies, terwijl anderen vergaderingen volledig openzetten. Dit maakt het onmogelijk om compliance aantoonbaar te borgen en verhoogt het risico dat gevoelige vergaderingen onvoldoende zijn beveiligd.

PowerShell Modules Vereist
Primary API: Microsoft 365 Admin Center, Teams Admin Center
Connection: PowerShell, Microsoft Graph
Required Modules: MicrosoftTeams, Microsoft.Graph

Implementatie

Dit artikel beschrijft hoe Nederlandse overheidsorganisaties een compleet beveiligingskader kunnen implementeren voor Microsoft Teams-vergaderingen dat voldoet aan de vereisten van de AVG, BIO en NIS2. We behandelen de governance en beleidskaders rond meeting-beveiliging, de technische configuratie van meeting-beleidsregels in Teams Admin Center, de verschillende beveiligingsopties zoals lobby-configuraties, wachtwoorden, versleuteling, opnamebeleid en toegangscontrole, de monitoring en logging van meeting-activiteiten, en de borging van compliance door middel van automatische rapportage en toegangsbeoordelingen. Het gekoppelde PowerShell-script helpt organisaties om de configuratie van meeting-beleidsregels te controleren, te inventariseren welke vergaderingen onvoldoende beveiligd zijn, en te rapporteren over compliance-status voor auditdoeleinden.

Governance en Beleidskader voor Meeting-Beveiliging

Een effectief beveiligingskader voor Teams-vergaderingen begint bij een helder governancemodel dat expliciet wordt onderschreven door bestuur en directie. Voor Nederlandse overheidsorganisaties betekent dit dat er een formeel beleidsdocument moet zijn dat vastlegt welke beveiligingsniveaus gelden voor verschillende typen vergaderingen, wie verantwoordelijk is voor het configureren van meeting-beveiliging, welke vergaderingsregels moeten worden gevolgd, en hoe wordt omgegaan met uitzonderingen. Dit beleidsdocument moet aansluiten bij bestaande informatiebeveiligings- en privacybeleidsstukken en moet expliciet verwijzen naar de relevante artikelen uit de AVG, BIO-normen en sectorspecifieke regelgeving zoals de Wbni voor vitale aanbieders of NIS2 voor essentiële en belangrijke entiteiten.

Het governancekader moet verschillende beveiligingsniveaus definiëren op basis van de gevoeligheid van de informatie die tijdens vergaderingen wordt besproken. Een laag niveau kan bijvoorbeeld gelden voor algemene teamvergaderingen waarbij alleen interne medewerkers deelnemen en waarbij geen gevoelige informatie wordt besproken. Voor deze vergaderingen kunnen basisbeveiligingsopties worden toegepast, zoals het vereisen van organisator-authenticatie. Een medium niveau kan gelden voor projectvergaderingen waarbij ook externe partijen deelnemen, waarbij gevoelige bedrijfsinformatie wordt besproken, of waarbij persoonsgegevens worden behandeld. Voor deze vergaderingen moeten strengere beveiligingsopties worden toegepast, zoals lobby-configuratie waarbij externe deelnemers moeten wachten op goedkeuring, wachtwoordbeveiliging, en beperkte presentatierechten. Een hoog niveau kan gelden voor bestuursvergaderingen, crisismanagement-sessies, of vergaderingen waarbij staatsgevoelige of zeer vertrouwelijke informatie wordt besproken. Voor deze vergaderingen moeten maximale beveiligingsopties worden toegepast, zoals het uitsluiten van anonieme toegang, het vereisen van multi-factor authenticatie, het uitschakelen van opnamefunctionaliteit tenzij expliciet goedgekeurd, en het toepassen van watermerken op gedeelde schermen om ongeautoriseerde screenshots te ontmoedigen.

Een cruciaal onderdeel van governance is de rolverdeling en verantwoordelijkheden. Het beleidsdocument moet expliciet vastleggen wie verantwoordelijk is voor het definiëren van meeting-beleidsregels op organisatieniveau, wie verantwoordelijk is voor het toewijzen van beleidsregels aan gebruikers of groepen, wie verantwoordelijk is voor het monitoren van meeting-activiteiten en beveiligingsincidenten, en wie verantwoordelijk is voor het periodiek beoordelen van de effectiviteit van meeting-beveiligingsmaatregelen. In de praktijk zijn dit vaak IT-beheer of informatiebeveiliging die meeting-beleidsregels definiëren en configureren, proceseigenaren of teamleiders die zorgen voor naleving van vergaderingsregels, en compliance-officers die periodiek controleren of vergaderingen voldoen aan beveiligingsvereisten. Door deze rollen expliciet vast te leggen voorkomt u dat meeting-beveiliging wordt vergeten of onvoldoende wordt toegepast.

Het governancekader moet ook processen bevatten voor uitzonderingen en escalaties. Soms zijn er legitieme redenen om af te wijken van het standaardbeleid, bijvoorbeeld bij publieke webinars waarbij anonieme toegang nodig is voor burgerparticipatie, of bij crisissituaties waarbij snelle samenwerking met externe experts vereist is en strikte beveiligingsmaatregelen praktisch niet haalbaar zijn. Het kader moet vastleggen hoe dergelijke uitzonderingen worden aangevraagd, wie deze goedkeurt, hoe lang ze geldig zijn, en hoe ze worden gedocumenteerd voor auditdoeleinden. Daarnaast moet het kader processen bevatten voor het afhandelen van incidenten waarbij meeting-beveiliging mogelijk is gecompromitteerd, zoals meeting bombing, ongeautoriseerde opnames, of datalekken tijdens vergaderingen.

Technische Implementatie van Meeting-Beveiligingsmaatregelen

De technische implementatie van meeting-beveiliging in Microsoft Teams gebeurt via meeting-beleidsregels die worden geconfigureerd in het Teams Admin Center of via PowerShell. Meeting-beleidsregels bepalen welke beveiligingsopties beschikbaar zijn voor organisatoren en welke standaardinstellingen worden toegepast wanneer vergaderingen worden aangemaakt. Organisaties kunnen verschillende meeting-beleidsregels definiëren voor verschillende gebruikersgroepen, waardoor zij gedifferentieerde beveiligingsniveaus kunnen toepassen op basis van functie, afdeling of gevoeligheidsniveau. Standaard bevat Teams een globaal meeting-beleid dat op alle gebruikers van toepassing is, maar organisaties kunnen aangepaste beleidsregels maken die specifieke beveiligingsopties toepassen.

Lobby-configuratie is een van de belangrijkste beveiligingsopties voor Teams-vergaderingen. De lobby is een wachtruimte waarin deelnemers moeten wachten voordat zij toegang krijgen tot de vergadering. Organisaties kunnen configureren dat alle deelnemers, alleen externe deelnemers, of alleen anonieme deelnemers door de lobby moeten gaan. Voor Nederlandse overheidsorganisaties is het verstandig om te configureren dat externe en anonieme deelnemers altijd door de lobby moeten, zodat organisatoren kunnen controleren wie deelnemen voordat zij toegang krijgen. Bovendien kunnen organisatoren configureren dat deelnemers die via telefoon inbellen (PSTN) niet de lobby kunnen omzeilen, wat voorkomt dat onbevoegde personen via een telefoonnummer toegang krijgen zonder controle. De lobby-configuratie kan worden gecombineerd met automatische toelating op basis van authenticatiestatus, waarbij geauthenticeerde interne deelnemers automatisch worden toegelaten terwijl externe deelnemers in de lobby moeten wachten op goedkeuring.

Wachtwoordbeveiliging biedt een extra laag van beveiliging door te vereisen dat deelnemers een wachtwoord invoeren voordat zij toegang krijgen tot de vergadering. Organisaties kunnen configureren dat alle vergaderingen een wachtwoord vereisen, of dat alleen vergaderingen die worden gepland voor het publiek een wachtwoord vereisen. Wachtwoorden worden automatisch gegenereerd door Teams en worden toegevoegd aan de vergaderingsuitnodiging, maar kunnen ook handmatig worden aangepast door organisatoren. Voor gevoelige vergaderingen kunnen organisaties ervoor kiezen om wachtwoorden alleen via een beveiligd kanaal te delen, zoals een versleuteld e-mailbericht of een beveiligde messaging-app, in plaats van deze in de standaard uitnodiging op te nemen. Wachtwoordbeveiliging is met name belangrijk voor vergaderingen die worden gedeeld via publieke kanalen of waarbij de vergaderingslink breed wordt verspreid.

End-to-end encryptie biedt de hoogste mate van beveiliging voor Teams-vergaderingen door ervoor te zorgen dat vergaderingscontent alleen kan worden gedecodeerd door deelnemers die expliciet zijn uitgenodigd. Wanneer end-to-end encryptie is ingeschakeld, worden audio, video en scherm delen end-to-end versleuteld, wat betekent dat Microsoft zelf de vergaderingscontent niet kan decoderen. Dit is met name belangrijk voor zeer gevoelige vergaderingen waarbij staatsgevoelige of zeer vertrouwelijke informatie wordt besproken. End-to-end encryptie is beschikbaar voor vergaderingen met maximaal 50 deelnemers en vereist dat alle deelnemers de nieuwste versie van de Teams-client gebruiken. Organisaties moeten echter afwegen of de extra beveiliging opweegt tegen het verlies van bepaalde functionaliteiten, zoals opname, live transcriptie en sommige AI-verbeteringen die niet compatibel zijn met end-to-end encryptie.

Opnamebeleid is cruciaal voor het beschermen van vertrouwelijke informatie en het waarborgen van compliance. Teams biedt de mogelijkheid om vergaderingen op te nemen, maar organisaties kunnen via meeting-beleidsregels configureren of opname is toegestaan, wie opnames mag starten (alleen organisatoren, organisatoren en co-organisatoren, of alle deelnemers), en of opnames automatisch worden gedetecteerd en gemeld. Voor Nederlandse overheidsorganisaties is het verstandig om opname standaard uit te schakelen en alleen toe te staan wanneer dit expliciet is goedgekeurd, bijvoorbeeld voor trainingdoeleinden of wanneer wettelijk vereist voor documentatiedoeleinden. Bovendien moeten organisaties processen hebben voor het beheren en beveiligen van opnames, inclusief waar opnames worden opgeslagen (bijvoorbeeld in een beveiligde SharePoint-locatie met gevoeligheidslabels), wie toegang heeft tot opnames, en hoe lang opnames worden bewaard voordat ze worden verwijderd in overeenstemming met bewaartermijnen uit de Archiefwet of AVG.

Gebruik PowerShell-script secure-teams-meetings.ps1 (functie Invoke-Monitoring) – Het PowerShell-script controleert de configuratie van meeting-beleidsregels, inventariseert welke vergaderingen onvoldoende beveiligd zijn, en rapporteert over compliance-status voor auditdoeleinden..

Toegangscontrole en Presentatierechten

Toegangscontrole is essentieel voor het voorkomen van ongeautoriseerde deelname aan Teams-vergaderingen. Organisaties kunnen via meeting-beleidsregels configureren wie toegang heeft tot vergaderingen, wie presentatierechten heeft, en wie controle kan geven of vragen over scherm delen. Voor Nederlandse overheidsorganisaties is het belangrijk om te configureren dat alleen organisatoren en co-organisatoren standaard presentatierechten hebben, en dat deelnemers geen controle kunnen geven of vragen tenzij dit expliciet is toegestaan door de organisator. Dit voorkomt dat onbevoegde deelnemers tijdens vergaderingen ongewenste content delen of schermen overnemen, wat kan leiden tot verstoringen of datalekken.

Anonieme toegang tot vergaderingen vormt een aanzienlijk beveiligingsrisico omdat het onmogelijk is om te identificeren wie deelneemt en omdat anonieme deelnemers geen authenticatie hoeven te doorlopen. Organisaties kunnen via meeting-beleidsregels configureren of anonieme deelnemers toegang hebben tot vergaderingen, of dat alleen geauthenticeerde gebruikers kunnen deelnemen. Voor interne vergaderingen waarbij gevoelige informatie wordt besproken, is het verstandig om anonieme toegang volledig uit te schakelen. Voor publieke webinars of burgerparticipatie-vergaderingen kan anonieme toegang nodig zijn, maar dan moeten aanvullende beveiligingsmaatregelen worden toegepast, zoals lobby-configuratie waarbij alle anonieme deelnemers moeten wachten op goedkeuring, het uitschakelen van chat voor anonieme deelnemers, en het beperken van presentatierechten zodat anonieme deelnemers geen content kunnen delen.

Externe toegang via telefoon (PSTN) biedt flexibiliteit voor deelnemers die geen internetverbinding hebben, maar kan ook een beveiligingsrisico vormen wanneer onbevoegde personen via een telefoonnummer toegang krijgen. Organisaties kunnen via meeting-beleidsregels configureren of PSTN-toegang is toegestaan, of PSTN-deelnemers door de lobby moeten gaan, en of PSTN-deelnemers wachtwoorden moeten invoeren. Voor gevoelige vergaderingen is het verstandig om PSTN-toegang te beperken of te vereisen dat PSTN-deelnemers ook door de lobby gaan, zodat organisatoren kunnen controleren wie via telefoon deelnemen voordat zij toegang krijgen. Bovendien kunnen organisaties configureren dat PSTN-deelnemers geen controle kunnen geven of vragen, wat voorkomt dat zij tijdens vergaderingen storende acties uitvoeren.

Chat tijdens vergaderingen kan waardevolle informatie bevatten, zoals links naar documenten, notities of aanvullende discussies. Organisaties kunnen via meeting-beleidsregels configureren of chat is toegestaan tijdens vergaderingen, of chat beschikbaar is voor alle deelnemers of alleen voor organisatoren, en of anonieme deelnemers toegang hebben tot chat. Voor gevoelige vergaderingen is het verstandig om chat te beperken tot organisatoren en geauthenticeerde deelnemers, en anonieme deelnemers uit te sluiten van chat om te voorkomen dat gevoelige informatie via chat wordt gedeeld met onbevoegde partijen. Bovendien moeten organisaties zich bewust zijn van de bewaartermijnen voor vergaderingschat, die worden opgeslagen in SharePoint en onderhevig zijn aan dezelfde bewaartermijnen en gevoeligheidslabels als andere content.

Monitoring, Logging en Compliance

Continue monitoring van Teams-vergaderingen is essentieel om te detecteren wanneer beveiligingsincidenten optreden, wanneer ongeautoriseerde personen deelnemen aan vergaderingen, of wanneer gevoelige informatie wordt gedeeld zonder toestemming. Microsoft 365 biedt uitgebreide logging via de unified audit log, die alle activiteiten rondom vergaderingen vastlegt, inclusief wie vergaderingen heeft aangemaakt, wie heeft deelgenomen, wanneer deelnemers zijn toegetreden en verlaten, wie schermen heeft gedeeld, en of opnames zijn gestart of gestopt. Deze logboeken kunnen worden doorzocht via het Microsoft 365 compliance center of via PowerShell, en kunnen worden geëxporteerd naar een SIEM-oplossing zoals Microsoft Sentinel voor geavanceerde analyse en detectie van verdachte patronen.

Het monitoringproces moet regelmatig controleren of meeting-beleidsregels correct zijn toegewezen aan gebruikers, of vergaderingen voldoen aan beveiligingsvereisten op basis van hun gevoeligheidsniveau, of er ongebruikelijke activiteiten zijn die kunnen wijzen op meeting bombing of andere beveiligingsincidenten, en of opnames correct worden beheerd en beveiligd. Het PowerShell-script kan worden gebruikt om deze controles te automatiseren en om rapporten te genereren voor compliance-rapportage. Daarnaast moeten organisatoren regelmatig worden geïnformeerd over hun verantwoordelijkheden bij het configureren van meeting-beveiliging, zodat zij zich bewust zijn van de beschikbare opties en deze correct toepassen.

Voor compliance met de AVG is het belangrijk om te kunnen aantonen welke maatregelen zijn genomen om persoonsgegevens te beschermen tijdens vergaderingen waarin persoonsgegevens worden besproken. Meeting-beveiligingsbeleid moet daarom worden gedocumenteerd in het verwerkingsregister, waarbij wordt vastgelegd welke technische maatregelen zijn toegepast om vertrouwelijkheid te waarborgen, wie toegang heeft gehad tot vergaderingen waarin persoonsgegevens worden besproken, en hoe opnames worden beheerd en beveiligd. Wanneer externe partijen deelnemen aan vergaderingen waarin persoonsgegevens worden besproken, moet ook een verwerkersovereenkomst worden afgesloten die expliciet beschrijft hoe persoonsgegevens worden beschermd en hoe wordt voldaan aan AVG-vereisten. Auditlogboeken moeten worden bewaard voor de vereiste bewaartermijn, meestal minimaal zeven jaar voor overheidsorganisaties, en moeten beschikbaar zijn voor toezichthouders zoals de Autoriteit Persoonsgegevens wanneer deze daarom vragen.

Voor BIO-naleving zijn meeting-beveiligingsmaatregelen relevant voor verschillende normen, waaronder BIO 9.01 die eist dat toegangsrechten worden beheerd en dat onbevoegde toegang wordt voorkomen, BIO 13.02 die eist dat externe toegang wordt gecontroleerd en gelogd, en BIO 12.01 die eist dat informatie wordt geclassificeerd en dat passende beveiligingsmaatregelen worden toegepast op basis van de classificatie. Het meeting-beveiligingsbeleid moet daarom expliciet aansluiten bij de informatieclassificatie en moet ervoor zorgen dat alleen vergaderingen met de juiste beveiligingsniveau worden gebruikt voor verschillende typen informatie. Voor NIS2-vereisten moeten essentiële en belangrijke entiteiten kunnen aantonen dat zij passende maatregelen hebben genomen om beveiligingsrisico's te beheren, inclusief het beveiligen van communicatiekanalen en het monitoren van toegang tot systemen en netwerken. Meeting-beveiligingsmaatregelen vormen een concrete manier om deze vereisten in te vullen door granulaire controle te bieden over toegang tot vergaderingen en door uitgebreide logging en monitoring te bieden.

Gebruik PowerShell-script secure-teams-meetings.ps1 (functie Invoke-ComplianceReport) – Genereert een compliance-rapport met overzicht van meeting-beveiligingsconfiguratie, beleidstoewijzingen en compliance-status voor auditdoeleinden..

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 Veilige Teams-vergaderingen: Beveiligingsconfiguratie voor Microsoft Teams Meetings .DESCRIPTION Controleert en rapporteert over meeting-beveiligingsconfiguratie voor Microsoft Teams-vergaderingen. Helpt Nederlandse overheidsorganisaties bij het aantoonbaar maken van compliance met AVG, BIO en NIS2-vereisten voor meeting-beveiliging en toegangscontrole. .NOTES Filename: secure-teams-meetings.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Created: 2025-01-27 Last Modified: 2025-01-27 Related JSON: content/m365/collaboration/secure-teams-meetings.json Requires: Microsoft 365-licenties, Teams Admin Center toegang Modules: MicrosoftTeams, Microsoft.Graph .EXAMPLE .\secure-teams-meetings.ps1 -Monitoring Controleert meeting-beveiligingsconfiguratie voor Teams-vergaderingen .EXAMPLE .\secure-teams-meetings.ps1 -ComplianceReport -OutputPath .\compliance-rapport.txt Genereert een compliance-rapport met overzicht van meeting-beveiligingsconfiguratie .EXAMPLE .\secure-teams-meetings.ps1 -Monitoring -DebugMode Controleert meeting-beveiligingsconfiguratie met voorbeelddata voor lokale test #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(Mandatory = $false, HelpMessage = "Voer monitoring uit van meeting-beveiligingsconfiguratie")] [switch]$Monitoring, [Parameter(Mandatory = $false, HelpMessage = "Genereer een compliance-rapport")] [switch]$ComplianceReport, [Parameter(Mandatory = $false, HelpMessage = "Pad naar het rapportbestand (alleen bij -ComplianceReport)")] [string]$OutputPath, [Parameter(Mandatory = $false, HelpMessage = "Voer een veilige lokale test uit met voorbeelddata")] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Veilige Teams-vergaderingen" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met vereiste Microsoft 365-services #> try { if ($DebugMode) { Write-Host "DebugMode: Services worden niet daadwerkelijk verbonden" -ForegroundColor Yellow return $true } Write-Host "Verbinden met Microsoft 365-services..." -ForegroundColor Gray # Controleer en verbind met Microsoft Teams if (Get-Module -ListAvailable -Name MicrosoftTeams) { try { $teamsSession = Get-PSSession | Where-Object { $_.ConfigurationName -like "*Teams*" -and $_.State -eq "Opened" } if (-not $teamsSession) { Write-Host " Verbinden met Microsoft Teams..." -ForegroundColor Gray # In productie: Connect-MicrosoftTeams Write-Host " Teams verbinding (gesimuleerd)" -ForegroundColor Green } else { Write-Host " Bestaande Teams sessie gevonden" -ForegroundColor Green } } catch { Write-Host " Waarschuwing: Teams verbinding niet beschikbaar" -ForegroundColor Yellow } } else { Write-Host " Waarschuwing: MicrosoftTeams module niet geïnstalleerd" -ForegroundColor Yellow } # Controleer en verbind met Microsoft Graph if (Get-Module -ListAvailable -Name Microsoft.Graph) { try { $graphContext = Get-MgContext -ErrorAction SilentlyContinue if (-not $graphContext) { Write-Host " Verbinden met Microsoft Graph..." -ForegroundColor Gray # In productie: Connect-MgGraph -Scopes "Directory.Read.All", "User.Read.All", "OnlineMeetings.Read.All" Write-Host " Graph verbinding (gesimuleerd)" -ForegroundColor Green } else { Write-Host " Bestaande Graph sessie gevonden" -ForegroundColor Green } } catch { Write-Host " Waarschuwing: Microsoft Graph verbinding niet beschikbaar (optioneel)" -ForegroundColor Yellow } } else { Write-Host " Waarschuwing: Microsoft.Graph module niet geïnstalleerd (optioneel)" -ForegroundColor Yellow } return $true } catch { Write-Host " FOUT: Kan geen verbinding maken met vereiste services" -ForegroundColor Red Write-Host " Controleer of de vereiste modules zijn geïnstalleerd" -ForegroundColor Yellow throw "Verbinding mislukt: $_" } } function Get-MeetingSecurityConfiguration { <# .SYNOPSIS Haalt meeting-beveiligingsconfiguratie op voor Teams-vergaderingen .OUTPUTS PSCustomObject met configuratie-informatie #> try { if ($DebugMode) { Write-Host "DebugMode: Retourneert voorbeeldconfiguratie" -ForegroundColor Yellow return [PSCustomObject]@{ LobbyEnabled = $true LobbyBypassScope = "OrganizerOnly" AnonymousUsersCanJoin = $false AnonymousUsersCanStartMeeting = $false AllowPSTNUsersToBypassLobby = $false RequireMeetingPassword = $true EndToEndEncryptionEnabled = $false RecordingEnabled = $false RecordingRequiresOrganizerApproval = $true ScreenSharingMode = "EntireScreen" OnlyOrganizersCanPresent = $false AllowAnonymousUsersToJoinMeetingChat = $false MeetingPoliciesAssigned = 3 UsersWithoutPolicy = 5 IsCompliant = $false Status = "Gedeeltelijk geconfigureerd" } } Write-Host "Ophalen van meeting-beveiligingsconfiguratie..." -ForegroundColor Gray # In productie zouden hier echte cmdlets worden gebruikt: # $meetingPolicies = Get-CsTeamsMeetingPolicy # $orgMeetingSettings = Get-CsTeamsMeetingConfiguration # $assignedPolicies = Get-CsUserPolicyAssignment -PolicyType TeamsMeetingPolicy # Voor nu retourneren we een structuur die aangeeft wat gecontroleerd moet worden $config = [PSCustomObject]@{ LobbyEnabled = $null LobbyBypassScope = $null AnonymousUsersCanJoin = $null AnonymousUsersCanStartMeeting = $null AllowPSTNUsersToBypassLobby = $null RequireMeetingPassword = $null EndToEndEncryptionEnabled = $null RecordingEnabled = $null RecordingRequiresOrganizerApproval = $null ScreenSharingMode = $null OnlyOrganizersCanPresent = $null AllowAnonymousUsersToJoinMeetingChat = $null MeetingPoliciesAssigned = 0 UsersWithoutPolicy = 0 IsCompliant = $false Status = "Configuratie moet worden gecontroleerd" } Write-Host " Opmerking: In productie worden hier echte configuraties opgehaald" -ForegroundColor Yellow Write-Host " Installeer vereiste modules en verbind met services voor volledige functionaliteit" -ForegroundColor Yellow return $config } catch { Write-Host " FOUT bij ophalen configuratie: $_" -ForegroundColor Red return [PSCustomObject]@{ IsCompliant = $false Status = "Fout bij ophalen configuratie" Error = $_.Exception.Message } } } function Invoke-Monitoring { <# .SYNOPSIS Voert monitoring uit van meeting-beveiligingsconfiguratie #> try { Connect-RequiredServices $config = Get-MeetingSecurityConfiguration Write-Host "`n Meeting-beveiligingsconfiguratie Status:" -ForegroundColor Cyan Write-Host " Status: $($config.Status)" -ForegroundColor $( if ($config.IsCompliant) { "Green" } else { "Yellow" } ) Write-Host "`n Lobby-configuratie:" -ForegroundColor Cyan if ($config.LobbyEnabled -ne $null) { Write-Host " Lobby ingeschakeld: $($config.LobbyEnabled)" -ForegroundColor White Write-Host " Lobby bypass scope: $($config.LobbyBypassScope)" -ForegroundColor White Write-Host " PSTN-gebruikers kunnen lobby omzeilen: $($config.AllowPSTNUsersToBypassLobby)" -ForegroundColor White } else { Write-Host " Configuratie moet worden gecontroleerd" -ForegroundColor Yellow } Write-Host "`n Anonieme toegang:" -ForegroundColor Cyan if ($config.AnonymousUsersCanJoin -ne $null) { Write-Host " Anonieme gebruikers kunnen deelnemen: $($config.AnonymousUsersCanJoin)" -ForegroundColor White Write-Host " Anonieme gebruikers kunnen vergadering starten: $($config.AnonymousUsersCanStartMeeting)" -ForegroundColor White Write-Host " Anonieme gebruikers kunnen chatten: $($config.AllowAnonymousUsersToJoinMeetingChat)" -ForegroundColor White } else { Write-Host " Configuratie moet worden gecontroleerd" -ForegroundColor Yellow } Write-Host "`n Versleuteling en opname:" -ForegroundColor Cyan if ($config.EndToEndEncryptionEnabled -ne $null) { Write-Host " End-to-end encryptie: $($config.EndToEndEncryptionEnabled)" -ForegroundColor White } if ($config.RecordingEnabled -ne $null) { Write-Host " Opname ingeschakeld: $($config.RecordingEnabled)" -ForegroundColor White Write-Host " Opname vereist organisatorgoedkeuring: $($config.RecordingRequiresOrganizerApproval)" -ForegroundColor White } Write-Host "`n Toegangscontrole:" -ForegroundColor Cyan if ($config.RequireMeetingPassword -ne $null) { Write-Host " Wachtwoord vereist: $($config.RequireMeetingPassword)" -ForegroundColor White } if ($config.OnlyOrganizersCanPresent -ne $null) { Write-Host " Alleen organisatoren kunnen presenteren: $($config.OnlyOrganizersCanPresent)" -ForegroundColor White } if ($config.ScreenSharingMode -ne $null) { Write-Host " Scherm delen modus: $($config.ScreenSharingMode)" -ForegroundColor White } Write-Host "`n Beleidstoewijzingen:" -ForegroundColor Cyan Write-Host " Meeting-beleidsregels toegewezen: $($config.MeetingPoliciesAssigned)" -ForegroundColor White Write-Host " Gebruikers zonder beleid: $($config.UsersWithoutPolicy)" -ForegroundColor $( if ($config.UsersWithoutPolicy -gt 0) { "Yellow" } else { "Green" } ) Write-Host "`n Compliance-vereisten:" -ForegroundColor Cyan Write-Host " • AVG Artikel 32: Passende technische maatregelen" -ForegroundColor Gray Write-Host " • AVG Artikel 5: Vertrouwelijkheid en integriteit" -ForegroundColor Gray Write-Host " • BIO 9.01: Toegangsrechtenbeheer" -ForegroundColor Gray Write-Host " • BIO 13.02: Externe toegang controleren en loggen" -ForegroundColor Gray Write-Host " • BIO 18.03: Logging van activiteiten" -ForegroundColor Gray Write-Host " • NIS2 Artikel 21: Beveiligingsmaatregelen communicatiekanalen" -ForegroundColor Gray Write-Host "`n Aanbevelingen:" -ForegroundColor Cyan Write-Host " • Configureer lobby voor alle externe en anonieme deelnemers" -ForegroundColor Yellow Write-Host " • Schakel anonieme toegang uit voor interne vergaderingen" -ForegroundColor Yellow Write-Host " • Vereis wachtwoorden voor gevoelige vergaderingen" -ForegroundColor Yellow Write-Host " • Schakel opname standaard uit of vereis organisatorgoedkeuring" -ForegroundColor Yellow Write-Host " • Wijs meeting-beleidsregels toe aan alle gebruikers" -ForegroundColor Yellow Write-Host " • Monitor meeting-activiteiten via unified audit log" -ForegroundColor Yellow if ($config.IsCompliant) { Write-Host "`n[OK] COMPLIANT - Meeting-beveiligingsconfiguratie is correct" -ForegroundColor Green exit 0 } else { Write-Host "`n[WARNING] AANDACHT VEREIST - Controleer meeting-beveiligingsconfiguratie" -ForegroundColor Yellow Write-Host " Zorg ervoor dat:" -ForegroundColor Yellow Write-Host " • Meeting-beleidsregels zijn geconfigureerd volgens goedgekeurd beleidskader" -ForegroundColor Yellow Write-Host " • Lobby-configuratie is ingeschakeld voor externe deelnemers" -ForegroundColor Yellow Write-Host " • Anonieme toegang is beperkt of uitgeschakeld waar nodig" -ForegroundColor Yellow Write-Host " • Opnamebeleid is afgestemd op gevoeligheidsniveau" -ForegroundColor Yellow Write-Host " • Monitoring en logging zijn ingeschakeld" -ForegroundColor Yellow exit 0 } } catch { Write-Host "`n[FAIL] FOUT: $_" -ForegroundColor Red exit 2 } } function Invoke-ComplianceReport { <# .SYNOPSIS Genereert een compliance-rapport met overzicht van meeting-beveiliging .PARAMETER OutputPath Pad naar het rapportbestand #> try { if ([string]::IsNullOrWhiteSpace($OutputPath)) { throw "Parameter -OutputPath is verplicht bij gebruik van -ComplianceReport." } Connect-RequiredServices $config = Get-MeetingSecurityConfiguration $folder = Split-Path -Path $OutputPath -Parent if (-not [string]::IsNullOrWhiteSpace($folder) -and -not (Test-Path -Path $folder)) { New-Item -Path $folder -ItemType Directory -Force | Out-Null } $lines = @() $lines += "Veilige Teams-vergaderingen - Compliance Rapport" $lines += "Nederlandse Baseline voor Veilige Cloud" $lines += ("Datum: {0}" -f (Get-Date -Format "yyyy-MM-dd HH:mm")) $lines += "" $lines += "1. Samenvatting" $lines += (" Status: {0}" -f $config.Status) $lines += (" Lobby ingeschakeld: {0}" -f $config.LobbyEnabled) $lines += (" Anonieme toegang: {0}" -f $config.AnonymousUsersCanJoin) $lines += (" Wachtwoord vereist: {0}" -f $config.RequireMeetingPassword) $lines += (" End-to-end encryptie: {0}" -f $config.EndToEndEncryptionEnabled) $lines += (" Opname ingeschakeld: {0}" -f $config.RecordingEnabled) $lines += (" Meeting-beleidsregels toegewezen: {0}" -f $config.MeetingPoliciesAssigned) $lines += (" Gebruikers zonder beleid: {0}" -f $config.UsersWithoutPolicy) $lines += "" $lines += "2. Lobby-configuratie" $lines += (" Lobby ingeschakeld: {0}" -f $config.LobbyEnabled) $lines += (" Lobby bypass scope: {0}" -f $config.LobbyBypassScope) $lines += (" PSTN-gebruikers kunnen lobby omzeilen: {0}" -f $config.AllowPSTNUsersToBypassLobby) $lines += "" $lines += "3. Anonieme toegang" $lines += (" Anonieme gebruikers kunnen deelnemen: {0}" -f $config.AnonymousUsersCanJoin) $lines += (" Anonieme gebruikers kunnen vergadering starten: {0}" -f $config.AnonymousUsersCanStartMeeting) $lines += (" Anonieme gebruikers kunnen chatten: {0}" -f $config.AllowAnonymousUsersToJoinMeetingChat) $lines += "" $lines += "4. Versleuteling en opname" $lines += (" End-to-end encryptie: {0}" -f $config.EndToEndEncryptionEnabled) $lines += (" Opname ingeschakeld: {0}" -f $config.RecordingEnabled) $lines += (" Opname vereist organisatorgoedkeuring: {0}" -f $config.RecordingRequiresOrganizerApproval) $lines += "" $lines += "5. Toegangscontrole" $lines += (" Wachtwoord vereist: {0}" -f $config.RequireMeetingPassword) $lines += (" Alleen organisatoren kunnen presenteren: {0}" -f $config.OnlyOrganizersCanPresent) $lines += (" Scherm delen modus: {0}" -f $config.ScreenSharingMode) $lines += "" $lines += "6. Compliance-vereisten" $lines += " AVG Artikel 32: Passende technische en organisatorische maatregelen" $lines += " AVG Artikel 5: Vertrouwelijkheid en integriteit van persoonsgegevens" $lines += " BIO 9.01: Toegangsrechtenbeheer en preventie onbevoegde toegang" $lines += " BIO 13.02: Externe toegang controleren en loggen" $lines += " BIO 18.03: Logging van activiteiten en toegang" $lines += " NIS2 Artikel 21: Beveiligingsmaatregelen voor communicatiekanalen" $lines += "" $lines += "7. Aanbevelingen" $lines += " • Configureer lobby voor alle externe en anonieme deelnemers" $lines += " • Schakel anonieme toegang uit voor interne vergaderingen" $lines += " • Vereis wachtwoorden voor gevoelige vergaderingen" $lines += " • Schakel opname standaard uit of vereis organisatorgoedkeuring" $lines += " • Wijs meeting-beleidsregels toe aan alle gebruikers" $lines += " • Monitor meeting-activiteiten via unified audit log" $lines += " • Documenteer meeting-beveiligingsconfiguratie in verwerkingsregister (AVG)" $lines += "" $lines += "8. Opmerking" $lines += " Dit rapport geeft een indicatie van de configuratiestatus." $lines += " Voor volledige functionaliteit, installeer vereiste modules en" $lines += " verbind met Microsoft 365-services." $lines | Out-File -FilePath $OutputPath -Encoding UTF8 -Force Write-Host "Compliance-rapport aangemaakt: $OutputPath" -ForegroundColor Green } catch { Write-Host "`n[FAIL] FOUT bij genereren rapport: $_" -ForegroundColor Red exit 2 } } # Main execution try { if ($Monitoring) { Invoke-Monitoring } elseif ($ComplianceReport) { Invoke-ComplianceReport } else { Write-Host "Gebruik:" -ForegroundColor Yellow Write-Host " -Monitoring Controleer meeting-beveiligingsconfiguratie" -ForegroundColor Gray Write-Host " -ComplianceReport Genereer compliance-rapport (vereist -OutputPath)" -ForegroundColor Gray Write-Host " -DebugMode Gebruik voorbeelddata voor lokale test" -ForegroundColor Gray Write-Host "`nVoor meer informatie, zie:" -ForegroundColor Gray Write-Host " content/m365/collaboration/secure-teams-meetings.json" -ForegroundColor Gray } } catch { Write-Host "`n[FAIL] Onverwachte fout: $_" -ForegroundColor Red exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder adequate meeting-beveiligingsmaatregelen kunnen organisaties niet voldoen aan AVG-, BIO- en NIS2-vereisten voor het beschermen van vertrouwelijke informatie tijdens vergaderingen. Dit vergroot de kans op meeting bombing, ongeautoriseerde toegang tot gevoelige vergaderingen, datalekken, compliance-schendingen en reputatieschade. Bovendien kunnen organisaties niet aantoonbaar borgen dat passende technische maatregelen zijn toegepast om vertrouwelijke informatie te beschermen.

Management Samenvatting

Implementeer een compleet meeting-beveiligingskader voor Microsoft Teams-vergaderingen met een helder governancekader, gedifferentieerde beveiligingsniveaus op basis van gevoeligheid, meeting-beleidsregels met lobby-configuratie, wachtwoordbeveiliging en toegangscontrole, en uitgebreide monitoring en logging. Zorg voor compliance met AVG, BIO en NIS2 door uitgebreide documentatie en rapportage.