AI en privacy
Wie mag welk document zien? Toegangsrechten in een AI-kennisbank
De regel is eenvoudig: een AI-kennisbank mag iemand nooit meer laten zien dan hij in de bron zelf mag inzien. Dat afdwingen doe je bij het ophalen van documenten, met rechten per bron en per rol, en niet door het taalmodel te vragen discreet te zijn.
Toegangsrechten in een AI-kennisbank bepalen welke documenten meetellen in het antwoord dat iemand krijgt. De regel is dat de AI nooit meer mag laten zien dan de vrager zelf in de bron mag inzien, en dat je dat afdwingt bij het ophalen van documenten: alleen materiaal waar die persoon recht op heeft, gaat mee naar het taalmodel.
Dat klinkt vanzelfsprekend en gaat toch vaak mis, om één reden. Een AI-assistent die je bedrijfsdocumenten doorzoekt, werkt met een kopie van die documenten in een eigen index. De rechten uit de bestandsserver of uit Microsoft 365 verhuizen niet vanzelf mee naar die kopie. Wie dat niet inricht, bouwt een zoekmachine die voor iedereen alles vindt.
Waarom werkt een instructie aan het model niet?
Omdat een instructie een voorkeur is en geen afscherming. Alles wat het model als context krijgt aangeleverd, kan in het antwoord terechtkomen.
De verleiding is groot om in de systeemprompt te zetten: gebruik geen documenten uit de personeelsmap. Een taalmodel volgt zo’n instructie vaak, maar niet altijd, en het is niet te bewijzen wanneer wel en wanneer niet. Iemand die doorvraagt, een gesprek in een andere volgorde voert of een vraag anders formuleert, kan er dwars doorheen komen. Je bouwt dan een slot waarvan de sleutel in het slot zit.
De juiste volgorde is: de vraag komt binnen, het systeem weet wie hem stelt, het haalt alleen fragmenten op uit bronnen waar die persoon bij mag, en pas dan komt het model in beeld om daar een antwoord van te maken. Het model krijgt niets te zien wat het niet had mogen zien. Wat het model verder niet zelf mag doen, namelijk rekenen met bedrijfscijfers, staat in waarom een taalmodel niet mag rekenen.
Filteren voor of na het ophalen?
Voor het ophalen. Dat is trager te bouwen en sneller in gebruik, en het is de enige variant die je kunt uitleggen aan iemand die ernaar vraagt.
Bij filteren vooraf krijgt elk stuk tekst in de index een label mee: uit welke bron het komt en welk niveau erbij hoort. De zoekopdracht gaat dan met de rol van de vrager mee naar de index, en de index geeft alleen terug wat binnen dat niveau past. Bij filteren achteraf haalt het systeem eerst de meest gelijkende fragmenten op en gooit daarna weg wat niet mag. Dat gaat op drie manieren mis: de beste fragmenten zijn net de verboden, dus het antwoord wordt mager zonder dat iemand begrijpt waarom; het aantal treffers verraadt dat er iets bestaat; en één fout in de nabewerking betekent dat er wel iets doorheen glipt.
Er is nog een keuze: controleer je de rechten op het moment van indexeren, of op het moment van vragen? Een momentopname bij het indexeren is simpel, maar loopt achter zodra iemand van functie verandert of een map wordt afgeschermd. Controleren op het moment van vragen is actueler en vraagt dat de koppeling met de bron betrouwbaar werkt. In de praktijk kiezen we voor rechten per bron in de index, met een vaste synchronisatie die wijzigingen overneemt, en met een expliciete afspraak hoe snel dat gebeurt. Spreek die termijn af en schrijf hem op, want dat is de vraag die een accountant stelt.
Welke niveaus richt je in?
Drie tot vijf, met een duidelijke eigenaar per niveau. Bij ons werkt de toegang binnen de omgeving met niveaus per rol, bijvoorbeeld algemeen, financieel en personeel.
Bij een aannemersbedrijf ziet zo’n indeling er bijvoorbeeld zo uit:
- Algemeen: werkinstructies, veiligheidsbladen, productdocumentatie van leveranciers, standaard voorwaarden, contactgegevens van onderaannemers. Iedereen met een account.
- Financieel: inkoopprijzen, marges per project, tarieven van onderaannemers, openstaande posten, offertecalculaties. Directie, calculatie en administratie.
- Personeel: contracten, loonstroken, ziekmeldingen, verslagen van functioneringsgesprekken. Directie en personeelszaken.
- Projectvertrouwelijk: dossiers rond geschillen, aansprakelijkstellingen, correspondentie met de verzekeraar. Per dossier toegewezen.
De fout die het meest voorkomt, is dat tarieven van onderaannemers in de algemene laag belanden omdat ze in dezelfde projectmap staan als de werkinstructies. Een uitvoerder vraagt dan wat een project heeft gekost en krijgt netjes het inkooptarief van de installateur terug. Technisch werkt alles zoals bedoeld. Bedrijfsmatig is het een probleem, en richting de onderaannemer mogelijk een contractbreuk.
Loonstroken en ziekmeldingen vragen extra aandacht, omdat daar gegevens over gezondheid tussen kunnen zitten. Die vallen onder de bijzondere categorieën van de AVG en horen in de regel niet in een AI-kennisbank thuis. In onze verwerkersovereenkomst staat in Aanhangsel A dat er geen bijzondere persoonsgegevens worden verwerkt, tenzij dat schriftelijk anders is afgesproken. Dat is geen formaliteit, het is een keuze die je bij de inrichting maakt. Op welke plekken een AI-systeem gegevens vasthoudt en hoe lang je die bewaart, staat in logging bij AI: wat je vastlegt en hoe lang je het bewaart.
Waar lekt het in de praktijk?
In de randen om het model heen. Vijf plekken die bij een inrichting standaard langskomen:
- De bronvermelding. Een antwoord dat netjes zijn bron toont, toont soms een bestandsnaam die op zichzelf al iets verraadt, bijvoorbeeld “vaststellingsovereenkomst J. de Vries definitief.docx”. Filter de verwijzing mee met het document.
- Het aantal treffers. Een melding dat er vier documenten zijn gevonden maar niet getoond mogen worden, vertelt dat ze bestaan. Laat het systeem in dat geval gewoon zeggen dat er niets is gevonden binnen de eigen toegang.
- Opgeslagen gesprekken. Een antwoord dat een financieel medewerker heeft opgehaald, blijft in de gespreksgeschiedenis staan. Is die geschiedenis gedeeld of doorzoekbaar, dan lekt het daar alsnog. Zet gespreksgeschiedenis per gebruiker en bepaal wie erbij kan.
- De kennisbank die meegroeit. In een klantenserviceopzet verrijken goedgekeurde antwoorden de kennisbank. Dat is precies de bedoeling, maar een goedgekeurd antwoord over één klant hoort niet als algemeen antwoord terug te komen bij een andere klant. Spreek af wat er wel en niet terugvloeit. Hoe die opzet werkt, staat in klantenservice-mails beantwoorden met AI.
- De koppeling met de bron. Een koppeling met Microsoft 365 haalt op wat is afgesproken. Bij ons is die koppeling standaard strikt alleen-lezen, met de machtigingen Mail.Read en Files.Read, via een app-registratie die de klant in zijn eigen Entra-beheer ziet en zelf kan intrekken; intrekken stopt de aanvoer direct. Is er een reden om het anders in te richten, dan spreken we dat af. Welke postbussen en mappen worden aangeleverd, is daarmee een bewuste keuze bij de inrichting en niet iets wat je later even bijstelt.
Hoe test je of het klopt?
Door vragen te stellen waarvan je het antwoord al kent, met een account dat het niet zou mogen weten. Dat is de enige test die iets bewijst.
Maak een lijst van tien vragen voordat de omgeving in gebruik gaat, en laat ze door iemand van buiten het project stellen. Bijvoorbeeld: wat verdient de bedrijfsleider, welk tarief rekent onderaannemer X, wat staat er in het dossier over het geschil op project Y, wie heeft zich deze maand ziek gemeld, en wat was onze marge op de laatste drie opdrachten. Noteer per vraag wie hem stelde, met welk account, en wat er terugkwam. Herhaal die test na elke wijziging in de bronnen of de rollen, en leg de uitkomst vast. Dat vastleggen is meteen je bewijs richting een klant, een accountant of een toezichthouder; hoe je dat spoor verder inricht, staat in logging en aantoonbaarheid.
Loop daarnaast een keer per halfjaar de accounts na. Wie is er weg, wie is van functie veranderd, welke map is erbij gekomen. Bij een omgeving die wij beheren loopt het accountbeheer op het apparaat via ons en wordt een account gedeactiveerd als iemand vertrekt, maar de vraag of de juiste mensen het juiste niveau hebben, blijft een beslissing van de klant. Dat is dezelfde rolverdeling als in de verwerkersovereenkomst: de klant is verwerkingsverantwoordelijke en bepaalt wat er met de gegevens gebeurt, wij voeren uit op zijn instructie.
Pak deze week drie vragen uit dat rijtje en stel ze zelf, met een gewoon medewerkersaccount, in de AI-tool die nu in je bedrijf wordt gebruikt. Wat eruit komt, vertelt je meer dan een beleidsstuk. Hoe een afgeschermde omgeving eruitziet met rollen, bronvermelding en goedkeuring door een mens, zie je in de demo en op dataveiligheid.
Stuur ons een bericht
Vragen over AI en je gegevens?
Vertel hoe jullie AI nu gebruiken en waar je over twijfelt. Je hoort eerlijk wat er nodig is. Je hoort binnen één werkdag van ons.
Verstuurd
Je bericht is binnen
Je hoort binnen één werkdag van ons, op de manier die je hebt aangegeven. Wil je ondertussen al iets zien, dan staat de demo voor je open.
Veelgestelde vragen




