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.
| Principal | Toegang | Hoe |
|---|---|---|
| Finance Team SharePoint-groep · 14 leden | Bewerken | directe roltoewijzing |
| Marieke van Dijk | Bewerken | via Finance Team (SharePoint-groep) |
| ⚠ Iedereen behalve externe gebruikers | Lezen | directe roltoewijzing — organisatiebreed |
| Jos Vermeulen | Volledig beheer | via Team Site Owners (SharePoint-groep) |
| SEC-NL-Finance Entra ID-groep · alleen naam | Lezen | via Finance Visitors (SharePoint-groep) |
| Sophie Lammers | Lezen | deellink (lezen) — Q3 Budget 2026.xlsx |
| Priya Nair | Bewerken | directe roltoewijzing |
De rapportweergave, Pro-versie getoond. Dit is een CSS-weergave, geen schermafbeelding.
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.
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.
Siterapport: start direct.
Itemscan (Pro): 4 documentbibliotheken, 3 lijsten — circa 12.400 items.
De scan is read-only. Hij pauzeert vanzelf zodra SharePoint vraagt om af te remmen, en gaat daarna verder waar hij bleef.
| Item | Type link | Wie hem kan gebruiken |
|---|---|---|
| Q3 Budget 2026.xlsx | Lezen | Specifieke personen (2): Sophie Lammers, Tom Aikens |
| Salary bands 2026.docx | Bewerken | Personen in Contoso ⚠ |
| Offboarding checklist.docx | Lezen | Personen in Contoso |
| Board minutes 2026-05.pdf | Lezen | Specifieke personen (1): extern: [email protected] |
Bezig met "Contracten" — 8.200 van 12.400 items
Afgeremd door SharePoint — hervat over 28 s. Dit is normaal en read-only.
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.
| # | Aanroep | Methode | Wat het doet | Destructief? |
|---|---|---|---|---|
| 1 | /_api/web/roleassignments?$expand=Member,RoleDefinitionBindings | GET | Leest 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})/users | GET | Leest de leden van een SharePoint-groep | Nee — leest |
| 3 | /_api/web/siteusers?$select=…,IsSiteAdmin… | GET | Somt beheerders van de siteverzameling op (naar beste kunnen — zij staan nooit in de roltoewijzingen) | Nee — leest |
| 4 | /_api/web/lists?$select=…,HasUniqueRoleAssignments,… | GET | Vindt lijsten en bibliotheken die de overerving doorbreken | Nee — leest |
| 5 | /_api/web/lists(guid)/items?$select=Id,FileRef,FileLeafRef,FileSystemObjectType,HasUniqueRoleAssignments&$top=… (Pro) | GET | Loopt pagina voor pagina door items op zoek naar unieke machtigingen | Nee — leest |
| 6 | /_api/web/Lists('{guid}')/GetItemById(id)/GetSharingInformation (Pro) | POST | Leest de deellinks op een item. POST in naam, query in gedrag — er verandert niets | Nee — lezende query |
| 7 | graph.microsoft.com/v1.0/groups… (consent probe, groepsgegevens, {id}/transitiveMembers — Pro, optioneel) | GET | Klapt een Entra ID-groep uit naar leden — alleen na goedkeuring door een beheerder | Nee — leest |
| 8 | license.whohasaccess365.com/validate (Pro) | POST | Valideert een Pro-sleutel. Verstuurt de sleutel en je tenant-hostnaam — verder niets. De enige aanroep die je tenant verlaat | Nee — 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.
Deze app gebruikt gegevens als de ingelogde gebruiker.
Machtigingsaanvraag in behandeling: Microsoft Graph — GroupMember.Read.All (delegated). Goedkeuren is optioneel. Beheer dit op elk moment via de pagina API-toegang.
Dit is wat je beheerder werkelijk ziet. Eén optionele aanvraag — en de app draait, goedgekeurd of niet.
Graph-toestemming, uitgelegd
Eén optionele goedkeuring. Dit is precies wat er verandert.
Entra ID-groepen — Microsoft 365-groepen en beveiligingsgroepen — leven buiten SharePoint. Hun ledenlijsten lezen kan alleen via Microsoft Graph, en Graph vereist een door een beheerder goedgekeurde machtiging. Wij hebben die machtiging optioneel gemaakt, en we willen dat je precies weet wat ze doet vóórdat je die goedkeurt.
| Functionaliteit | Zonder goedkeuring | Met GroupMember.Read.All goedgekeurd |
|---|---|---|
| Rollen en toewijzingen op de site | Volledig | Volledig |
| Leden van SharePoint-groepen | Volledig | Volledig |
| Entra ID-groepen | Alleen de naam, gemarkeerd als "niet uitgeklapt" | Uitgeklapt naar ledenlijsten, inclusief geneste groepen (Pro) |
| Markering van "Iedereen" / "Iedereen behalve externe gebruikers" | Volledig | Volledig |
| Deellinks in kaart brengen (Pro) | Volledig | Volledig |
| Itemscan op unieke machtigingen (Pro) | Volledig | Volledig |
| CSV-export (Pro) | Volledig | Volledig — inclusief ledenrijen |
Goedkeuren duurt een minuut:
- 1Open het SharePoint-beheercentrum en klap Geavanceerd → API-toegang uit.
- 2Selecteer onder Aanvragen in behandeling: "Microsoft Graph — GroupMember.Read.All (delegated)".
- 3Kies Goedkeuren. Let op: het goedkeuren van Microsoft Graph-machtigingen vereist de rol Globale beheerder.
- 4Klaar. Ververs de rapportpagina — Entra ID-groepen klappen nu ter plekke uit.
Vergelijking
Een doorsnee machtigingentool, en deze.
| Een doorsnee machtigingentool | WhoHasAccess365 | |
|---|---|---|
| Draait als | Een Entra-app met tenantbrede lees- en soms schrijfrechten | Jijzelf — delegated, ingelogd, niets permanents |
| Je gegevens | Geüpload naar de cloud van de leverancier, voor verwerking en dashboards | Blijven in je tenant. Eén licentiecontrole vertrekt: sleutel + hostnaam, verder niets |
| Schrijftoegang | Aanwezig — je vertrouwt op beleid | Afwezig — je leest de uitvoer van een verificatiescript |
| Tijd tot het eerste antwoord | Een implementatietraject | Tien minuten, inclusief de upload naar de appcatalogus |
| Prijsmodel | Abonnement, 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.
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.
- 1Download whohasaccess365.sppkg. Voor de gratis versie is geen registratie en geen sleutel nodig.
- 2Upload het naar je appcatalogus en schakel het in. Er verschijnt één optionele Graph-machtigingsaanvraag; die mag eeuwig blijven staan.
- 3Plaats het webonderdeel WhoHasAccess365 op een moderne pagina van de site die je wilt doorlichten.
- 4Lees je siterapport. Dat deel is gratis — elke site, elke gebruiker.
- 5Pro: plak je licentiesleutel in het instellingenpaneel van het webonderdeel. De itemscan, deellinks, organisatiebrede markeringen en CSV-export werken per direct.
Prijs
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.
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.
| Wat je krijgt | Gratis | Pro — € 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.