Klanttenants koppelen
Rollout leest bij je klanten of alles klaarstaat voor de overstap: account, licentie, groepen, MFA en laptop. Daarvoor maak je één app-registratie met alleen leesrechten, zonder wachtwoord of geheim, en geeft elke klant één keer toestemming.
App-registratie "Rollout – Readiness"
In Rollout staat onder Installatie een assistent die een PowerShell-script maakt dat beide app-registraties (Login én Readiness) in één keer goed aanmaakt. Hieronder staat wat dat script doet, zodat je het kunt controleren of met de hand kunt doen.
- Nieuwe registratie, multitenant
Entra → App-registraties → Nieuwe registratie
- Naam:
Rollout – Readiness - Ondersteunde accounttypen: Accounts in elke organisatiemap (multitenant: klanten geven toestemming aan deze app)
- Omleidings-URI (Web):
https://<jouw-domein>/toestemming
- Naam:
- Alleen leesrechten
API-machtigingen → Een machtiging toevoegen → Microsoft Graph → Toepassingsmachtigingen:
Machtiging Waarvoor User.Read.AllBestaat het account, staat het aan, welke licenties GroupMember.Read.AllZit de medewerker in de juiste groepen LicenseAssignment.Read.AllLicentietoewijzing en vrije licenties AuditLog.Read.AllLaatste aanmelding, MFA-registratie, nazorg DeviceManagementServiceConfig.Read.AllAutopilot-registratie van de laptop DeviceManagementManagedDevices.Read.AllLaptop in Intune, compliant, laatste sync DeviceManagementApps.Read.AllVereiste apps toegewezen Organization.Read.AllTenantnaam en domeinen (verkeerd tenant-id herkennen) Optioneel voor migratiecontroles:
MailboxSettings.ReadenBitlockerKey.ReadBasic.All.Klik niet op "Beheerderstoestemming verlenen" voor je eigen tenant tenzij je die zelf als testklant gebruikt.
- Geen geheim: federatie met Vercel
In plaats van een wachtwoord vertrouwt de app-registratie alleen jouw Vercel-project. Er is dus niets dat kan uitlekken.
Eerst in Vercel: project → Settings → Security → Secure backend access with OIDC federation: aan, modus Team.
Dan in Entra: Certificaten en geheimen → Federatieve referenties → Referentie toevoegen → Andere verlener:
Veld Waarde Verlener (Issuer) https://oidc.vercel.com/<team-slug>Onderwerp-id (Subject) owner:<team-slug>:project:<projectnaam>:environment:productionDoelgroep (Audience) https://vercel.com/<team-slug>(wijzig de standaardwaarde!)Naam vercel-<projectnaam>-productionHoofdlettergevoelig: neem het precies zo over. Maak geen clientgeheim of certificaat aan.
- Toepassings-id noteren
Die wordt
GRAPH_CLIENT_IDin stap 4. Het is geen geheim.
Met federatie bestaat er geen sleutel tot de tenants van je klanten: Vercel bewijst bij elke aanvraag "ik ben dit project", en Microsoft vertrouwt alleen dat ene project. Zelfs iemand met toegang tot de code of de database kan niet bij je klanten. Zelf hosten zonder Vercel? Dan gebruik je een certificaat of een managed identity, zie Zelf hosten.
Een klant koppelen
Dit doe je per klant, in de app zelf (Project → Koppeling → Klant koppelen). Alleen een beheerder kan een tenant aan een klant koppelen.
Scroll hierheen of druk op afspelen.
Twee sloten op elke tenant
Rollout leest alleen bij een tenant als hij door beide sloten komt:
- Slot 1: allowlistTenant-id staat in GRAPH_ALLOWED_TENANTS, buiten de app en de database
- Slot 2: eigen klantDe tenant hoort bij een klant van jouw organisatie (Row Level Security)
- Pas dan lezenAlleen de leesrechten die de klant heeft goedgekeurd
Een nieuwe klant toevoegen is daarom bewust een handmatige stap: tenant-id aan GRAPH_ALLOWED_TENANTS toevoegen en opnieuw deployen. Zelfs als iemand in de database een klant met een vreemd tenant-id weet aan te maken, leest Rollout daar niet.
Controleren
- Verbinding testen op een testtenant geeft groen voor de machtigingen
- De app-registratie heeft geen clientgeheim en geen certificaat, alleen een federatieve referentie
- Een engineer (geen beheerder) kan geen tenant-id bij een klant invullen