Beveiligingsbedrijf RedAccess zocht naar apps die met AI-programmeertools waren gebouwd en op de hosting van die tools zelf waren gepubliceerd. Het vond er meer dan 5.000 met vrijwel geen enkele beveiliging of authenticatie. Onder de screenshots die het met Wired deelde, stond wat leek op de taakverdeling van een ziekenhuis, inclusief persoonlijke informatie van artsen.
Het bouwen is het deel dat AI-programmeertools eenvoudig hebben gemaakt. De blootstelling bij met AI gebouwde apps voor HR-teams ontstaat later, wanneer een verloftracker of beoordelingsformulier voor sollicitatiegesprekken live gaat zoals tijdens de demo: een openbare link, één beheerdersaccount en daarachter de volledige werknemerstabel.
TL;DR
- Een tool die helpt bepalen wie wordt aangenomen of bevorderd, of hoe mensen worden beoordeeld, kan volgens de EU-AI-verordening als hoog risico gelden. Hij gaat naar IT en de juridische afdeling of DPO voordat hij iemand een score geeft.
- Werknemersdossiers staan nooit op de eigen hosting van de AI-programmeertool. De standaard is een server die het team beheert, alleen bereikbaar via een privénetwerk, met de bedrijfslogin ervoor zodra leidinggevenden of alle werknemers toegang nodig hebben.
- De oplossingen lopen via dezelfde AI-tool die de app heeft gebouwd: minder velden lezen, HR-beheerders, leidinggevenden en werknemers verschillende weergaven geven, inloggegevens uit de code halen, minder gegevens extern versturen, vastleggen wie welk dossier opent en verwijderverzoeken afhandelen met inachtneming van bewaarplichten. Een controle die je zelf uitvoert bevestigt elke wijziging; het eigen verslag van de AI doet dat niet.
- Toegang tot de tool moet eindigen op de dag dat het dienstverband eindigt, één benoemde persoon moet verantwoordelijk zijn en een serverlocatie kiezen maakt op zichzelf niets conform de regels.
Uitrolfouten die werknemersgegevens blootstellen
Een met AI gebouwde HR-tool stelt werknemersgegevens bloot aan iedereen die de link vindt, iedereen met inloggegevens die in een chat of de code zijn geplakt, collega's die dossiers van anderen openen, externe diensten waarnaar hij gegevens stuurt en mensen die uit dienst zijn, zonder vast te leggen wie heeft gekeken. De hele werknemerstabel lezen vergroot elke blootstellingsroute.
| Fout | Wat wordt blootgesteld | Oplossing | Waar het wordt verholpen |
|---|---|---|---|
| Publiceren op de eigen hosting van de AI-tool met een openbare link | Notities over werkplekaanpassingen en ziekteverlof in een verloftracker, leesbaar voor iedereen met de URL | Verplaatsen naar een server die het team beheert, op een privénetwerk | Waar de tool draait |
| Een databasewachtwoord of API-token voor HRIS of salarisadministratie in de chat of code plakken | Iedereen met de chatgeschiedenis of repository kan het HR-systeem bereiken, inclusief SSN's en nationale identificatienummers | De inloggegevens vervangen en buiten de code houden | Inloggegevens |
| De hele werknemerstabel lezen terwijl de tool drie kolommen nodig had | SSN's, salaris en immigratie- en werkvergunningsstatus in een tool die verlofsaldi moest tonen | Een databaseaccount dat alleen toegang heeft tot de velden die de tool nodig heeft | Velden |
| Iedereen die inlogt ziet elk dossier | Leidinggevenden zien de salarissen van andere leidinggevenden; scores uit prestatiebeoordelingen zijn bedrijfsbreed zichtbaar | Drie rollen, gecontroleerd op de server | Rollen |
| Kandidaatgegevens worden naar externe diensten gestuurd | Persoonlijk identificeerbare informatie uit de wervingsprocedure (cv's, gespreksnotities) wordt gekopieerd naar een AI-API of analysescript | Controleren wat de tool verlaat en dat beperken | Uitgaande gegevens |
| Toegang die na het dienstverband blijft bestaan | Het account van een vertrokken werknemer of het eigen beheerdersaccount van de bouwer opent nog steeds ieders dossier | Bedrijfslogin plus intrekking van sessies, zodat uitdiensttreding de toegang beëindigt | Uitdiensttreding |
| Geen registratie van wie wat heeft geopend of verwijderd | Niemand kan vaststellen wie een dossier over werkplekaanpassingen heeft bekeken en een verwijderverzoek kan niet veilig worden afgehandeld | Een auditlog waaraan alleen entries mogen worden toegevoegd en een verwijdertool die bewaarplichten respecteert | Auditlog en verwijdering |
De eerste rij is het probleem dat RedAccess op grote schaal aantrof. In het verslag van Wired over de bevindingen van RedAccess spraken drie van de vier AI-programmeerbedrijven de claims van de onderzoekers tegen (het vierde reageerde niet), maar ze ontkenden niet dat de door RedAccess gevonden, met vibe coding gebouwde apps onbeschermd waren achtergelaten. Ik zie dat als een configuratieprobleem en een overgeslagen controle.
Controleer of de tool helpt bepalen wie wordt aangenomen, bevorderd of beoordeeld

Dat een HR-tool met een AI-programmeertool is gebouwd, maakt hem op zichzelf niet tot een hoogrisicosysteem volgens de EU-AI-verordening. Wat de tool doet bepaalt dat. Bijlage III van de EU-AI-verordening noemt AI-systemen voor het werven of selecteren van mensen en voor beslissingen over promotie, ontslag, taaktoewijzing of het monitoren en beoordelen van prestaties.
Stel dus voordat je beslist waar de tool draait één vraag: neemt of beïnvloedt hij een beslissing over wie wordt aangenomen, bevorderd, ontslagen, werk toegewezen krijgt of op prestaties wordt beoordeeld?
Een verloftracker, onboardingchecklist of organisatiedirectory slaat gegevens op en toont ze weer, en valt dus aan de kant van ‘nee’. Een beoordelingsformulier dat sollicitanten rangschikt, of een prestatietool die mensen scores geeft (zeker met een AI-model dat de scores bepaalt), kan aan de kant van ‘ja’ vallen. Als ik niet kan vaststellen aan welke kant een tool valt, behandel ik hem als een ja en laat ik IT en de juridische afdeling anders beslissen.
De verordening is niet beperkt tot EU-bedrijven: artikel 2 omvat aanbieders en gebruiksverantwoordelijken buiten de EU wanneer de output van hun AI-systeem in de EU wordt gebruikt. Volgens artikel 113 zoals gewijzigd gelden de verplichtingen voor hoogrisicosystemen uit bijlage III vanaf 2 december 2027. Ze omvatten een risicobeheersysteem, gegevensgovernance, technische documentatie, registratie, transparantie voor gebruiksverantwoordelijken en menselijk toezicht (artikelen 9 tot en met 14). De beoordeling ervan hoort bij IT en de juridische afdeling.
Is het antwoord ja, stop dan voordat de tool ook maar één echte kandidaat of werknemer een score geeft. Breng hem naar IT en je verantwoordelijke voor juridische zaken of gegevensbescherming (de DPO, indien aanwezig). Deze controle bepaalt niet of een specifieke tool binnen de reikwijdte valt; ze geeft aan wie dat moet beslissen. Sommige Amerikaanse staten reguleren ook geautomatiseerde aannamebeslissingen. Die regels staan in de tabel verderop.
Je kunt die beoordeling alvast op weg helpen. Ik zou de AI-tool vragen tegen zijn eigen scoresysteem te pleiten in plaats van het te verdedigen:
Deze app geeft sollicitanten of werknemers scores of rangschikt hen. Noem elk gegevensveld en elke berekeningsstap die aan de score of rangschikking bijdraagt. Vertel voor elk of het direct of indirect een beschermd kenmerk kan weerspiegelen: leeftijd, ras, geslacht, nationaliteit, etnische afkomst, handicap, zwangerschap, religie of seksuele gerichtheid. Geef aan wanneer je onzeker bent, in plaats van te gokken. Wijs vervolgens op alles rond de eerlijkheid van deze beoordeling waarnaar ik niet heb gevraagd, maar wel had moeten vragen.
Controle: behandel het antwoord als een eerste lijst voor de mensen die de tool beoordelen, niet als een oordeel, en lever die samen met de tool aan. Deze prompt uitvoeren is geen bias-audit en voldoet aan geen enkele wettelijke eis.
Waar een HR-tool moet draaien

Houd werknemersdossiers buiten de eigen hosting van de AI-tool. Voor een tool die alleen het HR-team gebruikt is de standaard een server die het team beheert, alleen bereikbaar via een privénetwerk, met een bedrijfslogin ervoor zodra leidinggevenden of werknemers die nodig hebben. Een tool die niet door de controle op aannamebeslissingen komt, of zonder iemand die de server kan beheren, gaat naar IT.
Publiceren op de eigen hosting van een AI-programmeertool zet de app op een adres binnen het domein van de leverancier. Tenzij de zichtbaarheid op privé is ingesteld, kan iedereen die dat adres vindt hem bereiken. RedAccess vond duizenden zulke apps met gewone Google- en Bing-zoekopdrachten naar die domeinen. Een privénetwerk werkt andersom: de tool antwoordt alleen op apparaten die eraan zijn toegevoegd. Bedrijfslogin (single sign-on) betekent dat collega's de tool openen met hun bestaande bedrijfsaccount, gecontroleerd door een identiteitsprovider, de dienst die die accounts beheert.
| Waar de tool draait | Geschikt wanneer | Ongeschikt wanneer |
|---|---|---|
| De eigen hosting van de AI-tool | Bouwen en testen met fictieve werknemersdossiers | Er een echt dossier wordt ingevoerd |
| Een server die het team beheert, alleen bereikbaar via een privénetwerk | Tools alleen voor HR: verlofbeheer, onboarding bijhouden, personeelsplanning | Niemand verantwoordelijkheid kan nemen voor de server |
| Dezelfde server met bedrijfslogin ervoor | Leidinggevenden of alle werknemers toegang nodig hebben | Niemand verantwoordelijkheid kan nemen voor de server of er geen bedrijfsidentiteitssysteem is om aan te koppelen |
| Een beheerd uitrolplatform | Grotere organisaties al budget hebben voor platformleveranciers en leveranciersbeoordelingen | Een klein HR-team er geen budgetpost voor heeft |
| IT of interne ontwikkeling | De tool niet door de controle op aannamebeslissingen komt, IT capaciteit heeft of niemand een server kan beheren | Nooit de verkeerde keuze, alleen soms niet beschikbaar |
Bouw en test de tool met synthetische gegevens totdat hij op de eigen server van het team draait: verzonnen namen, salarissen en verlofdatums in de vorm van echte gegevens. Een gratis tunnel van een laptop naar een openbaar adres is net zo openbaar als de hosting van de leverancier en hoort dus ook in de demofase.
Waarom een privénetwerk en niet de inlogpagina die de app al heeft? Een privénetwerk betekent dat de tool van buitenaf helemaal niet antwoordt. Niemand buiten het netwerk kan hem laden, onderzoeken of wachtwoorden raden. Een door de AI-tool geschreven inlogpagina is op zichzelf niet genoeg. Iedereen kan die bereiken en de beveiliging is slechts zo sterk als de gegenereerde code erachter. Het GenAI-codebeveiligingsrapport van Veracode uit 2025 liet zien dat 45% van de geteste codevoorbeelden, afkomstig van meer dan 100 modellen, niet door de beveiligingstests kwam vanwege een OWASP Top 10-kwetsbaarheid (een risico uit een veelgebruikte lijst met de belangrijkste beveiligingsrisico's voor webapps). Daarom zet ik liever een slot vóór de app dan te vertrouwen op het slot dat de AI heeft geschreven.
Bij de overdracht draait de tool op een VPS (een gehuurde server die het team volledig beheert) onder een uitroltool zoals Coolify of Dokku, die de app vanuit de code uitvoert; Coolify kan via zijn dashboard ook een slechte update terugzetten naar een eerdere versie. De keuze tussen Coolify en Dokku hangt vooral af van hoeveel apps de server zal draaien en of de IT-ondersteuning een dashboard prefereert. Het privénetwerk komt van Tailscale of WireGuard. Tailscale is sneller in te stellen, maar zijn coördinatiedienst wordt door Tailscale beheerd, terwijl WireGuard volledig zelf wordt gehost. Bedrijfslogin komt van een identiteitsprovider zoals Authentik of Keycloak. Een reverse proxy zoals Caddy of Nginx Proxy Manager voegt HTTPS toe waar de login vanaf het web bereikbaar is. Dit deel geef je aan de IT-ondersteuning, samen met de checklist aan het einde.
De oplossingen als prompts voor je eigen AI-tool
Het meeste werk om een met AI gebouwde HR-app veilig uit te rollen loopt via de tool die hem bouwde, maar alleen als je erom vraagt. Zoals beveiligingsonderzoeker Joel Margolis tegen Wired zei, doen AI-programmeertools ‘wat je hun vraagt. En tenzij je vraagt het veilig te doen, zullen ze daar niet speciaal moeite voor doen.’
Behandel elke onderstaande prompt als uitgangspunt en pas veldnamen en rollen aan je tool aan. Ik zie de AI-tool als de ontwikkelaar en mezelf als de beoordelaar, dus zijn verslag dat een wijziging klaar is, is een concept. De controle onder elke prompt levert het bewijs, en voor geen ervan hoef je code te lezen. Als een controle mislukt, gaat de oplossing terug naar de AI-tool en de les in een regelbestand voor je AI-tool, zodat de volgende sessie daarop voortbouwt. Elke prompt vraagt de tool ook zijn onzekerheden aan te geven; een assistent die een tekort erkent is nuttiger dan één die zeker klinkt. Voer de prompts uit op code en fictieve dossiers, nooit met echte dossiers of wachtwoorden in de chat.
Vind de werknemersvelden die de tool gebruikt en blokkeer de rest
Je kunt geen veld blokkeren waarvan je niet weet dat de tool het bevat, dus de eerste prompt is een audit:
Bekijk de database, code, schermen en exports van deze app. Noem elk veld dat persoonsgegevens over een werknemer of sollicitant kan bevatten: namen, werknemers-ID's, SSN's of nationale identificatienummers, fiscale identificatienummers, geboortedatums, woonadressen, gezondheidsinformatie, handicapstatus, dossiers over werkplekaanpassingen, immigratie- of werkvergunningsdocumenten, salaris, bonus, aandelenbelangen, prestatiebeoordelingen en disciplinaire notities. Vertel voor elk veld welk scherm of welke functie het gebruikt en of de hoofdtaak van de app het nodig heeft. Markeer het als onzeker als je dat niet kunt vaststellen, in plaats van te gokken.
Controle: open de belangrijkste schermen en exports van de tool en controleer of elk zichtbaar veld met persoonsgegevens op de lijst staat. Als je een veld ziet dat de lijst niet noemt, heeft de audit iets gemist. Vraag dan opnieuw.
De tweede prompt verwijdert wat de tool niet nodig heeft. Hij steunt op een databaseaccount (het account waarmee de app met zijn database communiceert), dat tot specifieke velden kan worden beperkt.
Wijzig deze app zodat hij alleen deze velden leest: [noem de benodigde velden]. Verwijder elk ander veld met persoonsgegevens uit de gegevenskopie van de app, de code, elk scherm en elke export. Maak vervolgens een apart databaseaccount voor de app dat alleen die velden kan lezen en alleen de gegevens kan wijzigen die de tool zelf schrijft, zoals verlofaanvragen. Laat de app dat account gebruiken. Meld precies wat je hebt gewijzigd, bestand voor bestand, en alles wat je niet kon doen.
Alleen de schermen aanpassen is niet genoeg. Als het databaseaccount van de app de salariskolom niet kan lezen, kan een fout elders in de door AI geschreven code die ook niet tonen. Of gegevens in rust versleuteld zijn is een vraag voor IT, omdat dit in de server- en schijfconfiguratie zit, die een assistent die de code leest niet betrouwbaar kan zien.
Controle: log in als gewone gebruiker en open elk scherm en elke export; geen verwijderd veld mag verschijnen. Vraag daarna de IT-ondersteuning die de server beheert (of de AI-tool, met de uitvoer zichtbaar voor jou) een verwijderd veld op te vragen via het databaseaccount van de app. Een fout wegens geweigerde toestemming of een niet-bestaand veld betekent dat de test slaagt. Een verbindings-, syntaxis- of andere ongerelateerde fout niet. Een lege kolom of een echte waarde betekent dat de test faalt. Bewaar de auditlijst, want de verwijdertool gebruikt die.
Geef HR-beheerders, leidinggevenden en werknemers verschillende weergaven
Hier lekken werknemersgegevens naar binnen: naar de collega die het salaris van een ander of een notitie over werkplekaanpassingen van een teamgenoot opent. Rolgebaseerde toegangscontrole verhelpt dat en de volgende prompt beschrijft waar de controle moet plaatsvinden:
Voeg rolgebaseerde toegangscontrole toe met drie rollen, bij elk verzoek gecontroleerd op de server, niet alleen door knoppen of links op de pagina te verbergen.
- HR-beheerder: kan alle werknemersdossiers lezen en wijzigen.
- Leidinggevende: kan alleen dossiers van rechtstreeks ondergeschikten lezen en ziet nooit velden over salaris, medische informatie, werkplekaanpassingen, disciplinaire zaken of immigratie.
- Werknemer: kan alleen het eigen dossier lezen.
Weiger al het overige met een antwoord ‘toegang geweigerd’ (403). Haal de rol van elke gebruiker uit het ingelogde account, nooit uit iets wat de gebruiker op de pagina of in de adresbalk kan typen of wijzigen. Noem elke plek waar je een controle toevoegde en markeer elke pagina of export waarvan je niet zeker weet of die wordt gecontroleerd.
Sommige bedrijven laten leidinggevenden salarissen zien tijdens beloningsbeoordelingen. Als jouw bedrijf dat doet, pas dan die regel voor de leidinggevende aan.
Controle: maak een testleidinggevende en testwerknemer. Open als leidinggevende het dossier van een rechtstreeks ondergeschikte, kopieer het adres, verander het dossiernummer in dat van iemand buiten het team en laad het: je moet ‘toegang geweigerd’ krijgen. Herhaal dit als werknemer met het dossiernummer van een collega. Bevestig daarna dat de leidinggevende nooit velden over salaris, werkplekaanpassingen of immigratie ziet.
Haal inloggegevens uit de code en chat
Een databasewachtwoord of API-token voor HRIS of salarisadministratie (de lange sleutel waarmee het ene systeem op het andere inlogt) kan uit de huidige code zijn verwijderd en toch in eerder opgeslagen projectversies staan. Daarom vraagt de prompt ook naar de geschiedenis. Een omgevingsvariabele lost het codegedeelte op. Het is een waarde die de server bij het opstarten aan de app geeft, zodat de code er op naam naar verwijst zonder de waarde te bevatten.
Vind elk wachtwoord, elke API-sleutel, elk toegangstoken en elke databaseverbindingsreeks in dit project, ook voor ons HRIS, onze salarisadministratie en e-mailsystemen. Vervang elke waarde in de code door een omgevingsvariabele en geef me de lijst met variabelenamen. Zorg dat bestanden met de echte waarden, zoals .env, zijn uitgesloten van de coderepository. Noem daarna elke plek waar een oude waarde nog in de projectgeschiedenis staat, zodat ik weet welke inloggegevens ik moet vervangen.
De prompt kan de belangrijkste stap niet uitvoeren. Geef in de beheerconsole van het HRIS of de database nieuwe inloggegevens uit voor alle die ooit in een chat of repository stonden, en schakel de oude uit.
De eigen kopieën van die wachtwoorden van het team horen in een wachtwoordmanager, zoals een zelfgehoste Vaultwarden-server (welke optie bij een team past is een aparte beslissing). Die bewaart inloggegevens voor mensen en levert geen waarden aan een draaiende app; die krijgt ze van de uitroltool. Voor geheimen die de draaiende app zelf leest is HashiCorp Vault de zwaardere optie, met centraal beleid en rotatie voor teams die dat nodig hebben.
Controle: vraag de AI-tool de huidige bestanden te doorzoeken op oude waarden en lees de getoonde zoekresultaten, niet zijn samenvatting. De huidige bestanden mogen geen treffers hebben. Treffers in de geschiedenis zijn te verwachten en hoeven niet te worden gewist; dat is de lijst met te vervangen inloggegevens. Het bewijs dat elke oude toegang niet meer werkt staat in de beheerconsole van het HRIS of de database: elk oud gegeven staat als ingetrokken vermeld, of IT bevestigt dat het systeem het weigert.
Bekijk welke werknemersgegevens de tool verlaten
Zodra een aanroep de gespreksnotities van een kandidaat naar een externe dienst heeft gestuurd, bereikt verwijderen in je eigen tool niet de kopie die die dienst mogelijk bewaart. De oplossing is dus om vanaf het begin minder te versturen.
Controleer elke externe aanroep van deze app: naar OpenAI, Anthropic of een andere AI-API, naar HR-systemen zoals HRIS of ATS, naar analyse- of foutregistratietools en naar elke webhook. Noem voor elke aanroep precies welke werknemers- of kandidaatvelden in de verzonden gegevens zitten. Markeer diensten die ontvangen gegevens mogelijk opslaan of loggen en vertel welke aanroepen met minder gegevens kunnen werken. Geef aan waar je onzeker over bent.
Controle: maak een fictieve werknemer of kandidaat met een opvallende verzonnen naam en gebruik elke functie die een externe aanroep doet (genereer de gesprekssamenvatting, activeer de webhook, open de pagina die het analysescript laadt). Open het eigen dashboard van elke externe dienst, zoals de analysetool, foutregistratie, het ATS-log met ontvangen webhooks of het gebruikslog van de AI-aanbieder waar verzoeken worden getoond, en zoek die naam. Hij mag alleen verschijnen waar de aanroep hem nodig heeft. Verschijnt hij ergens anders, stuur die aanroep dan met minder gegevens terug naar de AI-tool en herhaal de controle. Sommige dashboards tonen niet wat ze hebben ontvangen. Geef voor die diensten en elke dienst die werknemersgegevens moet blijven ontvangen de voorwaarden voor gegevensbewaring aan degene die leverancierscontracten in je bedrijf ondertekent.
Leg vast wie welk werknemersdossier heeft geopend
Een werknemer vraagt wie vorig kwartaal het salarisoverzicht heeft geëxporteerd. Zonder auditlog (een doorlopende registratie van wie wat met welk dossier heeft gedaan) kan niemand antwoorden.
Voeg een auditlog toe. Telkens wanneer een gebruiker een werknemersdossier bekijkt, wijzigt, exporteert of verwijdert, voeg je een rij toe met gebruikers-ID, dossier-ID, actie, gewijzigde velden en tijdstip. Configureer de database zodat het databaseaccount van de app rijen aan dit log kan toevoegen, maar niet wijzigen of verwijderen. Alleen HR-beheerders kunnen het log in de app lezen. Vertel hoe en waar het wijzigings- en verwijderverbod wordt afgedwongen.
‘Alleen toevoegen’ moet voortkomen uit de rechten van het databaseaccount, niet uit de belofte van de app zich te gedragen. Het log bevat ook zelf persoonsgegevens, omdat het laat zien wie wiens dossier bekeek. Daarom lezen alleen HR-beheerders het.
Controle: open als HR-beheerder een dossier, bekijk daarna het log en bevestig dat de entry aanwezig is. Laat IT of de AI-tool (met de uitvoer zichtbaar voor jou) proberen een logrij te verwijderen via het databaseaccount van de app; je moet de toestemmingsfout zelf zien.
Handel verwijderverzoeken af zonder bewaarplichten te schenden
Wat gebeurt er als een werknemer om verwijdering vraagt en sommige dossiers salarisbestanden zijn die het bedrijf moet bewaren? De voor de hand liggende prompt (‘verwijder alle persoonsgegevens van deze werknemer uit elke tabel’) verwijdert ze toch en veroorzaakt twee problemen. Werkgevers moeten vaak bepaalde gegevens bewaren, bijvoorbeeld salaris-, belasting- en werkvergunningsbestanden. Het recht op gegevenswissing onder de AVG geldt niet voor zover verwerking nodig is voor een wettelijke verplichting of rechtsvorderingen (artikel 17(3)(b) en (e)). Een knop om alles te verwijderen is bovendien gevaarlijk om zomaar beschikbaar te laten. De veiligere versie scheidt ‘verwijderen op verzoek’ van gegevens met een bewaarplicht, die het bedrijf ongeacht het verzoek moet bewaren, en toont het plan voordat er iets wordt verwijderd:
Bouw een tool voor verwijderverzoeken die alleen HR-beheerders kunnen openen. Bij een werknemers-ID toont hij eerst elke tabel en elk veld met gegevens van die persoon, gegroepeerd volgens de categorieën uit de veldenaudit. Elke categorie heeft een bewaarinstelling die een HR-beheerder bepaalt: ‘verwijderen op verzoek’ of ‘bewaren: verplichte bewaartermijn’. Na bevestiging door een HR-beheerder verwijdert de tool alleen categorieën op ‘verwijderen op verzoek’. Hij logt alleen werknemers-ID, tijdstip, wie bevestigde en welke categorieën zijn verwijderd of bewaard, en niets anders over de persoon. Wie geen HR-beheerder is krijgt ‘toegang geweigerd’.
De bewaarinstellingen komen van je verantwoordelijke voor naleving of DPO, niet van de AI-tool of de beste gok van de bouwer. Vermeld dat de auditlog na verwijdering het werknemers-ID bewaart, zodat zij kunnen bepalen hoelang die identificatie moet blijven staan. Back-ups en kopieën bij externe diensten hebben eigen bewaar- of verwijderprocessen nodig.
Controle: maak een testwerknemer met dossiers in twee categorieën, één op ‘verwijderen op verzoek’ en één met een bewaarplicht. Voer de tool uit als HR-beheerder en bevestig dat alleen de eerste categorie weg is. Open de tool vervolgens met een leidinggevendenaccount en verwacht ‘toegang geweigerd’.
Arbeidsregels om met je DPO of verantwoordelijke voor naleving te bespreken
De arbeidsregels die een HR-tool moet volgen hangen af van wat hij doet en van wie de gegevens zijn, niet van hoe hij is gebouwd. Dit is een lijst om te bespreken met je DPO of verantwoordelijke voor naleving, geen juridisch advies. Ze bepaalt niet of een van de regels op jou van toepassing is.
Een verloftracker met notities over werkplekaanpassingen voor personeel in Duitsland en Californië valt onder andere regels dan een personeelsplanner met alleen functietitels. De vraag over de EU-AI-verordening hoort bij de controle op aannamebeslissingen.
| Als de tool… | Te bespreken regel | Officiële bron |
|---|---|---|
| Geautomatiseerde scores of rangschikking gebruikt bij aanname- of promotiebeslissingen over mensen in Colorado | Colorado SB 26-189 omvat geautomatiseerde besluitvormingstechnologie voor ingrijpende beslissingen, waaronder werk, met verplichtingen vanaf 1 januari 2027 | Colorado SB 26-189 |
| Geautomatiseerde scores of rangschikking gebruikt bij aanname- of promotiebeslissingen over mensen in Californië | Californiës regels voor geautomatiseerde besluitvormingstechnologie (ADMT) traden op 1 januari 2026 in werking, maar bedrijven die ADMT voor belangrijke beslissingen gebruiken moeten vanaf 1 januari 2027 voldoen aan de ADMT-specifieke eisen | ADMT-regels van de CPPA |
| AI gebruikt bij werving, aanname, promotie, disciplinaire maatregelen, ontslag of andere arbeidsbeslissingen in Illinois | Illinois HB 3773 wijzigde de Illinois Human Rights Act per 1 januari 2026: werkgevers mogen AI niet zo inzetten dat beschermde groepen worden gediscrimineerd, noch postcodes gebruiken als indirecte maatstaf daarvoor, en moeten werknemers informeren wanneer ze AI voor deze beslissingen inzetten | Illinois Public Act 103-0804 |
| Gezondheids-, handicap- of werkplekaanpassingsdossiers van mensen in de EU bewaart | AVG artikel 9: gezondheidsgegevens zijn een bijzondere categorie en verwerking is verboden tenzij een uitzondering geldt, waaronder verwerking die nodig is voor arbeidsrechtelijke verplichtingen (artikel 9(2)(b)) | AVG artikel 9 |
| Persoonsgegevens over werknemers of kandidaten in de EU bewaart | AVG artikel 6: elk gebruik heeft een rechtsgrond nodig, zoals een overeenkomst of wettelijke verplichting | AVG artikel 6 |
| Gegevens over personeel in het Verenigd Koninkrijk bewaart | UK GDPR, met de ICO-richtlijnen over werknemersinformatie | ICO-richtlijnen over werk |
| Gegevens over werknemers of sollicitanten in Californië bewaart | CCPA/CPRA: als de organisatie een bedrijf is dat onder de CCPA valt, is de uitzondering voor werknemers- en sollicitantgegevens op 1 januari 2023 verlopen. Werkgerelateerde persoonsgegevens vallen daardoor doorgaans binnen de reikwijdte | CCPA-pagina van het Californische ministerie van Justitie |
De serverlocatie bepaalt waar dossiers fysiek staan; ze voldoet op zichzelf niet aan bovenstaande regels. Begin voor personeel buiten die gebieden bij de relevante nationale, deelstatelijke of lokale privacy- of arbeidstoezichthouder, of je verantwoordelijke voor juridische zaken of naleving.
Toegang eindigt wanneer het dienstverband eindigt
Als het bedrijfsaccount van een vertrekkende werknemer op de laatste dag wordt uitgeschakeld, worden e-mail, agenda en bestanden in één stap afgesloten. De HR-tool moet in diezelfde stap sluiten. Achter de bedrijfslogin kan dat, zolang uitdiensttreding ook actieve sessies intrekt. Elke tool zonder die login krijgt een eigen regel op de uitdiensttredingschecklist, zodat iemand het account handmatig verwijdert.
Ook de bouwer vertrekt uiteindelijk. Als degene die de tool bouwde vertrekt of van rol verandert, gaat de verantwoordelijkheid naar een benoemde opvolger die als beheerder kan inloggen en weet waar de server is. Het eigen beheerdersaccount van de bouwer wordt afgesloten. Ik zou die opvolger vóór livegang benoemen, want een opzegtermijn is een slecht moment om er een te zoeken.
Controleer volgens een vaste planning wie elke rol heeft en of de tool nog wordt gebruikt. Breid toegang zo nodig één niveau tegelijk uit (eerst HR, dan leidinggevenden, dan elke werknemer) en herhaal op elk niveau de adresbalktest. Als de tool niet meer wordt gebruikt, neem je hem uit gebruik: schakel databaseaccount en inloggegevens uit, verwijder gegevens volgens de bewaarinstellingen van de verwijdertool, stop hem en verwijder hem uit het privénetwerk of inlogsysteem.
De benoemde opvolger erft een server die iemand heeft opgezet, met een uitroltool, een privénetwerk en voor bredere toegang bedrijfslogin. Onze Linux-VPS biedt roottoegang, en Coolify, Tailscale en Authentik worden elk als één-klik-app uitgerold, zodat IT zijn uren aan de controles kan besteden. Locaties zijn onder meer Frankfurt en Amsterdam in de EU, Londen in het Verenigd Koninkrijk en verschillende Amerikaanse steden. Daarmee staat vast in welk land de server is, een gegeven voor het gesprek met de DPO, geen vervanging ervan.
De checklist voor livegang
Elk punt hieronder is wel of niet afgerond voordat werknemersdossiers worden ingevoerd. Dit is de lijst die je aan degene geeft die de server opzet.
- De vraag over aannamebeslissingen is beantwoord en elk ‘ja’ is naar IT en de juridische afdeling gegaan.
- De tool draait op een server die het team beheert, niet op de hosting van de AI-tool.
- Hij is alleen bereikbaar via het privénetwerk of de bedrijfslogin.
- Het databaseaccount van de app leest alleen de genoemde velden.
- Een testleidinggevende en testwerknemer krijgen allebei ‘toegang geweigerd’ bij de adresbalktest.
- Alle inloggegevens die in een chat of code stonden zijn vervangen en de oude zijn ingetrokken.
- De audit van uitgaande gegevens is afgerond en onnodige velden zijn verwijderd.
- De auditlog registreert inzage en het account van de app kan het niet wijzigen of verwijderen.
- De bewaarinstellingen en arbeidsregels zijn beoordeeld door de DPO of verantwoordelijke voor naleving.
- Er is een benoemde verantwoordelijke en een benoemde vervanger.
Veelgestelde vragen
Wat is Shadow AI binnen HR?
Shadow AI binnen HR is het gebruik van AI-tools of daarmee gebouwde apps op HR-gegevens zonder medeweten of goedkeuring van IT. De Sapient Insights 2026 Annual HR Systems Survey liet volgens Cornerstone OnDemand zien dat meer dan 80% van de HR-professionals dagelijks persoonlijke AI-tools gebruikt, terwijl 3% de in hun HR-systemen ingebouwde AI gebruikt.
Kan ik echte werknemersdossiers gebruiken terwijl ik de tool bouw?
Nee. Houd echte dossiers buiten de chat wanneer je met vibe coding een HR-tool bouwt. Ze in een chatassistent plakken is een apart risico naast de uitrol van de app. Het ontstaat op het moment van plakken, of de tool nu ooit live gaat of niet. Bouw met fictieve dossiers totdat de tool draait op een server die het team beheert.
Moeten werknemers toestemming geven voor het gebruik van hun gegevens door een HR-tool?
Meestal is toestemming de verkeerde grondslag. De richtlijnen over toestemming van de EDPB stellen dat het ‘problematisch is als werkgevers persoonsgegevens van huidige of toekomstige werknemers op basis van toestemming verwerken, aangezien die waarschijnlijk niet vrij wordt gegeven’. Welke rechtsgrond onder AVG artikel 6 geldt, is een vraag voor je DPO.
Valt de medische informatie in een HR-tool onder HIPAA?
Meestal niet. HIPAA's definitie van beschermde gezondheidsinformatie sluit informatie in arbeidsdossiers die een onder HIPAA vallende entiteit bewaart in haar rol als werkgever uit (45 CFR 160.103). Dat maakt die notities niet ongereguleerd. Vraag je verantwoordelijke voor naleving welke regels er wel voor gelden.
Discussie
Reacties
Log in om mee te praten.