Teams guest access en shared channels: zo werk je veilig samen met externen
Voor een stichting waar ik de IT voor doe, moest ik recent een vraag oplossen die in elke organisatie wel terugkomt. Hoe laat je externe mensen meedraaien in je Teams-omgeving zonder dat je je eigen tenant openzet als een schuurdeur? Bestuursleden van een andere organisatie, een accountant, een vrijwilliger die alleen aan één project meewerkt: die wil je niet allemaal een eigen account in jouw Microsoft 365 geven, maar je wilt ze wél in dezelfde Teams-kanalen hebben als je interne mensen.
Microsoft biedt hier twee routes voor. Guest access is de klassieke aanpak en zit al jaren in Teams. Shared channels (via Teams Connect) is nieuwer en werkt anders. Welke past het beste? Dat hangt af van wat je wilt bereiken. Hieronder leg ik beide uit, met de inrichting die ik bij de stichting heb gekozen.
Het verschil tussen guest access en shared channels
Een guest is een externe gebruiker met een eigen werkemail of Microsoft-account, die je een uitnodiging stuurt om aan jouw tenant te koppelen. Onder de motorkap maakt Entra ID (voorheen Azure AD) een gastobject aan dat verwijst naar het externe account. De guest logt in met zijn eigen wachtwoord, maar moet in Teams wisselen naar jouw tenant om bij jullie kanalen te komen. Hij is dus op bezoek in jouw omgeving.
Een shared channel werkt anders. Bij een shared channel deel je één specifiek kanaal met externen, zonder dat ze gast worden in jouw tenant. De externe blijft in zijn eigen Teams-client, in zijn eigen tenant, en ziet het gedeelde kanaal er gewoon tussen staan. Geen tenant-switch, geen tweede inlog. Onder water gebruikt Teams hiervoor Microsoft Entra B2B Direct Connect, waarbij de twee tenants een vertrouwensrelatie aangaan voor dat ene kanaal.
In de praktijk:
- Guest access = "kom bij ons in huis werken". Goed voor mensen die langere tijd in meerdere kanalen meedraaien, vaak ook in bestanden moeten, en deel uitmaken van het bredere teamleven.
- Shared channels = "we werken samen in een gedeelde ruimte". Goed voor afgebakende samenwerking tussen organisaties, of als de externe organisatie zelf ook een serieuze Microsoft 365-omgeving heeft.
Bij de stichting gebruik ik allebei: guest access voor individuele externen die langere tijd meedraaien zoals de accountant en freelancers, shared channels voor de structurele samenwerking met partnerorganisaties die hun eigen tenant hebben.
Stap 1 — Tenantbreed beleid op orde
Voordat je iets uitnodigt: zorg dat het beleid op tenantniveau klopt. Dit doe je in het Entra-portal onder External Identities → External collaboration settings (voor guests) en Cross-tenant access settings (voor shared channels).
Voor guest access:
- Guest user access: zet deze op Guest users have limited access to properties and memberships of directory objects. Een guest mag zien dat een team bestaat waar hij in zit, maar mag niet rondsnuffelen in jouw directory.
- Guest invite settings: bepaal wie er guests mag uitnodigen. Anyone in the organization is te ruim. Ik beperk dit tot beheerders en specifieke gebruikers die als teamleider zijn aangewezen.
- Collaboration restrictions: gebruik een allowlist met de domeinen waar je structureel mee samenwerkt. Onbekende domeinen worden geblokkeerd. Dat voorkomt dat iemand per ongeluk een random gmail-adres uitnodigt.
Voor shared channels (Cross-tenant access settings):
- Per partnerorganisatie configureer je een aparte regel met haar tenant-ID. Je geeft expliciet aan welke gebruikers of groepen aan jouw kant mogen deelnemen, en welke aan hun kant.
- B2B Direct Connect moet aan staan voor zowel inbound als outbound, alleen voor die specifieke tenants. Niet voor de hele wereld openzetten.
- Trust settings: bepaal of je MFA en device-compliance vanuit de partner-tenant vertrouwt. Voor een serieuze partner die zelf goed staat ingericht, kan dat. Hun gebruikers hoeven dan niet dubbel te MFA-en.
Doe dit voor je begint, want anders ben je later bezig met opruimen.
Stap 2 — Conditional Access voor externen apart regelen
Hier laten veel organisaties geld liggen. Guests vallen standaard onder hetzelfde Conditional Access-beleid als interne gebruikers, maar dat is bijna nooit wat je wilt. Een interne medewerker heeft een beheerd device, een externe niet.
Wat ik instel voor guests:
- MFA verplicht voor alle guests, zonder uitzondering. Een externe account zonder MFA is een open deur.
- Sessie-controles: voor guests een kortere sign-in frequency dan voor interne gebruikers, bijvoorbeeld dagelijks opnieuw inloggen.
- Block legacy authentication, ook voor guests.
- Optioneel: block download als je gevoelige documenten deelt, zodat guests bestanden alleen in de browser kunnen bekijken.
Voor shared channels gelden de Conditional Access-policies van jouw tenant (de host), niet die van de partner. Belangrijk detail: alleen policies die gescoped zijn op "All guest and external users" worden toegepast op B2B Direct Connect-gebruikers. Of zij opnieuw MFA moeten doen bij jou, regel je via Cross-tenant access settings. Vertrouw je daar op de MFA- en compliant device-claims van de partner-tenant, dan hoeven hun gebruikers niet dubbel te MFA-en. In de praktijk: vertrouw op de partner-MFA alleen als je weet dat hun setup deugt.
Dit beleid maak je als aparte policy met als doel "All guest and external users", zodat het interne beleid los blijft van het externe.
Stap 3 — Eigenaarschap regelen per team
Een team of kanaal waar externen in zitten heeft minstens twee eigenaren nodig, en bij voorkeur drie. De reden is simpel: als de enige eigenaar vertrekt of zijn rol verandert, is er niemand meer die externen kan toevoegen, verwijderen of de boel kan opruimen. Een verweesd team met externen is een beveiligingsrisico.
Spreek per team af wie de eigenaren zijn en zet dit ook letterlijk in de teambeschrijving. Bij de stichting hebben we per werkgroep een interne en een externe eigenaar: de stichtingsmedewerker plus een vertegenwoordiger van de partnerorganisatie. Dat geeft duidelijkheid en verdeelt de verantwoordelijkheid.
Voor shared channels werkt eigenaarschap iets anders. De shared channel owner komt altijd uit de host-tenant, dus de organisatie die het kanaal aanmaakt. Externen kunnen wel lid zijn, maar geen oorspronkelijke channel-owner. Alleen die owner kan rechtstreeks leden toevoegen of verwijderen. Spreek dus aan jouw kant duidelijk af wie die owner is, en wie van de partnerorganisatie het contactpunt is voor wijzigingen aan hun kant.
Stap 4 — De uitnodiging zelf
Guest access
In Teams: klik op het team, Add member, type het e-mailadres van de externe. Teams maakt automatisch een gastaccount aan in Entra ID en stuurt een uitnodigingsmail.
Een paar dingen om op te letten:
- Gebruik werkmail, geen privé-adres. Een gast met een werkmail kan zijn eigen tenant gebruiken om in te loggen, wat een veel betere ervaring is dan een persoonlijk Microsoft-account aanmaken.
- Check de displayname. Standaard wordt dat iets als "John Doe (External)". Pas dit aan zodat duidelijk is bij welke organisatie iemand hoort, bijvoorbeeld "John Doe, Organisatie X".
- Stuur de guest een eigen welkomstmail naast de automatische uitnodiging. Leg uit waar ze terechtkomen, hoe ze moeten inloggen, en bij wie ze terechtkunnen met vragen. De Microsoft-uitnodiging zelf is karig.
Shared channel
Bij een shared channel maak je een kanaal binnen een bestaand team aan als Shared (in plaats van Standard of Private) en deel je het met externen via hun werkemail. Belangrijk: B2B Direct Connect vereist een wederzijdse vertrouwensrelatie. Beide tenants moeten elkaar over en weer toestaan, dus jouw tenant outbound richting hun tenant, en hun tenant inbound richting jou. Als één kant het niet open heeft staan, krijgen externen de uitnodiging wel, maar lukt het deelnemen niet.
Tip: communiceer vooraf met de IT-beheerder van de partnerorganisatie om de Cross-tenant access settings aan beide kanten goed te zetten. Een kanaal delen zonder dat te doen leidt tot onverklaarbare foutmeldingen.
Stap 5 — Rechten op kanaal- en bestandsniveau
Een guest die in een team zit, ziet standaard alle standaardkanalen. Dat is niet altijd wat je wilt. Voor gevoelige onderwerpen maak ik private channels binnen het team, waar alleen interne mensen lid van zijn. De guest ziet die kanalen niet en weet ook niet dat ze bestaan.
Voor bestanden: alles in een team belandt in een SharePoint-site. Guests krijgen via Teams automatisch toegang tot die site, maar je kunt op bestand- of mapniveau de toegang nog verfijnen. Bestanden die alleen voor interne ogen zijn, zet ik in een aparte map en haal daar de externe toegang vanaf via SharePoint-rechten.
Bij shared channels werkt het bestandsbeheer netter: elk shared channel heeft zijn eigen SharePoint-site, los van het hoofdteam. Wat in dat shared channel terechtkomt, blijft daar. Dat is precies de reden dat shared channels prettig zijn voor structurele samenwerking. De scheiding van bestanden is veel duidelijker dan bij een team met guests erin.
Belangrijk: deel geen bestanden buiten het team via persoonlijke OneDrive-links, want die rechten zijn vrijwel onmogelijk centraal te beheren. Houd alles binnen het team of shared channel.
Stap 6 — Periodieke opschoning
Het grootste probleem met externe toegang is niet de eerste inrichting, maar wat er na een jaar van overblijft. Bestuursleden vertrekken, projecten lopen af, leveranciers wisselen, maar de gastaccounts en gedeelde kanalen blijven gewoon staan tot iemand ze verwijdert.
Wat ik standaard inricht:
- Access reviews in Entra ID, één keer per kwartaal. Teameigenaren krijgen automatisch een mail met de vraag of elke guest nog toegang nodig heeft. Reageert iemand niet binnen twee weken, dan wordt de guest automatisch verwijderd.
- Expiratiedatum bij projectteams. Voor een werkgroep die zes maanden loopt, zet ik direct bij de oprichting een einddatum op de gastaccounts. Daarna verloopt de toegang automatisch.
- Shared channels evalueren bij projectafsluiting. Een shared channel waar al twee maanden niets gebeurt, kun je beter sluiten dan open laten.
- Maandelijks logboek van nieuwe externe toegangen, zodat je in één oogopslag ziet wie er recent is bijgekomen.
Dit kost vooraf wat werk om in te richten, maar bespaart je een hoop ellende verderop.
Wanneer kies je wat
Heel kort samengevat:
- Eén externe die af en toe meedraait → guest access.
- Externe partij die structureel met je samenwerkt en zelf ook M365 heeft → shared channel.
- Project met meerdere externen uit verschillende organisaties → guest access in een projectteam met expiratiedatum.
- Twee organisaties die voor langere tijd intensief samenwerken → shared channels per werkgebied, want dat schaalt beter.
Twijfel je? Begin met guest access. Het is bekender, makkelijker uit te leggen aan eindgebruikers en je hebt het sneller in de lucht. Loop je tegen de grenzen aan zoals te veel tenant-switchen of onduidelijke bestandsscheiding, dan stap je over op shared channels.
Wat ik bij de stichting heb geleerd
Twee dingen vallen op, achteraf gezien.
Het eerste is dat de techniek niet het probleem is. Teams en Entra ID kunnen dit allemaal prima aan. Het probleem zit in de afspraken: wie nodigt uit, wie controleert, wie gooit weg. Zonder die afspraken loopt elke setup binnen een jaar vast in spookaccounts en onduidelijkheid.
Het tweede is dat externen een eigen mentaal model nodig hebben. Een externe die voor het eerst inlogt in jouw tenant snapt vaak niet waarom hij ineens in twee Teams-omgevingen tegelijk werkt. Bij shared channels is dat overigens veel minder een probleem, want daar blijft hij in zijn eigen omgeving. Voor wie veel met externen werkt en steeds dezelfde uitlegmail moet sturen, is dat een goede reden om vaker voor shared channels te kiezen.
Voor wie dit voor het eerst opzet: begin klein. Eén team, twee externen, een maand draaien, dan opschalen. Niet meteen je hele organisatie ombouwen. Externe samenwerking werkt het beste als het organisch groeit met duidelijke afspraken eromheen.