M365Con 2027 – gratis online conferentie · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Het Microsoft Graph consent-probleem: wat tutorials overslaan

By ·

Welkom bij onze begeleidende gids voor de podcast! Als je ooit een achtergrondtaak hebt ingesteld, beheerderstoestemming hebt verleend en daarna hoopvol hebt gewacht, ben je zeker niet de enige. …

Automatically translated with AI from the original post. Read the English original

▶ BLOGMastering the MicrosoftGraph Consent Gap: What…M365.FM
Titelbild: Mastering the Microsoft Graph Consent Gap: What Tutorials Leave Out

Welkom bij onze begeleidende gids voor de podcast! Als je ooit een achtergrondtaak hebt ingesteld, admin consent hebt verleend en vervolgens hebt gehoopt dat alles goed zou gaan, ben je zeker niet de enige. Veel ontwikkelaars en beheerders doorlopen standaardtutorials, configureren hun achtergrondservices en gaan ervan uit dat het beveiligingswerk klaar is zodra de code draait. Toch zit er een enorm verschil tussen een integratie die werkt in een testomgeving en een integratie die in productie veilig, betrouwbaar en klaar voor audit blijft. In dit artikel gaan we dieper in op de verborgen risico's van app-only toegang, waarbij machtigingen tenantbreed gelden zonder gebruikerscontext. We bespreken ook waarom eenmalige consent je beveiliging op lange termijn kan blijven achtervolgen en hoe beleidswijzigingen onbeheerde achtergrondtaken stilletjes kunnen laten vastlopen. Wil je het onderwerp nog verder verdiepen? Beluister dan ook onze bijbehorende podcastaflevering: Microsoft Graph App-Only Consent Explained.

Voor wie dit bedoeld is

  • Azure AD- / Entra ID-beheerders en security engineers
  • M365-platformeigenaren en SharePoint-, Exchange- en Teams-beheerders
  • Ontwikkelaars die onbeheerde services, Azure Functions, Logic Apps of integraties bouwen
  • Compliance-, audit- en governance-teams

Het consent-probleem (wat tutorials overslaan)

  • Gedelegeerd versus toepassing: app-only = geen gebruikerscontext; scopes gelden tenantbreed zodra ze zijn goedgekeurd.
  • Eenmalige consent, blijvende impact: brede rollen (bijvoorbeeld Sites.ReadWrite.All) blijven gelden totdat ze expliciet worden ingetrokken.
  • Beleidswijzigingen breken apps: consent-instellingen of aanpassingen in Conditional Access kunnen het ophalen van tokens stilletjes onmogelijk maken.
  • Auditzicht is beperkt, tenzij je machtigingen van bedrijfsapps bewust logt en beoordeelt.

Eerst minimale rechten (het kiezen van machtigingen)

  • Kies waar mogelijk smalle resource-scopes in plaats van *.ReadWrite.All.
  • Voorbeelden die je kritisch moet bekijken:
    • Directory: kies eerst voor User.Read.All (basisprofiel) in plaats van Directory.Read.All.
    • SharePoint: probeer toegang op sitieniveau of app-catalogi voordat je Sites.ReadWrite.All gebruikt.
    • Mail/agenda's: gebruik Mail.Read / Calendars.Read, tenzij schrijfrechten echt nodig zijn.
  • Geen "future-proofing" door scopes te ruim te zetten. Voeg scopes alleen toe wanneer een functie ze echt nodig heeft.

De app correct registreren (stap voor stap)

  1. Registreer de app in Entra ID en noteer de Application (client) ID en de Tenant ID.
  2. Authenticatie: kies de methode client credential:
    • Certificaat (aanbevolen), opgeslagen en geroteerd via Key Vault, of
    • Clientgeheim (korte levensduur en rotatiebeleid), of
    • Beheerde identiteit (het beste voor workloads in Azure).
  3. API-machtigingen → tabblad Application → voeg alleen minimale Graph-scopes toe.
  4. Verleen admin consent bewust en documenteer wie, waarom en wanneer.
  5. Enterprise-apps: vergrendel assignment required, eigenaren en sign-in- en auditlogging.

Admin consent, beleid en beheersmaatregelen

  • Alleen geprivilegieerde beheerders kunnen applicatiemachtigingen verlenen.
  • Zie admin consent als risicoacceptatie: leg doel, gegevens die worden aangeraakt en de vervaldatum of het verlengingsmoment vast.
  • Stem af op Tenant Restrictions, Permission Grant Policies en Conditional Access voor service principals.

Tokens in de praktijk (hoe authenticatie echt misgaat)

  • Veelvoorkomende storingen: verlopen geheimen of certificaten, verkeerde resource (.default-scope), ontbrekende rol, tenant-mismatch.
  • Verhard de tokenstroom:
    • Gebruik certificaatcredentials of een beheerde identiteit in plaats van langlevende geheimen.
    • Roteer geheimen en certificaten ruim vóór de vervaldatum (Key Vault-herinneringen en automatisering).
    • Probeer opnieuw met backoff en houd 401/403-telemetrie met correlatie-ID's bij.
    • Cache tokens per run, maar nooit over tenants heen of langer dan veilige levensduren.

Monitoring en audit (maak het audit-klaar)

  • Dashboards en waarschuwingen voor: tokenfouten, consent-wijzigingen, nieuw toegevoegde machtigingen en inactieve apps.
  • Kwartaalreviews: inventariseer enterprise-apps, machtigingen en de laatst gebruikte tijdstempels; verwijder verouderde registraties.
  • Log: wie toestemming heeft verleend, datum en tijdstip, onderbouwing, getroffen gegevensdomeinen.
  • Key Vault: schakel waarschuwingen voor verlopende referenties in en gebruik waar mogelijk automatische rotatie van certificaten.

Minimale machtigingspatronen (startmatrix)

  • Gebruikersinventaris/rapportage → User.Read.All
  • Gebruiksanalyse van Teams → Reports.Read.All
  • Alleen-lezen export van mailbox → Mail.Read
  • Agenda-synchronisatie (lezen) → Calendars.Read
  • SharePoint lezen (breed) → Sites.Read.All (vermijd ReadWrite tenzij dat verplicht is)
  • Profielsynchronisatie naar HR → User.Read.All (+ specifieke schrijfscopes alleen als dat echt nodig is)

Vuistregel: eindigt de scope op .ReadWrite.All, stop dan en evalueer opnieuw. Als het echt moet, isoleer de app, documenteer de onderbouwing en voeg extra monitoring toe.

Veelvoorkomende fouten en snelle oplossingen

  • invalid_client / invalid_grant → verlopen geheim of certificaat; roteer het in Key Vault en deploy opnieuw.
  • insufficient privileges to complete the operation → ontbrekende Application-machtiging of beheerderstoestemming is niet verleend in deze tenant.
  • 403 op SharePoint met app-only → scope is te breed of sitetoegang is niet afgestemd; controleer de sitemachtigingen en de aanpak via de app-catalogus.
  • Sporadische 401's → wijziging in Voorwaardelijke toegang of toestemmingsbeleid; controleer de aanmeld- en auditlogs voor de service-principal.

Beveiligings- en compliancerichtlijnen

  • Scheid taken: aparte eigenaren voor app-registratie, goedkeuring van toestemming en beheer.
  • Label enterprise-apps met een gegevensclassificatie (bijvoorbeeld raakt HR, Finance of PHI).
  • PIM voor wie toestemming verleent; vereis een ticket of wijzigingsregistratie voor nieuwe scopes.
  • Verwijder ongebruikte apps en schakel verouderde authenticatie-eindpunten uit.
  • Documenteer gegevensstromen per app; houd per integratie een overzicht van één pagina bij.

Snelle veelgestelde vragen

  • Nemen app-only-machtigingen de gebruikers-ACL's over? Nee, app-only werkt onafhankelijk van de gebruikerscontext.
  • Kan een gewone gebruiker app-only-scopes toekennen? Nee, er is beheerderstoestemming nodig.
  • Vervallen tokens automatisch bij intrekking van toegang? Tokens verlopen snel, maar verleende machtigingen blijven bestaan totdat ze worden ingetrokken.
  • Welke authenticatie is het beste? Beheerde identiteit (in Azure) of certificaten + Key Vault; vermijd langlevende geheimen.

Actieplan (90 minuten durende hardeningsprint)

  1. Inventariseer enterprise-apps + Graph-applicatiemachtigingen.
  2. Markeer apps met *.ReadWrite.All en Directory.* voor beoordeling.
  3. Roteer elk geheim dat binnen <30 dagen verloopt; ga waar mogelijk over op certificaat/beheerde identiteit.
  4. Schakel waarschuwingen in voor wijzigingen in toestemming en het verlopen van Key Vault-items.
  5. Schrijf een overzicht van één pagina per app: doel, gebruikte gegevens, scopes, eigenaar, rotatiedatum.
  6. Plan een kwartaalreview met SecOps en de app-eigenaren.

Conclusie

Het beveiligen van je Microsoft Graph-integraties is geen eenmalige klus. Door de werkelijke gevolgen van de toestemmingskloof te begrijpen, minimale machtigingspatronen te hanteren, af te stappen van kwetsbare clientgeheimen en strikte monitoringroutines in te richten, verhoog je de beveiliging van je tenant aanzienlijk. Laat je achtergrondtaken niet kwetsbaar zijn voor stille fouten of ongecontroleerde rechtenuitbreiding. Neem vandaag nog de tijd om onze hardeningsprint van 90 minuten door te lopen en je enterprise-apps te auditen. Voor een volledig overzicht van deze concepten en een diepere bespreking van app-only-toegang kun je ook de bijbehorende podcastaflevering bekijken: Microsoft Graph App-Only Consent Explained.

Entities in this article

Microsoft Graph Azure Key Vault Microsoft Entra ID SharePoint Conditional Access Managed identity Client secret Azure Functions Azure Logic Apps Exchange Online

Related articles

RSS