Ga naar hoofdinhoud

Pseudonimisering

Een objectnaam is ook data. Een tabel die Salarissen_Directie heet, of een kolom Ontslagdatum, vertelt een model al veel over een organisatie, nog voordat er één rij is gelezen. Daarom gaan namen bij Plainwater AI als pseudoniem naar het model.

Hoe het werkt​

Per opdracht houdt het platform een register bij van echte namen en hun pseudoniemen:

Echte naamPseudoniem
Salarissent_0056
Medewerker_IDc_0112
Afdelingc_0113

Het model krijgt alleen de pseudoniemen te zien. Het kan daar gewoon mee werken: een query schrijven, een join voorstellen, een index aanraden. De structuur blijft intact. Alleen de betekenis die in de naam zit, verlaat het platform niet.

Het pseudoniem is stabiel binnen de opdracht. t_0056 is in het hele gesprek dezelfde tabel, zodat het model kan redeneren zonder in de war te raken.

Terugvertaling voor de mens​

Wat het model antwoordt, vertaalt het platform terug voordat jij het ziet. Schrijft het model "Voeg een index toe op c_0112 in t_0056", dan lees je "Voeg een index toe op Medewerker_ID in Salarissen".

Dat werkt ook voor namen die het model zelf bedenkt. Stelt het model een view voor met de naam vw_t_0056_monitor, dan lees je vw_Salarissen_monitor.

En het werkt de andere kant op. Typ je zelf een echte naam in het gesprek, dan wordt die vervangen voordat het bericht naar het model gaat. Wat je op het scherm ziet, kun je dus gewoon terugtypen zonder dat het lekt.

Eén kopie, niet twee

Het platform bewaart de gesprekken met de pseudoniemen erin. Er is geen tweede kopie met de echte namen. De terugvertaling gebeurt pas op het moment dat iemand met de juiste rechten meeleest.

Wanneer is het verplicht?​

Een klant met een bron die echte klantdata bevat, draait alleen met actieve pseudonimisering. Dat is geen instelling die je vergeet: zonder pseudonimisering start een opdracht niet. En omdat een bron er ook tijdens een lopende opdracht bij kan komen, wordt het bij elke toolaanroep opnieuw gecontroleerd.

En de waarden?​

Namen zijn één ding, waarden een ander. Voor waarden zijn er de standen van datatoegang:

  • In alleen metrics komen er geen waarden bij het model. Alleen tellingen en statistieken.
  • In versleutelde waarden is elke cel een stabiel token. Dezelfde klantnaam geeft steeds hetzelfde token, zodat het model kan tellen, groeperen en koppelen zonder de naam te kennen.
  • In open gaan letterlijke waarden mee, alleen op bronnen die de klant daarvoor aanwijst.

Ook bij versleutelde waarden vertaalt het platform terug voor de mens die het resultaat bekijkt.

Vrije tekst​

Sommige tekst uit een database is lastiger: de broncode van een procedure, een querytekst, een omschrijving. Daarin kunnen waarden staan. Voor een bron met echte klantdata gaat zulke vrije tekst niet in leesbare vorm naar het model, maar alleen in vervangen vorm.

Wat het niet is​

Pseudonimisering is geen anonimisering in juridische zin. Het register maakt de terugvertaling mogelijk, en wie het register heeft, kan dat ook. Het verschil is waar het register staat: op het platform, in jouw omgeving, en niet bij de modelleverancier. Het model ziet de structuur en nooit de sleutel.

En wat het register niet kent, kan het niet vervangen. Een naam die alleen in vrije tekst voorkomt en nergens als object bestaat, herkent het register niet. Daarom combineert het platform pseudonimisering met de standen van datatoegang en met uitzonderingen per kolom: je hoeft niet op één mechanisme te vertrouwen.

Voorbeeld​

Een analist vraagt: "Hoeveel medewerkers per afdeling hebben dit jaar een salarisverhoging gehad?"

  1. Het model krijgt de structuur: t_0056 met kolommen c_0112, c_0113, c_0118.
  2. Het schrijft een query met die pseudoniemen.
  3. Het resultaat komt terug met tellingen per afdeling. Afdelingen met minder dan tien medewerkers worden "<10", zodat geen individu herkenbaar is.
  4. De analist ziet de tabel met de echte afdelingsnamen.

Zie ook​