Zie wie toegang heeft tot je SharePoint-site. En hoe.

WhoHasAccess365 is een webonderdeel dat de machtigingen van een site uitleest en elke persoon en groep met toegang toont — inclusief de exacte keten die die toegang verleent: rechtstreeks, via een SharePoint-groep, via een Entra ID-groep of via een deellink. Het is read-only by design. Het meegeleverde verificatiescript bewijst: nul schrijfaanroepen.

v1.0.0 · SPFx 1.21 · nul schrijfaanroepen · English & Nederlands

De rapportweergave, Pro-versie getoond. Dit is een CSS-weergave, geen schermafbeelding.

0
schrijfaanroepen in het geleverde pakket. Niet weinig — nul. Het verificatiescript telt ze waar je bij staat.
0
API-machtigingen nodig om te beginnen. Installeren, op een pagina plaatsen, je eerste rapport lezen. Goedkeuringen kunnen wachten — of nooit komen.
CSV
je exportformaat. Gegenereerd in je browser, opgeslagen op je eigen schijf. Onze servers komen er niet aan te pas.

Wat dit is — en niet is

De snelle scan vóór de audit. Niet de audit.

WhoHasAccess365 is geen compliance-suite. Het geeft je tenant geen score, volgt geen wijzigingen door de tijd en maakt geen rapporten voor je toezichthouder. Het beantwoordt één vraag, snel: wie heeft toegang tot deze site, en hoe. Heb je de volledige audit nodig? Draai dan eerst deze scan — dan houdt die audit minder verrassingen over.

Het probleem

De informatie bestaat. SharePoint zet die alleen nooit op één plek.

Een manager vraagt: wie kan deze map zien? Een terechte vraag. Het antwoord van SharePoint ligt verspreid over vijf schermen.

Sitemachtigingen toont drie groepen. Wie er in elke groep zit, is opnieuw een klik. Entra ID-groepen verschijnen als één ondoorzichtige naam. Lijsten en items die de overerving hebben doorbroken, melden zichzelf niet. Deellinks bestaan per item, en je ziet ze alleen als je al weet waar je moet kijken.

Het eerlijke antwoord is daardoor meestal "geef me een middag". Dat hoort "geef me een minuut" te zijn.

Wat in de standaardinterface onzichtbaar blijft

  • Wie er werkelijk in "Finance Team" zit — en in de groepen dáárin
  • Welke lijsten en bibliotheken de sitemachtigingen niet langer overerven
  • Welke items eigen machtigingen hebben, en met wie ze zijn gedeeld
  • Elke deellink die nog werkt, maanden nadat hij is aangemaakt
  • Of "Iedereen behalve externe gebruikers" stilletjes toegang heeft

Zo werkt het

Van vraag naar rapport in vijf stappen.

WhoHasAccess365 is een webonderdeel op een pagina in je eigen site. Het leest, het schrijft nooit — het hele product is op die ene regel gebouwd.

01
Voeg het webonderdeel toe
Upload het pakket naar je appcatalogus en plaats WhoHasAccess365 op een moderne pagina. Geen Entra-appregistratie, geen installatiewizard.
02
Het kijkt met jouw ogen
De scan draait delegated, als de ingelogde gebruiker. Hij ziet precies wat jij kunt zien — niets meer, en aantoonbaar niets anders.
03
Lees het antwoord
Eén tabel: principal, toegangsniveau en de hoe-keten. "Marieke van Dijk — Bewerken — via Finance Team (SharePoint-groep)." Geen giswerk meer.
04
Ga dieper (Pro)
Doorzoek elke lijst op items met unieke machtigingen, breng deellinks in kaart en markeer organisatiebrede toegang zoals "Iedereen behalve externe gebruikers".
05
Exporteer (Pro)
Eén klik, één CSV — principal, toegang, bron, bereik — gegenereerd in je browser, klaar voor degene die de vraag stelde.
Entra ID-groepen: eerst namen, leden na toestemming

Standaard verschijnen Entra ID-groepen als naam — "SEC-NL-Finance (Entra ID-groep)", zonder ledenlijst. Keurt een beheerder één delegated Graph-machtiging goed (GroupMember.Read.All), dan klappen dezelfde rijen uit naar echte personen — in de Pro-versie. In beide gevallen werkt alles zonder foutmeldingen. Zie de uitleg over toestemming hieronder.

Veiligheidsaudit

Het gevaarlijkste dat deze tool kan doen, is je de waarheid laten zien.

WhoHasAccess365 is 100% read-only. Er zit geen aanroep in die een machtiging kan wijzigen, een bestand kan delen, iets kan verwijderen of ook maar één byte naar je tenant kan schrijven. Dat is geen belofte; het is een controle — zonder die controle slaagt de build niet. Hieronder staat elke netwerkaanroep in het product — de volledige lijst, geen selectie.

Volledige lijst van netwerkaanroepen van WhoHasAccess365
#AanroepMethodeWat het doetDestructief?
1/_api/web/roleassignments?$expand=Member,RoleDefinitionBindingsGETLeest wie welke rol heeft (ook per lijst met doorbroken overerving, en per uniek gemachtigd item in de Pro-scan)Nee — leest
2/_api/web/sitegroups({id})/usersGETLeest de leden van een SharePoint-groepNee — leest
3/_api/web/siteusers?$select=…,IsSiteAdmin…GETSomt beheerders van de siteverzameling op (naar beste kunnen — zij staan nooit in de roltoewijzingen)Nee — leest
4/_api/web/lists?$select=…,HasUniqueRoleAssignments,…GETVindt lijsten en bibliotheken die de overerving doorbrekenNee — leest
5/_api/web/lists(guid)/items?$select=Id,FileRef,FileLeafRef,FileSystemObjectType,HasUniqueRoleAssignments&$top=… (Pro)GETLoopt pagina voor pagina door items op zoek naar unieke machtigingenNee — leest
6/_api/web/Lists('{guid}')/GetItemById(id)/GetSharingInformation (Pro)POSTLeest de deellinks op een item. POST in naam, query in gedrag — er verandert nietsNee — lezende query
7graph.microsoft.com/v1.0/groups… (consent probe, groepsgegevens, {id}/transitiveMembers — Pro, optioneel)GETKlapt een Entra ID-groep uit naar leden — alleen na goedkeuring door een beheerderNee — leest
8license.whohasaccess365.com/validate (Pro)POSTValideert een Pro-sleutel. Verstuurt de sleutel en je tenant-hostnaam — verder niets. De enige aanroep die je tenant verlaatNee — je tenant blijft onaangeraakt

Regels 6 en 8 zijn de enige POST-aanroepen in de code. GetSharingInformation is een query die toevallig POST vereist; er verandert niets. De licentiecontrole is de enige aanroep die je tenant ooit verlaat, met precies twee waarden: de licentiesleutel en je tenant-hostnaam. De build-pipeline faalt zodra er een andere methode, een ander endpoint of een andere bestemming in de bundel opduikt.

$ node verify-compiled-package.js ./whohasaccess365.sppkg
reading package ............ ok  (whohasaccess365.sppkg, 412 KB)
unpacking bundle ........... ok
scanning for HTTP verbs .... ok
  DELETE ................... 0 found
  PUT / PATCH / MERGE ...... 0 found
  POST ..................... 2 found, both allowlisted:
      _api/…/GetSharingInformation      (read-style query)
      license.whohasaccess365.com/validate
endpoint inventory ......... 8 endpoints — matches the published audit table
verdict .................... READ-ONLY VERIFIED

verify-compiled-package.js zit in elke download — gratis én Pro. Geloof ons niet op ons woord. Controleer het.

Nul schrijfaanroepen. Het meegeleverde verificatiescript pakt exact het .sppkg-bestand uit dat jij hebt geïnstalleerd en telt de HTTP-methoden in de gecompileerde code. DELETE: 0. PUT/PATCH/MERGE: 0. Draai het zelf — het is vier regels uitvoer.
Werkt voordat iemand iets goedkeurt. Het pakket vraagt één optionele Graph-machtiging aan. Goedkeuren, negeren of afwijzen: de installatie slaagt en alles op SharePoint-niveau werkt. Microsofts eigen richtlijn zegt dat een oplossing er nooit van mag uitgaan dat de machtiging is verleend — daar hebben wij precies op gebouwd.
Delegated. Onder jouw account. Niets permanents. Geen app-only principal, geen serviceaccount, geen opgeslagen inloggegevens. De tool leent je eigen ingelogde sessie en ziet wat jij ziet. Sluit het tabblad en er blijft niets achter.

Vergelijking

Een doorsnee machtigingentool, en deze.

Vergelijking tussen een doorsnee machtigingentool en WhoHasAccess365
Een doorsnee machtigingentoolWhoHasAccess365
Draait alsEen Entra-app met tenantbrede lees- en soms schrijfrechtenJijzelf — delegated, ingelogd, niets permanents
Je gegevensGeüpload naar de cloud van de leverancier, voor verwerking en dashboardsBlijven in je tenant. Eén licentiecontrole vertrekt: sleutel + hostnaam, verder niets
SchrijftoegangAanwezig — je vertrouwt op beleidAfwezig — je leest de uitvoer van een verificatiescript
Tijd tot het eerste antwoordEen implementatietrajectTien minuten, inclusief de upload naar de appcatalogus
PrijsmodelAbonnement, per gebruiker, per maand€ 199 eenmalig, per tenant. Gratis versie zonder registratie
De eigen claims"Volledig inzicht"Een gedocumenteerde lijst met beperkingen, in de FAQ

Voor wie

Drie mensen blijven deze vraag stellen.

De beheerder, vóór de audit

De externe audit staat gepland en je wordt liever niet ter plekke verrast. Draai de scan, herstel het voor de hand liggende, en stap voorbereid naar binnen.

De site-eigenaar, ter plekke

"Wie kan dit zien?" verdient beter dan een schouderophaal. Plaats het webonderdeel, lees de tabel, en antwoord met een rapport in plaats van een inschatting.

De consultant, in een nieuwe tenant

Dag één in een geërfde omgeving. Zie de wildgroei aan machtigingen precies zoals ze is, vóórdat je iets verandert — read-only betekent dat je niet kunt breken wat je beoordeelt.

Installatie

Binnen tien minuten operationeel.

Download whohasaccess365.sppkg — gratis, zonder registratie

De zip bevat whohasaccess365.sppkg en verify-compiled-package.js — de gratis versie is de volledige rapportmotor, geen sleutel, geen e-mailverplichting. Geloof ons niet op ons woord. Controleer het.

  1. 1Download whohasaccess365.sppkg. Voor de gratis versie is geen registratie en geen sleutel nodig.
  2. 2Upload het naar je appcatalogus en schakel het in. Er verschijnt één optionele Graph-machtigingsaanvraag; die mag eeuwig blijven staan.
  3. 3Plaats het webonderdeel WhoHasAccess365 op een moderne pagina van de site die je wilt doorlichten.
  4. 4Lees je siterapport. Dat deel is gratis — elke site, elke gebruiker.
  5. 5Pro: plak je licentiesleutel in het instellingenpaneel van het webonderdeel. De itemscan, deellinks, organisatiebrede markeringen en CSV-export werken per direct.

Prijs

€ 199 eenmalig, per tenant
✓ EENMALIGE BETALING. GEEN ABONNEMENT. GEEN KOSTEN PER GEBRUIKER.

Eén licentie dekt elke site, elke gebruiker en elke scan in één SharePoint-tenant — permanent, inclusief updates. De gratis versie blijft gratis en heeft geen sleutel nodig.

Direct geleverd op de bevestigingspagina en per e-mail. Alle verkopen zijn definitief — geen terugbetalingen.

Waarom eenmalig? Omdat een machtigingenvraag geen vaste kostenpost hoort te worden. Je betaalt voor de tool, niet voor de maanden.

Wat je krijgt.

Gratis beantwoordt de sitevraag volledig. Pro gaat onder siteniveau.

Vergelijking van functies tussen Gratis en Pro
Wat je krijgtGratisPro — € 199 eenmalig
Siterapport: alle rollen en toewijzingen
SharePoint-groepen uitgeklapt naar leden
Entra ID-groepen op naam
Lijsten en bibliotheken met doorbroken overerving
Itemscan op unieke machtigingen
Deellinks in kaart
Markering "Iedereen" / "Iedereen behalve externe gebruikers"
Entra ID-groepsleden uitklappen (na Graph-toestemming)
CSV-export
E-mailsupport met voorrang

Vragen

De lastige vragen, eerlijk beantwoord.

Hoe zie ik wie toegang heeft tot een SharePoint-site — en hoe ze die kregen?

Voeg het webonderdeel toe aan een moderne pagina en het somt elke principal met toegang op, plus de exacte keten die de toegang verleent: direct, via een SharePoint-groep, via een geneste Entra ID-groep of via een deellink. Het siterapport is gratis en klaar in seconden — geen PowerShell, geen scripts aan elkaar knopen, geen gebruiker-voor-gebruiker door Toegang beheren klikken.

Heb ik een Copilot- of SharePoint Advanced Management-licentie nodig om te zien wie toegang heeft?

Nee. Microsofts Data Access Governance-rapporten voor "sitemachtigingen" zitten achter een Copilot- of SharePoint Advanced Management-licentie — WhoHasAccess365 geeft je het wie-heeft-toegang-antwoord zonder een van beide. Het is een SPFx-webonderdeel dat in je eigen tenant draait met de bestaande rechten van de ingelogde gebruiker; het gratis siterapport heeft helemaal geen licentie nodig.

Hoe vind ik alle deellinks, inclusief anonieme "Iedereen"-links, in SharePoint?

De item-scan van Pro somt elke actieve deellink op items met unieke machtigingen op en labelt elke link op bereik — anoniem ("Iedereen"), organisatie of specifieke personen — plus of het lezen of bewerken is, en de vervaldatum. Anonieme links die ooit zijn aangemaakt en vergeten, zijn precies wat dit aan het licht brengt, en je kunt alles exporteren naar CSV.

Hoe vind ik lijsten en bibliotheken met verbroken machtigingsovererving?

Het gratis siterapport toont al elke lijst en bibliotheek die de sitemachtigingen niet meer overerft — die met eigen unieke machtigingen die geen enkel ingebouwd scherm je op één plek laat zien. Pro scant er daarna item voor item doorheen om te tonen welke specifieke items de overerving doorbraken en met wie ze gedeeld zijn.

Wat is "Everyone except external users" en hoe vind ik waar het wordt gebruikt?

"Everyone except external users" (EEEU) is een speciale claim die iedereen binnen je tenant in één keer toegang geeft — makkelijk toe te voegen, makkelijk te vergeten, en een veelvoorkomende oorzaak van stille over-sharing. WhoHasAccess365 markeert EEEU en "Everyone" overal waar ze in het rapport voorkomen met een badge voor brede toegang, zodat je in één oogopslag ziet waar organisatiebrede toegang is weggegeven.

Is het echt read-only? Waarom zou ik dat geloven?

Omdat je het niet hoeft te geloven. Elke download bevat verify-compiled-package.js, een script dat exact het pakket uitpakt dat jij hebt geïnstalleerd en de HTTP-methoden in de gecompileerde code telt: DELETE 0, PUT/PATCH/MERGE 0, en twee toegestane POST-aanroepen die alleen lezen. De build faalt zodra er ooit iets anders in verschijnt. De audittabel hierboven is het complete netwerkoppervlak — er bestaat geen aanroep die daar niet in staat.

Moet ik beheerder zijn om het te gebruiken?

Nee. Het webonderdeel draait als degene die naar de pagina kijkt. Eén eerlijke nuance: het uitlezen van de complete lijst roltoewijzingen van een site vereist SharePoints recht "Machtigingen inventariseren" (Enumerate Permissions), dat standaard in de machtigingsniveaus Volledig beheer en Hiërarchie beheren zit. Site-eigenaren krijgen dus het volledige rapport; gewone leden mogelijk niet. Ontbreekt het recht, dan vertelt de tool je dat in gewone taal — in plaats van een foutmelding te geven.

Waarom vraagt het pakket GroupMember.Read.All aan — en wat als we dat nooit goedkeuren?

Leden van Entra ID-groepen zijn alleen via Microsoft Graph uit te lezen, en daarvoor is één delegated machtiging nodig die een beheerder eenmalig, tenantbreed goedkeurt. Keur je die nooit goed: al het andere werkt, en Entra ID-groepen verschijnen op naam met de markering "niet uitgeklapt". Goed om te weten vóór je goedkeurt: SharePoint koppelt de goedkeuring aan zijn gedeelde extensibility-principal, waarna ook andere SPFx-oplossingen in je tenant met dezelfde machtiging Microsoft Graph kunnen aanroepen — zonder extra goedkeuringsstap. Weigeren is een legitieme keuze, en de tool is daarvoor gebouwd.

Wat kan het rapport níét zien?

Een eerlijke lijst: (1) Het leest één site per keer — het is geen tenantbrede crawler. (2) Het ziet nooit meer dan de ingelogde gebruiker mag zien. (3) Zonder Graph-toestemming blijven leden van Entra ID-groepen verborgen achter de groepsnaam. (4) Het toont de situatie van nu, niet de geschiedenis — voor "wie heeft wat wanneer geopend" gebruik je het Microsoft 365-auditlogboek. (5) Persoonlijke OneDrive-sites scant het alleen als je het webonderdeel daar plaatst en toegang hebt. Vind je een beperking die hier niet staat? Meld het, dan zetten we die erbij.

Hoe lang duurt een grote scan — en vertraagt hij de tenant?

Het siterapport duurt seconden. De itemscan is begrensd door de lijstgrootte: hij loopt in batches door de items, houdt een klein, vast aantal verzoeken tegelijk open, en zodra SharePoint een throttling-antwoord geeft (HTTP 429 of 503) wacht hij exact zo lang als de Retry-After-header aangeeft en gaat dan verder. Dat header-respecterende gedrag is Microsofts eigen aanbevolen aanpak, en het betekent dat de scan wijkt voor echte gebruikers in plaats van met ze te concurreren. Reken op minuten bij grote bibliotheken; de voortgangsbalk toont live de aantallen.

Waar ligt de grens tussen Gratis en Pro?

Gratis beantwoordt de sitevraag volledig: alle roltoewijzingen, SharePoint-groepen uitgeklapt naar leden, Entra ID-groepen op naam, en welke lijsten de overerving doorbreken. Pro (€ 199 eenmalig per tenant) gaat onder siteniveau: de item-voor-item-scan op unieke machtigingen, deellinks, "Iedereen"-markeringen, het uitklappen van Entra-groepen en CSV-export. Geen proefperiodes die aflopen, geen zeurende meldingen — Gratis blijft blijvend bruikbaar.

Welke gegevens verlaten onze tenant — en waar gaat de CSV heen?

Eén verzoek verlaat je tenant: de Pro-licentiecontrole, een POST naar ons licentie-endpoint met de licentiesleutel en je tenant-hostnaam. Verder niets — geen machtigingsgegevens, geen gebruikersnamen, geen telemetrie, nooit. De CSV wordt binnen je browser gegenereerd en direct op je schijf opgeslagen; hij wordt nergens geüpload, en wij zouden hem niet eens kúnnen inzien. De gratis versie doet helemaal geen externe aanroep.

Werkt het op klassieke sites?

Het webonderdeel heeft een moderne pagina nodig om op te staan — zo werkt SPFx. Praktische omweg: voeg één moderne pagina toe aan de klassieke site (Site-inhoud → Nieuw → Pagina) en plaats het webonderdeel daar. Machtigingen zijn gegevens op siteniveau, dus het rapport dekt de hele site, ongeacht op welke pagina het draait. Alleen volledig klassiek vergrendelde omgevingen waar geen moderne pagina kan worden gemaakt, vallen af.

Kan één licentie op meerdere tenants — en kan een licentie worden ingetrokken?

Een licentie wordt uitgegeven voor één tenant-hostnaam en daartegen gevalideerd: ze werkt dus op elke site binnen die tenant, en nergens anders. Meerdere tenants nodig? Mail ons voor een bundel — koop niet vijf losse licenties tegen de volle prijs zonder het eerst even te vragen. Sleutels zijn intrekbaar: we trekken in bij terugboekingen en bij duidelijk misbruik (zoals een sleutel die publiek rondzwerft), nooit bij normaal gebruik. Raakt een intrekking je per vergissing, dan is één mailtje genoeg om het recht te zetten.

En als het toch niet is wat we nodig hebben?

Probeer eerst Gratis — dat is de echte rapportmotor, geen uitgeklede demo, dus je kunt het hele product beoordelen voordat je iets betaalt. Daarom, en omdat een Pro-sleutel alle functies direct ontgrendelt zodra je hem invoert, zijn alle verkopen definitief: HS Services biedt geen terugbetalingen, voor dit product of voor enig ander product in de familie. Doet Pro niet wat deze pagina zegt? Mail ons — we lossen het op of leggen het uit — maar de aankoop zelf wordt niet teruggedraaid.