Microsoft Teams: Beveiligingsbeleidsregels Geconfigureerd

💼 Management Samenvatting

Beveiligingsbeleidsregels voor Microsoft Teams vormen de technische basis voor het beschermen van gevoelige gegevens, het voorkomen van datalekken, en het waarborgen van compliance met Nederlandse wet- en regelgeving. In tegenstelling tot governance policies die zich richten op gebruikerservaring en functionaliteit, concentreren beveiligingspolicies zich op het afdwingen van toegangscontroles, het monitoren van data-uitwisseling, en het detecteren van verdachte activiteiten binnen Teams-omgevingen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
280u (tech: 120u)
Van toepassing op:
Microsoft Teams
Microsoft 365
Entra ID
Microsoft Defender

Microsoft Teams is uitgegroeid tot een kritieke applicatie voor samenwerking binnen Nederlandse overheidsorganisaties, waarbij dagelijks grote hoeveelheden gevoelige informatie worden uitgewisseld via chat, vergaderingen, bestandsdeling en applicatie-integraties. Zonder doordachte beveiligingspolicies ontstaan structurele risico's die kunnen leiden tot datalekken, ongeautoriseerde toegang, en compliance-schendingen. Een van de meest kritieke risico's is ongecontroleerde externe delen: wanneer Teams-omgevingen niet correct zijn geconfigureerd, kunnen gebruikers per ongeluk gevoelige documenten delen met externe gasten of onbevoegde partijen. Dit schendt niet alleen de AVG maar ook interne vertrouwelijkheidsafspraken en kan leiden tot reputatieschade en juridische gevolgen. Bovendien ontstaan er risico's wanneer externe applicaties ongecontroleerd toegang krijgen tot Teams-data: zonder strikte app-permission policies kunnen gebruikers onveilige of niet-goedgekeurde applicaties installeren die toegang krijgen tot bedrijfsgegevens zonder IT-goedkeuring of beveiligingsbeoordeling. Deze applicaties kunnen gegevens exporteren naar externe cloudservices, ongeautoriseerde API-aanroepen maken, of malware introduceren in de organisatie. Daarnaast brengt het ontbreken van data loss prevention (DLP) policies grote risico's met zich mee: gebruikers kunnen per ongeluk creditcardnummers, BSN's, of andere gevoelige gegevens delen via Teams-chat of bestandsdeling zonder dat dit wordt gedetecteerd of geblokkeerd. Zonder DLP-controles kunnen deze gegevens onbeperkt worden gedeeld, wat leidt tot potentiële datalekken die moeten worden gemeld aan de Autoriteit Persoonsgegevens. Tot slot ontstaan er compliance-risico's wanneer organisaties niet kunnen aantonen dat zij passende technische maatregelen hebben getroffen om Teams-data te beschermen. BIO, NIS2, en AVG vereisen dat organisaties kunnen verantwoorden welke beveiligingscontroles zijn geïmplementeerd, hoe deze worden gemonitord, en hoe incidenten worden afgehandeld. Zonder gedocumenteerde en geconfigureerde beveiligingspolicies wordt het onmogelijk om aan deze verantwoordingsplicht te voldoen.

PowerShell Modules Vereist
Primary API: Microsoft Graph API, Teams PowerShell, Microsoft Purview
Connection: Connect-MgGraph, Connect-MicrosoftTeams, Connect-IPPSSession
Required Modules: Microsoft.Graph, MicrosoftTeams, ExchangeOnlineManagement

Implementatie

Dit artikel beschrijft een complete set beveiligingsbeleidsregels voor Microsoft Teams die organisaties in staat stellen om gevoelige gegevens te beschermen, toegang te controleren, en compliance te waarborgen. We behandelen Conditional Access-policies die bepalen wie onder welke omstandigheden toegang heeft tot Teams, data loss prevention (DLP) policies die gevoelige gegevens detecteren en blokkeren, app-permission policies die bepalen welke externe applicaties toegang hebben tot Teams-data, informatiebarrières die voorkomen dat bepaalde gebruikersgroepen met elkaar communiceren, en retention policies die bepalen hoe lang Teams-data wordt bewaard. Daarnaast besteden we aandacht aan monitoring en detectie: hoe worden verdachte activiteiten gedetecteerd, hoe worden incidenten geëscaleerd, en hoe worden audit logs gebruikt voor forensisch onderzoek. Het bijbehorende PowerShell-script teams-security-policies-configured.ps1 automatiseert de configuratie en monitoring van deze beveiligingspolicies, identificeert configuratiefouten, en genereert rapportages voor compliance-doeleinden.

Vereisten

Voordat beveiligingsbeleidsregels voor Microsoft Teams kunnen worden geïmplementeerd, moeten organisaties voldoen aan een aantal kritieke vereisten die de basis vormen voor succesvolle beveiligingsconfiguratie. Ten eerste is een Microsoft 365 E5-licentie of een equivalente licentie met Microsoft Purview Data Loss Prevention vereist voor alle gebruikers die onderdeel uitmaken van DLP-policies. Zonder deze licenties kunnen DLP-controles niet worden toegepast en blijven gevoelige gegevens onbeschermd. Daarnaast zijn Microsoft Teams-licenties vereist voor alle gebruikers, en moeten organisaties beschikken over Entra ID Premium P1 of P2 voor Conditional Access-functionaliteit.

Een tweede vereiste is de beschikbaarheid van een duidelijk beveiligingskader dat definieert welke gegevens als gevoelig worden beschouwd, welke toegangscontroles nodig zijn, en welke compliance-vereisten gelden. Dit kader moet worden ontwikkeld in samenwerking met informatiebeveiliging, privacy officers, compliance teams, en business stakeholders om ervoor te zorgen dat beveiligingspolicies zakelijke behoeften ondersteunen terwijl gevoelige gegevens worden beschermd. Het kader moet expliciet beschrijven welke data-classificaties worden gebruikt, welke DLP-regels nodig zijn voor elke classificatie, welke Conditional Access-policies moeten worden toegepast, en hoe incidenten worden afgehandeld.

Daarnaast moeten organisaties beschikken over een solide Entra ID-structuur met correct geconfigureerde gebruikersgroepen, Conditional Access-policies, en Identity Protection-instellingen. Teams-beveiligingspolicies bouwen voort op deze basis en kunnen niet effectief zijn zonder een goed functionerende identiteitsinfrastructuur. Organisaties moeten ook beschikken over toegang tot Microsoft Purview Compliance Center voor het configureren van DLP-policies, retention policies, en informatiebarrières.

Tot slot vereist de implementatie uitgebreide test- en acceptatiefases met representatieve gebruikersgroepen om te verifiëren dat beveiligingspolicies correct werken, dat gevoelige gegevens worden gedetecteerd en geblokkeerd, en dat geen onbedoelde neveneffecten optreden op productiviteit of samenwerking. Testen moet worden uitgevoerd in een testomgeving voordat policies worden toegepast op productiegebruikers, en gebruikersfeedback moet worden verzameld en verwerkt voordat policies organisatiebreed worden uitgerold.

Conditional Access voor Teams

Gebruik PowerShell-script teams-security-policies-configured.ps1 (functie Invoke-TeamsConditionalAccessConfig) – Configureert en monitort Conditional Access-policies specifiek voor Microsoft Teams, inclusief device compliance, locatiebeperkingen, en risicogebaseerde toegangscontroles..

Conditional Access vormt de eerste verdedigingslinie voor Microsoft Teams door te bepalen wie onder welke omstandigheden toegang heeft tot Teams-workspaces, chat, vergaderingen, en bestandsdeling. Teams-specifieke Conditional Access-policies moeten worden geconfigureerd om aanvullende beveiligingscontroles toe te passen bovenop organisatiebrede Conditional Access-policies. Dit omvat policies die vereisen dat apparaten compliant zijn voordat toegang wordt verleend, policies die externe toegang beperken tot specifieke geografische locaties, en policies die risicogebaseerde toegangscontroles toepassen op basis van Identity Protection-signalen.

Device compliance policies zijn bijzonder belangrijk voor Teams omdat gebruikers vaak toegang hebben tot gevoelige gegevens via mobiele apparaten of persoonlijke laptops. Organisaties moeten Conditional Access-policies configureren die vereisen dat apparaten zijn geregistreerd in Microsoft Intune, dat device compliance policies zijn toegepast, en dat beveiligingssoftware zoals antivirus en firewall actief is. Dit voorkomt dat onbeveiligde apparaten toegang krijgen tot Teams-data, wat het risico op datalekken en malware-infecties verkleint.

Locatiebeperkingen zijn cruciaal voor organisaties die werken met zeer gevoelige gegevens, zoals defensie, justitie, of financiële dienstverleners. Conditional Access-policies kunnen worden geconfigureerd om Teams-toegang te beperken tot specifieke geografische locaties, zoals alleen binnen Nederland of alleen binnen kantoorlocaties. Dit voorkomt dat gebruikers toegang krijgen tot Teams wanneer zij zich in risicovolle locaties bevinden, zoals openbare WiFi-netwerken of landen met zwakke privacywetten.

Risicogebaseerde toegangscontroles gebruiken Identity Protection-signalen om te bepalen of een aanmeldpoging verdacht is, bijvoorbeeld wanneer deze afkomstig is van een onbekend apparaat, een onbekende locatie, of wanneer er indicaties zijn van credential compromise. Conditional Access-policies kunnen worden geconfigureerd om aanvullende verificatie te vereisen, zoals meervoudige authenticatie, of om toegang volledig te blokkeren wanneer het risiconiveau te hoog is. Dit helpt om ongeautoriseerde toegang te voorkomen, zelfs wanneer aanmeldgegevens zijn gecompromitteerd.

Data Loss Prevention voor Teams

Gebruik PowerShell-script teams-security-policies-configured.ps1 (functie Invoke-TeamsDLPConfig) – Configureert en monitort DLP-policies voor Microsoft Teams, detecteert gevoelige gegevens in chat en bestandsdeling, en genereert incidentrapportages..

Data Loss Prevention (DLP) policies voor Microsoft Teams vormen een kritieke beveiligingscontrole die voorkomt dat gevoelige gegevens onbedoeld worden gedeeld via Teams-chat, bestandsdeling, of vergaderingen. DLP-policies scannen automatisch alle berichten, bestanden, en vergaderingscontent op patronen die overeenkomen met gevoelige gegevens, zoals creditcardnummers, BSN's, bankrekeningnummers, of aangepaste datatypen zoals contractnummers of patiëntidentificatienummers. Wanneer gevoelige gegevens worden gedetecteerd, kunnen DLP-policies verschillende acties ondernemen: waarschuwingen verzenden naar gebruikers, berichten of bestanden blokkeren, of incidenten escaleren naar beveiligingsteams.

DLP-policies moeten worden geconfigureerd op basis van de data-classificaties die de organisatie hanteert. Voor Nederlandse overheidsorganisaties betekent dit vaak dat er policies nodig zijn voor BSN's, paspoortnummers, en andere persoonsgegevens die onder de AVG vallen. Daarnaast kunnen er policies nodig zijn voor bedrijfsgevoelige informatie, zoals strategische plannen, budgetten, of contracten. Elke policy moet expliciet definiëren welke datatypen worden beschermd, welke acties worden ondernomen wanneer gevoelige gegevens worden gedetecteerd, en welke uitzonderingen gelden voor geautoriseerde gebruikers of specifieke scenario's.

DLP-policies voor Teams moeten rekening houden met de unieke uitdagingen van samenwerkingsplatformen. In tegenstelling tot e-mail of documentbeheer, waar DLP-controles relatief eenvoudig zijn, vereist Teams DLP dat policies rekening houden met real-time chat, bestandsdeling tijdens vergaderingen, en externe gasttoegang. Policies moeten bijvoorbeeld kunnen detecteren wanneer gevoelige gegevens worden gedeeld in een privéchat versus een openbaar kanaal, of wanneer bestanden worden gedeeld met externe gasten versus interne gebruikers. Dit vereist geavanceerde DLP-configuraties die gebruik maken van contextuele informatie om valse positieven te minimaliseren en echte risico's te detecteren.

Monitoring en rapportage zijn essentieel voor effectieve DLP-implementaties. Organisaties moeten regelmatig DLP-incidentrapportages bekijken om te identificeren welke gebruikers of afdelingen het vaakst gevoelige gegevens delen, welke datatypen het meest worden gedetecteerd, en of policies effectief zijn in het voorkomen van datalekken. Deze informatie kan worden gebruikt om DLP-policies te verfijnen, gebruikers te trainen, en aanvullende beveiligingscontroles te implementeren waar nodig.

App-permission en externe integraties

Gebruik PowerShell-script teams-security-policies-configured.ps1 (functie Invoke-TeamsAppPermissionConfig) – Configureert en monitort app-permission policies voor Teams, identificeert onveilige of niet-goedgekeurde applicaties, en genereert beveiligingsrapportages..

App-permission policies bepalen welke externe applicaties toegang hebben tot Teams-data en welke machtigingen deze applicaties kunnen aanvragen. Zonder strikte app-permission policies kunnen gebruikers onveilige of niet-goedgekeurde applicaties installeren die toegang krijgen tot bedrijfsgegevens zonder IT-goedkeuring of beveiligingsbeoordeling. Dit brengt aanzienlijke risico's met zich mee: applicaties kunnen gegevens exporteren naar externe cloudservices, ongeautoriseerde API-aanroepen maken naar externe systemen, of malware introduceren in de organisatie.

App-permission policies moeten worden geconfigureerd op basis van een risicoanalyse van beschikbare Teams-applicaties. Organisaties moeten een whitelist opstellen van goedgekeurde applicaties die zijn beoordeeld door IT en beveiligingsteams, en alle andere applicaties moeten standaard worden geblokkeerd. Voor kritieke applicaties kunnen aanvullende beperkingen worden toegepast, zoals het vereisen van expliciete gebruikersgoedkeuring voordat gegevens worden gedeeld, of het beperken van toegang tot specifieke gegevensclassificaties.

Monitoring van app-gebruik is essentieel om te identificeren welke applicaties daadwerkelijk worden gebruikt, welke machtigingen worden aangevraagd, en of er verdachte activiteiten plaatsvinden. Organisaties moeten regelmatig app-gebruiksrapportages bekijken om te identificeren welke applicaties populair zijn, welke applicaties mogelijk risicovol zijn, en of gebruikers proberen niet-goedgekeurde applicaties te installeren. Deze informatie kan worden gebruikt om app-permission policies te verfijnen, gebruikers te trainen over beveiligingsrisico's, en aanvullende controles te implementeren waar nodig.

Monitoring en compliance-rapportage

Gebruik PowerShell-script teams-security-policies-configured.ps1 (functie Invoke-TeamsSecurityMonitoring) – Monitort beveiligingspolicies voor Teams, genereert compliance-rapportages, en identificeert configuratiefouten of beveiligingsincidenten..

Monitoring en compliance-rapportage zijn essentieel voor het waarborgen dat beveiligingspolicies effectief zijn en blijven voldoen aan compliance-vereisten. Organisaties moeten regelmatig controleren of policies correct zijn geconfigureerd, of er configuratiefouten zijn, en of er beveiligingsincidenten hebben plaatsgevonden. Het script teams-security-policies-configured.ps1 automatiseert deze monitoring door regelmatig policy-configuraties te controleren, incidentrapportages te genereren, en compliance-scores te berekenen.

Compliance-rapportages moeten worden gegenereerd voor verschillende stakeholders, inclusief CISO's, compliance officers, auditors, en bestuurders. Deze rapportages moeten informatie bevatten over policy-dekking, incidentstatistieken, configuratiefouten, en aanbevelingen voor verbetering. Daarnaast moeten rapportages worden gebruikt voor periodieke compliance-audits waarbij externe auditors kunnen verifiëren dat beveiligingspolicies correct zijn geïmplementeerd en effectief zijn in het beschermen van gevoelige gegevens.

Tot slot moeten organisaties een proces hebben voor het regelmatig bijwerken van beveiligingspolicies op basis van veranderende bedreigingen, nieuwe compliance-vereisten, en feedback van gebruikers en beveiligingsteams. Dit proces moet transparant zijn en alle wijzigingen moeten worden gedocumenteerd 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 Teams Security Policies Configured .DESCRIPTION Controleert en configureert beveiligingsbeleidsregels voor Microsoft Teams, inclusief Conditional Access, Data Loss Prevention, app-permissions, en monitoring. Ondersteunt het artikel "Microsoft Teams: Beveiligingsbeleidsregels geconfigureerd" binnen het programma Nederlandse Baseline voor Veilige Cloud. .NOTES Filename: teams-security-policies-configured.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/m365/teams/teams-security-policies-configured.json Requires: Microsoft 365 E5-licenties voor DLP, Entra ID Premium voor Conditional Access Modules: Microsoft.Graph, MicrosoftTeams, ExchangeOnlineManagement .EXAMPLE .\teams-security-policies-configured.ps1 -Monitoring Controleert of Teams-beveiligingspolicies zijn geconfigureerd en actief .EXAMPLE .\teams-security-policies-configured.ps1 -Remediation Configureert Teams-beveiligingspolicies op basis van standaardinstellingen #> #Requires -Version 5.1 #Requires -Modules Microsoft.Graph, MicrosoftTeams [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [switch]$WhatIf, [Parameter(Mandatory = $false)] [switch]$DebugMode ) $ErrorActionPreference = 'Stop' Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Teams Security Policies" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan function Connect-RequiredServices { <# .SYNOPSIS Maakt verbinding met benodigde Microsoft 365-services #> try { if ($DebugMode) { Write-Host "DebugMode actief: overslaan van cloudverbindingen." -ForegroundColor Yellow return } Write-Host "Verbinden met Microsoft Graph..." -ForegroundColor Gray Connect-MgGraph -Scopes "Directory.Read.All","Policy.Read.All","SecurityEvents.Read.All","Compliance.Read.All" -ErrorAction Stop | Out-Null Write-Host " Microsoft Graph verbonden" -ForegroundColor Green Write-Host "Verbinden met Microsoft Teams..." -ForegroundColor Gray Connect-MicrosoftTeams -ErrorAction Stop | Out-Null Write-Host " Microsoft Teams verbonden" -ForegroundColor Green Write-Host "Verbinden met Exchange Online..." -ForegroundColor Gray Connect-ExchangeOnline -ErrorAction Stop | Out-Null Write-Host " Exchange Online verbonden" -ForegroundColor Green } catch { Write-Host " FOUT: Kan geen verbinding maken met Microsoft 365-services" -ForegroundColor Red Write-Host " Controleer of benodigde modules zijn geïnstalleerd" -ForegroundColor Yellow throw "Verbinding mislukt: $_" } } function Test-TeamsSecurityPoliciesConfigured { <# .SYNOPSIS Controleert of Teams-beveiligingspolicies zijn geconfigureerd #> try { Write-Host "Controleren van Teams-beveiligingspolicies..." -ForegroundColor Gray $results = @{ ConditionalAccessConfigured = $false DLPConfigured = $false AppPermissionsConfigured = $false Issues = @() } if ($DebugMode) { $results.ConditionalAccessConfigured = $true $results.DLPConfigured = $true $results.AppPermissionsConfigured = $true Write-Host " DebugMode: gebruik van voorbeelddata" -ForegroundColor Yellow return $results } # Controleer Conditional Access-policies voor Teams try { $caPolicies = Get-MgIdentityConditionalAccessPolicy -ErrorAction SilentlyContinue $teamsCAPolicies = $caPolicies | Where-Object { $_.Conditions.Applications.IncludeApplications -contains "00000003-0000-0ff1-ce00-000000000000" -or $_.Conditions.Applications.IncludeApplications -contains "MicrosoftTeams" } if ($teamsCAPolicies) { $results.ConditionalAccessConfigured = $true Write-Host " Conditional Access-policies gevonden: $($teamsCAPolicies.Count)" -ForegroundColor Green } else { $results.Issues += "Geen Conditional Access-policies gevonden voor Microsoft Teams" Write-Host " Waarschuwing: Geen Conditional Access-policies voor Teams" -ForegroundColor Yellow } } catch { $results.Issues += "Kan Conditional Access-policies niet ophalen: $_" } # Controleer DLP-policies (vereist Purview) try { $dlpPolicies = Get-DlpCompliancePolicy -ErrorAction SilentlyContinue $teamsDLPPolicies = $dlpPolicies | Where-Object { $_.Workload -contains "TeamsChat" -or $_.Workload -contains "TeamsChannel" } if ($teamsDLPPolicies) { $results.DLPConfigured = $true Write-Host " DLP-policies gevonden: $($teamsDLPPolicies.Count)" -ForegroundColor Green } else { $results.Issues += "Geen DLP-policies gevonden voor Microsoft Teams" Write-Host " Waarschuwing: Geen DLP-policies voor Teams" -ForegroundColor Yellow } } catch { $results.Issues += "Kan DLP-policies niet ophalen (vereist Purview licentie): $_" } # Controleer app-permission policies try { $appPermissionPolicies = Get-CsTeamsAppPermissionPolicy -ErrorAction SilentlyContinue if ($appPermissionPolicies -and $appPermissionPolicies.Count -gt 0) { $results.AppPermissionsConfigured = $true Write-Host " App-permission policies gevonden: $($appPermissionPolicies.Count)" -ForegroundColor Green } else { $results.Issues += "Geen app-permission policies gevonden" Write-Host " Waarschuwing: Geen app-permission policies" -ForegroundColor Yellow } } catch { $results.Issues += "Kan app-permission policies niet ophalen: $_" } return $results } catch { Write-Host " FOUT bij controleren van beveiligingspolicies: $_" -ForegroundColor Red throw } } function Invoke-TeamsConditionalAccessConfig { <# .SYNOPSIS Configureert Conditional Access-policies voor Teams #> [CmdletBinding(SupportsShouldProcess = $true)] param() Write-Host "`n=== Conditional Access Configuratie ===" -ForegroundColor Cyan if ($DebugMode) { Write-Host "DebugMode: Conditional Access-configuratie wordt gesimuleerd" -ForegroundColor Yellow return @{ Status = "Simulated" PoliciesCreated = 2 } } if ($WhatIf) { Write-Host "WhatIf: Er zouden Conditional Access-policies worden geconfigureerd voor Teams" -ForegroundColor Yellow return } Write-Host "Conditional Access-policies configureren vereist handmatige configuratie via Azure Portal" -ForegroundColor Yellow Write-Host "Gebruik het Azure Portal om policies te configureren die specifiek zijn voor Microsoft Teams" -ForegroundColor Yellow return @{ Status = "ManualConfigurationRequired" Message = "Conditional Access-policies moeten worden geconfigureerd via Azure Portal" } } function Invoke-TeamsDLPConfig { <# .SYNOPSIS Configureert DLP-policies voor Teams #> [CmdletBinding(SupportsShouldProcess = $true)] param() Write-Host "`n=== DLP Configuratie ===" -ForegroundColor Cyan if ($DebugMode) { Write-Host "DebugMode: DLP-configuratie wordt gesimuleerd" -ForegroundColor Yellow return @{ Status = "Simulated" PoliciesCreated = 3 } } if ($WhatIf) { Write-Host "WhatIf: Er zouden DLP-policies worden geconfigureerd voor Teams" -ForegroundColor Yellow return } Write-Host "DLP-policies configureren vereist Microsoft Purview licentie" -ForegroundColor Yellow Write-Host "Gebruik het Microsoft Purview Compliance Center om DLP-policies te configureren voor Teams" -ForegroundColor Yellow return @{ Status = "ManualConfigurationRequired" Message = "DLP-policies moeten worden geconfigureerd via Microsoft Purview Compliance Center" } } function Invoke-TeamsAppPermissionConfig { <# .SYNOPSIS Configureert app-permission policies voor Teams #> [CmdletBinding(SupportsShouldProcess = $true)] param() Write-Host "`n=== App Permission Configuratie ===" -ForegroundColor Cyan if ($DebugMode) { Write-Host "DebugMode: App-permission configuratie wordt gesimuleerd" -ForegroundColor Yellow return @{ Status = "Simulated" PoliciesCreated = 1 } } if ($WhatIf) { Write-Host "WhatIf: Er zouden app-permission policies worden geconfigureerd" -ForegroundColor Yellow return } try { # Controleer of er al policies zijn $existingPolicies = Get-CsTeamsAppPermissionPolicy -ErrorAction SilentlyContinue if (-not $existingPolicies) { Write-Host "Geen app-permission policies gevonden. Aanmaken van standaard policy..." -ForegroundColor Gray if ($PSCmdlet.ShouldProcess("Teams App Permission Policy", "Create")) { New-CsTeamsAppPermissionPolicy -Identity "NBVC-Teams-App-Policy" -Description "Nederlandse Baseline voor Veilige Cloud - Teams App Permission Policy" -ErrorAction Stop Write-Host " Standaard app-permission policy aangemaakt" -ForegroundColor Green } } else { Write-Host "App-permission policies gevonden: $($existingPolicies.Count)" -ForegroundColor Green } return @{ Status = "Success" PoliciesFound = $existingPolicies.Count } } catch { Write-Host " FOUT: Kan app-permission policies niet configureren: $_" -ForegroundColor Red throw } } function Invoke-TeamsSecurityMonitoring { <# .SYNOPSIS Monitort Teams-beveiligingspolicies en genereert rapportages #> [CmdletBinding()] param() Write-Host "`n=== Security Monitoring ===" -ForegroundColor Cyan $monitoringResults = @{ Timestamp = Get-Date ConditionalAccessStatus = "Unknown" DLPStatus = "Unknown" AppPermissionStatus = "Unknown" Issues = @() Recommendations = @() } $policyCheck = Test-TeamsSecurityPoliciesConfigured if ($policyCheck.ConditionalAccessConfigured) { $monitoringResults.ConditionalAccessStatus = "Configured" } else { $monitoringResults.ConditionalAccessStatus = "NotConfigured" $monitoringResults.Recommendations += "Configureer Conditional Access-policies voor Microsoft Teams" } if ($policyCheck.DLPConfigured) { $monitoringResults.DLPStatus = "Configured" } else { $monitoringResults.DLPStatus = "NotConfigured" $monitoringResults.Recommendations += "Configureer DLP-policies voor Microsoft Teams" } if ($policyCheck.AppPermissionsConfigured) { $monitoringResults.AppPermissionStatus = "Configured" } else { $monitoringResults.AppPermissionStatus = "NotConfigured" $monitoringResults.Recommendations += "Configureer app-permission policies voor Microsoft Teams" } $monitoringResults.Issues = $policyCheck.Issues Write-Host "Monitoring voltooid" -ForegroundColor Green Write-Host " Conditional Access: $($monitoringResults.ConditionalAccessStatus)" -ForegroundColor $(if ($monitoringResults.ConditionalAccessStatus -eq "Configured") { "Green" } else { "Yellow" }) Write-Host " DLP: $($monitoringResults.DLPStatus)" -ForegroundColor $(if ($monitoringResults.DLPStatus -eq "Configured") { "Green" } else { "Yellow" }) Write-Host " App Permissions: $($monitoringResults.AppPermissionStatus)" -ForegroundColor $(if ($monitoringResults.AppPermissionStatus -eq "Configured") { "Green" } else { "Yellow" }) if ($monitoringResults.Recommendations.Count -gt 0) { Write-Host "`nAanbevelingen:" -ForegroundColor Cyan foreach ($recommendation in $monitoringResults.Recommendations) { Write-Host " - $recommendation" -ForegroundColor Yellow } } return $monitoringResults } # Main execution try { Connect-RequiredServices if ($Monitoring) { $results = Invoke-TeamsSecurityMonitoring Write-Host "`nMonitoring voltooid." -ForegroundColor Green } elseif ($Remediation) { Write-Host "`n=== Remediation ===" -ForegroundColor Cyan Invoke-TeamsConditionalAccessConfig Invoke-TeamsDLPConfig Invoke-TeamsAppPermissionConfig Write-Host "`nRemediation voltooid." -ForegroundColor Green } else { # Standaard: monitoring uitvoeren $results = Invoke-TeamsSecurityMonitoring Write-Host "`nScript succesvol voltooid." -ForegroundColor Green } } catch { Write-Host "`nFOUT: $_" -ForegroundColor Red Write-Host $_.ScriptStackTrace -ForegroundColor Gray exit 1 }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder beveiligingspolicies voor Teams blijven gevoelige gegevens onbeschermd, kunnen datalekken optreden, en kunnen organisaties niet voldoen aan compliance-vereisten uit BIO, NIS2, en AVG.

Management Samenvatting

Implementeer een complete set beveiligingsbeleidsregels voor Microsoft Teams, inclusief Conditional Access, DLP, app-permissions, en monitoring. Gebruik het script teams-security-policies-configured.ps1 voor configuratie, monitoring, en compliance-rapportage.