Gasttoegangsbeleidsregels Voor Microsoft 365 Collaboratie

💼 Management Samenvatting

Gasttoegangsbeleidsregels vormen de basis voor veilige externe samenwerking binnen Microsoft 365. Nederlandse overheidsorganisaties moeten balanceren tussen de behoefte aan effectieve samenwerking met externe partijen zoals burgers, ketenpartners en consultants, en de verplichting om gevoelige informatie te beschermen en te voldoen aan strikte compliance-vereisten uit de AVG, BIO en sectorspecifieke regelgeving.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
8/10
Implementatie
56u (tech: 24u)
Van toepassing op:
Microsoft 365
SharePoint Online
Microsoft Teams
OneDrive for Business
Azure AD B2B

Zonder gestructureerd gasttoegangsbeleid ontstaan er aanzienlijke beveiligings- en compliance-risico's. Organisaties die gasttoegang volledig openstellen lopen het risico dat gevoelige persoonsgegevens, interne documenten of strategische informatie onbedoeld worden gedeeld met onbevoegde externe partijen. Dit kan leiden tot datalekken, schending van de AVG, reputatieschade en mogelijke boetes van toezichthouders zoals de Autoriteit Persoonsgegevens. Aan de andere kant kan volledig blokkeren van gasttoegang de productiviteit ernstig beperken en moderne samenwerkingsprocessen frustreren, waardoor medewerkers mogelijk naar onveilige alternatieven zoals persoonlijke cloudopslag of onbeveiligde e-mail uitwijken. Bovendien vereisen veel overheidsprocessen expliciet samenwerking met externe partijen: denk aan burgerparticipatie, vergunningverlening waarbij externe adviseurs betrokken zijn, of ketenprocessen waarbij meerdere organisaties samenwerken aan complexe dossiers. Zonder gedifferentieerd beleid kunnen organisaties niet voldoen aan deze zakelijke behoeften terwijl ze tegelijkertijd beveiligings- en compliance-vereisten naleven.

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

Implementatie

Dit artikel beschrijft hoe Nederlandse overheidsorganisaties een integraal gasttoegangsbeleid kunnen opzetten dat alle Microsoft 365-samenwerkingsdiensten omvat: SharePoint Online voor documentbeheer, Microsoft Teams voor communicatie en samenwerking, OneDrive for Business voor persoonlijke bestandsopslag, en Azure AD B2B voor identiteitsbeheer. We behandelen de governance en beleidskaders, de technische implementatie per dienst, de koppeling met gevoeligheidslabels en data loss prevention, de monitoring en toegangsbeoordelingen, en de borging van compliance met AVG, BIO en sectorspecifieke normen. Het gekoppelde PowerShell-script helpt organisaties om de configuratie van gasttoegangsinstellingen te controleren, te inventariseren welke externe gebruikers toegang hebben, en te rapporteren over compliance-status voor auditdoeleinden.

Governance en Beleidskader voor Gasttoegang

Een effectief gasttoegangsbeleid begint bij een helder governancekader dat expliciet wordt onderschreven door bestuur en directie. Voor Nederlandse overheidsorganisaties betekent dit dat er een formeel beleidsdocument moet zijn dat vastlegt welke typen externe samenwerking zijn toegestaan, welke informatie mag worden gedeeld met externe partijen, welke goedkeuringsprocessen gelden voor het verlenen van gasttoegang, en welke beveiligingsmaatregelen minimaal moeten worden toegepast. 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 NEN 7510 voor zorginstellingen.

Het governancekader moet verschillende niveaus van gasttoegang definiëren op basis van de gevoeligheid van informatie en het type externe samenwerking. Een laag niveau kan bijvoorbeeld gelden voor publieke informatie zoals nieuwsbrieven of algemene communicatie, waarbij gasten kunnen lezen en downloaden maar geen wijzigingen kunnen aanbrengen. Een medium niveau kan gelden voor standaard projectteams waarbij externe consultants of ketenpartners betrokken zijn, waarbij gasten kunnen samenwerken aan documenten maar geen gevoelige informatie kunnen exporteren of delen met anderen. Een hoog niveau kan gelden voor zeer gevoelige processen waarbij gasttoegang alleen is toegestaan na expliciete goedkeuring van de proceseigenaar en CISO, met aanvullende beveiligingsmaatregelen zoals multi-factor authenticatie, beperkte sessieduur en uitgebreide logging. Het kader moet ook vastleggen welke typen externe partijen in aanmerking komen voor gasttoegang, bijvoorbeeld alleen geregistreerde bedrijven, alleen partijen met een verwerkersovereenkomst, of ook individuele burgers voor participatieprocessen.

Een cruciaal onderdeel van governance is de rolverdeling en verantwoordelijkheden. Het beleidsdocument moet expliciet vastleggen wie verantwoordelijk is voor het goedkeuren van gastuitnodigingen, wie verantwoordelijk is voor het periodiek beoordelen van gasttoegang, wie verantwoordelijk is voor het monitoren van gastactiviteiten, en wie verantwoordelijk is voor het intrekken van toegang wanneer deze niet meer nodig is. In de praktijk zijn dit vaak proceseigenaren of teamleiders die gastuitnodigingen initiëren, informatiebeveiliging die goedkeuring geeft voor gevoelige scenario's, en IT-beheer die de technische configuratie beheert. Door deze rollen expliciet vast te leggen voorkomt u dat gasttoegang wordt verleend zonder de vereiste goedkeuringen of dat toegang blijft bestaan wanneer deze niet meer nodig is.

Het governancekader moet ook processen bevatten voor uitzonderingen en escalaties. Soms zijn er legitieme redenen om af te wijken van het standaardbeleid, bijvoorbeeld bij crisissituaties waarbij snelle samenwerking met externe experts nodig is, of bij tijdelijke projecten waarbij 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 gasttoegang mogelijk is misbruikt of waarbij gevoelige informatie onbedoeld is gedeeld met externe partijen.

Technische Implementatie per Microsoft 365 Dienst

De technische implementatie van gasttoegangsbeleid verschilt per Microsoft 365-dienst en vereist een geïntegreerde aanpak. Voor SharePoint Online begint u met het configureren van externe delen op tenantniveau via het SharePoint Admin Center. U kunt kiezen tussen verschillende niveaus: geen externe delen, alleen externe delen met mensen die al toegang hebben, externe delen met nieuwe en bestaande gasten, of externe delen met iedereen via anonieme links. Voor Nederlandse overheidsorganisaties is het verstandig om te beginnen met een restrictief niveau en dit geleidelijk uit te breiden op basis van zakelijke behoeften en beveiligingsbeoordelingen. Naast tenantbrede instellingen kunt u per site verzameling specifieke externe deelinstellingen configureren, waardoor u verschillende niveaus kunt toepassen voor verschillende typen sites zoals publieke communicatiesites versus interne projectteams met gevoelige informatie.

Voor Microsoft Teams werkt gasttoegang via Azure AD B2B-collaboratie. U moet eerst Azure AD B2B inschakelen op tenantniveau en vervolgens Teams-specifieke instellingen configureren via het Teams Admin Center of PowerShell. Teams biedt verschillende opties voor gasttoegang, zoals of gasten kunnen chatten, bestanden kunnen delen, apps kunnen installeren, of kanalen kunnen maken. Deze instellingen kunnen worden geconfigureerd op organisatieniveau, maar Teams ondersteunt ook gasttoegangsbeleidsregels die per team kunnen worden toegewezen, waardoor u verschillende niveaus kunt toepassen voor verschillende teams. Voor OneDrive for Business gelden vergelijkbare externe deelinstellingen als voor SharePoint, waarbij u kunt bepalen of gebruikers bestanden kunnen delen met externe partijen en welke typen links kunnen worden gebruikt voor delen.

Een belangrijk aspect van de technische implementatie is de koppeling met gevoeligheidslabels en data loss prevention. Microsoft 365 ondersteunt gevoeligheidslabels die kunnen worden toegepast op documenten, sites en teams, en die kunnen worden geconfigureerd om externe delen te blokkeren of te beperken. Door gevoeligheidslabels te koppelen aan gasttoegangsbeleid kunt u ervoor zorgen dat documenten met het label 'Vertrouwelijk' of 'Intern' niet kunnen worden gedeeld met externe partijen, zelfs wanneer gasttoegang is ingeschakeld. Data loss prevention-beleidsregels kunnen aanvullende controles bieden door te detecteren wanneer gebruikers proberen gevoelige informatie te delen met externe partijen en deze acties te blokkeren of te waarschuwen. Deze technische maatregelen vormen een belangrijke verdedigingslinie, maar moeten worden aangevuld met training en bewustwording omdat gebruikers altijd manieren kunnen vinden om beveiligingsmaatregelen te omzeilen als ze niet begrijpen waarom deze belangrijk zijn.

Azure AD B2B vormt de basis voor identiteitsbeheer van gastgebruikers. Via Azure AD kunt u configureren welke externe domeinen zijn toegestaan voor B2B-collaboratie, of externe gebruikers multi-factor authenticatie moeten gebruiken, of externe gebruikers beperkte toegang hebben tot directory-informatie, en hoe lang uitnodigingen geldig blijven voordat ze verlopen. U kunt ook conditional access-beleidsregels toepassen op gastgebruikers, bijvoorbeeld om te vereisen dat ze alleen toegang hebben vanaf vertrouwde netwerken of apparaten, of om te blokkeren dat ze toegang hebben vanaf bepaalde geografische locaties. Deze technische controles zijn essentieel voor het afdwingen van het governancekader en het waarborgen van compliance met beveiligings- en privacyvereisten.

Gebruik PowerShell-script guest-access-policies.ps1 (functie Invoke-Monitoring) – Het PowerShell-script controleert de configuratie van gasttoegangsinstellingen voor SharePoint, Teams en OneDrive, inventariseert externe gebruikers en hun toegangsniveaus, en rapporteert over compliance-status voor auditdoeleinden..

Beheer van Gasttoegang en Toegangsbeoordelingen

Effectief beheer van gasttoegang vereist een gestructureerd proces voor het verlenen, beoordelen en intrekken van toegang. Het proces begint met een aanvraag van een medewerker of proceseigenaar die externe samenwerking nodig heeft. Deze aanvraag moet minimaal bevatten: de naam en organisatie van de externe partij, het doel van de samenwerking, welke informatie of diensten toegankelijk moeten zijn, de verwachte duur van de samenwerking, en de beoogde gevoeligheidsclassificatie. De aanvraag wordt vervolgens beoordeeld door de proceseigenaar en informatiebeveiliging, die bepalen of de samenwerking is toegestaan volgens het beleidskader, welke toegangsniveaus nodig zijn, en welke aanvullende beveiligingsmaatregelen moeten worden toegepast. Na goedkeuring wordt de gastgebruiker uitgenodigd via Azure AD B2B, krijgt toegang tot de relevante SharePoint-sites, Teams of OneDrive-locaties, en wordt geïnformeerd over de geldende beveiligings- en privacyvereisten.

Periodieke toegangsbeoordelingen zijn essentieel om te verifiëren dat gasttoegang nog steeds nodig is en dat externe gebruikers alleen toegang hebben tot informatie die relevant is voor hun rol. Microsoft 365 biedt ingebouwde functionaliteit voor toegangsbeoordelingen via Azure AD Access Reviews, waarbij teameigenaren of proceseigenaren periodiek worden gevraagd om te bevestigen dat gastgebruikers nog steeds toegang nodig hebben. Deze beoordelingen kunnen worden geautomatiseerd zodat ze automatisch worden gestart op basis van een schema, bijvoorbeeld elk kwartaal of halfjaar, en kunnen worden geconfigureerd om automatisch toegang in te trekken wanneer deze niet wordt bevestigd binnen een bepaalde termijn. Voor gevoelige scenario's kunnen beoordelingen ook worden uitgevoerd door informatiebeveiliging of compliance, die een onafhankelijke beoordeling uitvoeren op basis van activiteitslogboeken en toegangsinventarisaties.

Wanneer gasttoegang niet meer nodig is, moet deze onmiddellijk worden ingetrokken. Dit kan gebeuren wanneer een project is afgerond, wanneer een externe partij niet meer betrokken is bij een proces, of wanneer er een beveiligingsincident is waarbij de gasttoegang mogelijk is gecompromitteerd. Het intrekkingsproces moet alle toegang verwijderen: de Azure AD B2B-account moet worden verwijderd of gedeactiveerd, toegang tot SharePoint-sites moet worden ingetrokken, lidmaatschap van Teams moet worden beëindigd, en gedeelde OneDrive-bestanden moeten worden verwijderd of de toegang moet worden ingetrokken. Het is belangrijk om dit proces te documenteren en te verifiëren dat alle toegang daadwerkelijk is ingetrokken, omdat externe gebruikers mogelijk nog toegang hebben via gecachte sessies of gedeelde links die niet direct worden verwijderd wanneer het account wordt gedeactiveerd.

Voor complexe scenario's waarbij meerdere externe partijen betrokken zijn bij een langdurig project, kan het handig zijn om een centraal register bij te houden van alle gasttoegang, inclusief de externe partij, het doel van de samenwerking, de toegangsniveaus, de geldigheidsduur, en de verantwoordelijke proceseigenaar. Dit register kan worden bijgehouden in een SharePoint-lijst, een Excel-bestand, of een gespecialiseerde toegangsbeheeroplossing, en moet regelmatig worden bijgewerkt wanneer nieuwe toegang wordt verleend of bestaande toegang wordt ingetrokken. Het register vormt een belangrijk auditbewijs en helpt organisaties om overzicht te houden over alle externe toegang, wat essentieel is voor compliance-rapportage en risicobeheer.

Monitoring, Logging en Compliance

Continue monitoring van gasttoegang is essentieel om te detecteren wanneer externe gebruikers onbevoegde acties uitvoeren, wanneer gevoelige informatie onbedoeld wordt gedeeld, of wanneer gasttoegang wordt verleend zonder de vereiste goedkeuringen. Microsoft 365 biedt uitgebreide logging via de unified audit log, die alle activiteiten van gastgebruikers vastlegt, inclusief het openen van documenten, het delen van bestanden, het deelnemen aan Teams-vergaderingen, en het wijzigen van toegangsrechten. Deze logboeken kunnen worden doorzocht via de 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 gasttoegangsinstellingen niet zijn gewijzigd zonder de vereiste goedkeuringen, of er nieuwe externe gebruikers zijn toegevoegd, of bestaande gastgebruikers nog actief zijn, en of er ongebruikelijke activiteiten zijn die kunnen wijzen op misbruik of beveiligingsincidenten. Het PowerShell-script kan worden gebruikt om deze controles te automatiseren en om rapporten te genereren voor compliance-rapportage. Daarnaast moeten proceseigenaren regelmatig worden geïnformeerd over de gastgebruikers die toegang hebben tot hun teams of sites, zodat zij kunnen bevestigen dat deze toegang nog steeds nodig is en dat er geen onbevoegde toegang is verleend.

Voor compliance met de AVG is het belangrijk om te kunnen aantonen wie toegang heeft gehad tot persoonsgegevens, wanneer deze toegang is verleend, en welke maatregelen zijn genomen om deze gegevens te beschermen. Gasttoegangsbeleid moet daarom worden gedocumenteerd in het verwerkingsregister, waarbij wordt vastgelegd welke externe partijen toegang hebben tot welke persoonsgegevens, op welke rechtsgrond deze toegang is gebaseerd, en welke beveiligingsmaatregelen zijn toegepast. Wanneer externe partijen als verwerker optreden, 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 gasttoegangsbeleidsregels 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 gasttoegangsbeleid moet daarom expliciet aansluiten bij de informatieclassificatie en moet ervoor zorgen dat alleen informatie met de juiste classificatieniveau wordt gedeeld met externe partijen. Voor NIS2-vereisten moeten essentiële en belangrijke entiteiten kunnen aantonen dat zij passende maatregelen hebben genomen om beveiligingsrisico's te beheren, inclusief het beheren van externe toegang tot systemen en netwerken. Gasttoegangsbeleidsregels vormen een concrete manier om deze vereisten in te vullen door granulaire controle te bieden over externe toegang en door uitgebreide logging en monitoring te bieden.

Gebruik PowerShell-script guest-access-policies.ps1 (functie Invoke-ComplianceReport) – Genereert een compliance-rapport met overzicht van gasttoegangsconfiguratie, externe gebruikers, toegangsniveaus 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 Gasttoegangsbeleidsregels voor Microsoft 365 Collaboratie .DESCRIPTION Controleert en rapporteert over gasttoegangsconfiguratie voor SharePoint Online, Microsoft Teams en OneDrive for Business. Helpt Nederlandse overheidsorganisaties bij het aantoonbaar maken van compliance met AVG, BIO en NIS2-vereisten voor externe toegang en samenwerking. .NOTES Filename: guest-access-policies.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Created: 2025-01-27 Last Modified: 2025-01-27 Related JSON: content/m365/collaboration/guest-access-policies.json Requires: Microsoft 365-licenties, Azure AD B2B Modules: Microsoft.Online.SharePoint.PowerShell, MicrosoftTeams, Microsoft.Graph .EXAMPLE .\guest-access-policies.ps1 -Monitoring Controleert gasttoegangsconfiguratie voor SharePoint, Teams en OneDrive .EXAMPLE .\guest-access-policies.ps1 -ComplianceReport -OutputPath .\compliance-rapport.txt Genereert een compliance-rapport met overzicht van gasttoegang en externe gebruikers #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(Mandatory = $false, HelpMessage = "Voer monitoring uit van gasttoegangsconfiguratie")] [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 "Gasttoegangsbeleidsregels M365 Collaboratie" -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 SharePoint Online if (Get-Module -ListAvailable -Name Microsoft.Online.SharePoint.PowerShell) { try { $spoSession = Get-PSSession | Where-Object { $_.ComputerName -like "*sharepoint*" -and $_.State -eq "Opened" } if (-not $spoSession) { Write-Host " Verbinden met SharePoint Online..." -ForegroundColor Gray # In productie: Connect-SPOService -Url https://[tenant]-admin.sharepoint.com Write-Host " SharePoint verbinding (gesimuleerd)" -ForegroundColor Green } else { Write-Host " Bestaande SharePoint sessie gevonden" -ForegroundColor Green } } catch { Write-Host " Waarschuwing: SharePoint verbinding niet beschikbaar (optioneel)" -ForegroundColor Yellow } } else { Write-Host " Waarschuwing: Microsoft.Online.SharePoint.PowerShell module niet geïnstalleerd" -ForegroundColor Yellow } # 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 (optioneel)" -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", "Group.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-GuestAccessConfiguration { <# .SYNOPSIS Haalt gasttoegangsconfiguratie op voor SharePoint, Teams en OneDrive .OUTPUTS PSCustomObject met configuratie-informatie #> try { if ($DebugMode) { Write-Host "DebugMode: Retourneert voorbeeldconfiguratie" -ForegroundColor Yellow return [PSCustomObject]@{ SharePointExternalSharingEnabled = $true SharePointSharingLevel = "ExistingExternalUserSharingOnly" TeamsGuestAccessEnabled = $true OneDriveExternalSharingEnabled = $true AzureADB2BEnabled = $true GuestUserCount = 15 SitesWithExternalSharing = 8 TeamsWithGuests = 5 IsCompliant = $false Status = "Gedeeltelijk geconfigureerd" } } Write-Host "Ophalen van gasttoegangsconfiguratie..." -ForegroundColor Gray # In productie zouden hier echte cmdlets worden gebruikt: # $spoTenant = Get-SPOTenant # $teamsConfig = Get-CsTeamsGuestMessagingConfiguration # $guestUsers = Get-MgUser -Filter "userType eq 'Guest'" # Voor nu retourneren we een structuur die aangeeft wat gecontroleerd moet worden $config = [PSCustomObject]@{ SharePointExternalSharingEnabled = $null SharePointSharingLevel = $null TeamsGuestAccessEnabled = $null OneDriveExternalSharingEnabled = $null AzureADB2BEnabled = $null GuestUserCount = 0 SitesWithExternalSharing = 0 TeamsWithGuests = 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 gasttoegangsconfiguratie #> try { Connect-RequiredServices $config = Get-GuestAccessConfiguration Write-Host "`n Gasttoegangsconfiguratie Status:" -ForegroundColor Cyan Write-Host " Status: $($config.Status)" -ForegroundColor $( if ($config.IsCompliant) { "Green" } else { "Yellow" } ) if ($config.SharePointExternalSharingEnabled -ne $null) { Write-Host "`n SharePoint Online:" -ForegroundColor Cyan Write-Host " Externe delen ingeschakeld: $($config.SharePointExternalSharingEnabled)" -ForegroundColor White Write-Host " Deelniveau: $($config.SharePointSharingLevel)" -ForegroundColor White Write-Host " Sites met externe delen: $($config.SitesWithExternalSharing)" -ForegroundColor White } if ($config.TeamsGuestAccessEnabled -ne $null) { Write-Host "`n Microsoft Teams:" -ForegroundColor Cyan Write-Host " Gasttoegang ingeschakeld: $($config.TeamsGuestAccessEnabled)" -ForegroundColor White Write-Host " Teams met gastgebruikers: $($config.TeamsWithGuests)" -ForegroundColor White } if ($config.OneDriveExternalSharingEnabled -ne $null) { Write-Host "`n OneDrive for Business:" -ForegroundColor Cyan Write-Host " Externe delen ingeschakeld: $($config.OneDriveExternalSharingEnabled)" -ForegroundColor White } if ($config.AzureADB2BEnabled -ne $null) { Write-Host "`n Azure AD B2B:" -ForegroundColor Cyan Write-Host " B2B-collaboratie ingeschakeld: $($config.AzureADB2BEnabled)" -ForegroundColor White Write-Host " Aantal gastgebruikers: $($config.GuestUserCount)" -ForegroundColor White } Write-Host "`n Compliance-vereisten:" -ForegroundColor Cyan Write-Host " • AVG Artikel 32: Passende technische maatregelen" -ForegroundColor Gray Write-Host " • AVG Artikel 30: Verwerkingsregister en logging" -ForegroundColor Gray Write-Host " • BIO 9.01: Toegangsrechtenbeheer" -ForegroundColor Gray Write-Host " • BIO 13.02: Externe toegang controleren en loggen" -ForegroundColor Gray Write-Host " • NIS2 Artikel 21: Beveiligingsmaatregelen externe toegang" -ForegroundColor Gray if ($config.GuestUserCount -gt 0) { Write-Host "`n Aanbevelingen:" -ForegroundColor Cyan Write-Host " • Voer periodieke toegangsbeoordelingen uit voor alle gastgebruikers" -ForegroundColor Yellow Write-Host " • Controleer of gevoeligheidslabels correct zijn toegepast" -ForegroundColor Yellow Write-Host " • Verifieer dat DLP-beleidsregels actief zijn" -ForegroundColor Yellow Write-Host " • Documenteer gasttoegang in verwerkingsregister (AVG)" -ForegroundColor Yellow } if ($config.IsCompliant) { Write-Host "`n[OK] COMPLIANT - Gasttoegangsconfiguratie is correct" -ForegroundColor Green exit 0 } else { Write-Host "`n[WARNING] AANDACHT VEREIST - Controleer gasttoegangsconfiguratie" -ForegroundColor Yellow Write-Host " Zorg ervoor dat:" -ForegroundColor Yellow Write-Host " • Gasttoegang is geconfigureerd volgens goedgekeurd beleidskader" -ForegroundColor Yellow Write-Host " • Toegangsniveaus zijn afgestemd op informatieclassificatie" -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 gasttoegang .PARAMETER OutputPath Pad naar het rapportbestand #> try { if ([string]::IsNullOrWhiteSpace($OutputPath)) { throw "Parameter -OutputPath is verplicht bij gebruik van -ComplianceReport." } Connect-RequiredServices $config = Get-GuestAccessConfiguration $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 += "Gasttoegangsbeleidsregels - 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 += (" SharePoint externe delen: {0}" -f $config.SharePointExternalSharingEnabled) $lines += (" Teams gasttoegang: {0}" -f $config.TeamsGuestAccessEnabled) $lines += (" OneDrive externe delen: {0}" -f $config.OneDriveExternalSharingEnabled) $lines += (" Azure AD B2B: {0}" -f $config.AzureADB2BEnabled) $lines += (" Aantal gastgebruikers: {0}" -f $config.GuestUserCount) $lines += "" $lines += "2. Compliance-vereisten" $lines += " AVG Artikel 32: Passende technische en organisatorische maatregelen" $lines += " AVG Artikel 30: Verwerkingsregister en logging van toegang" $lines += " BIO 9.01: Toegangsrechtenbeheer en preventie onbevoegde toegang" $lines += " BIO 13.02: Externe toegang controleren en loggen" $lines += " NIS2 Artikel 21: Beveiligingsmaatregelen voor externe toegang" $lines += "" $lines += "3. Aanbevelingen" $lines += " • Zorg voor periodieke toegangsbeoordelingen voor alle gastgebruikers" $lines += " • Controleer of gevoeligheidslabels correct zijn toegepast" $lines += " • Verifieer dat DLP-beleidsregels actief zijn" $lines += " • Documenteer gasttoegang in verwerkingsregister (AVG)" $lines += " • Houd een register bij van externe gebruikers en toegangsniveaus" $lines += "" $lines += "4. 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 gasttoegangsconfiguratie" -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/guest-access-policies.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 gestructureerd gasttoegangsbeleid kunnen organisaties niet voldoen aan AVG-, BIO- en NIS2-vereisten voor het beheren van externe toegang. Dit vergroot de kans op datalekken, onbevoegde toegang tot gevoelige informatie, compliance-schendingen en reputatieschade. Bovendien kunnen organisaties niet effectief balanceren tussen externe samenwerkingsbehoeften en beveiligingsvereisten.

Management Samenvatting

Richt een integraal gasttoegangsbeleid in voor alle Microsoft 365-samenwerkingsdiensten met een helder governancekader, gedifferentieerde toegangsniveaus op basis van gevoeligheid, periodieke toegangsbeoordelingen en uitgebreide monitoring. Zorg voor koppeling met gevoeligheidslabels en DLP, en borg compliance met AVG, BIO en NIS2 door uitgebreide logging en documentatie.