Je AI-stack draait op een handvol API-sleutels. De sleutel van OpenAI of Anthropic, het token van je vectordatabase, de key van je betaalprovider, het toegangstoken van je CRM. Eén regel tekst per stuk, maar samen geven ze toegang tot je modellen, je klantdata en je maandbudget. En ze zitten overal: in een .env-bestand op je laptop, in een editor-plugin, in een CI-pipeline, in een npm-pakket dat drie niveaus diep meelaadt. Eén kwaadaardige plugin of één vergiftigd pakket leest ze in één keer uit.
Dat is geen theoretisch risico. Recent zag de ontwikkelaarswereld hoe 15 valse JetBrains-plugins AI-API-sleutels stalen van bijna 70.000 ontwikkelaars, en hoe ruim 140 npm-pakketten rond het Mastra-framework werden besmet met een credential-steler. De rode draad: je sleutels zijn het echte doelwit, en je AI-toolchain is je nieuwe aanvalsoppervlak geworden. Deze gids is voor de ondernemer of het team dat AI serieus inzet, van MKB tot een afdeling van een groter bedrijf, en die credentials nu wil afschermen voordat er iets misgaat. Geen abstracte beveiligingstheorie, maar een concrete workflow die je in een ochtend opzet en daarna grotendeels vanzelf draait.
Wat je nodig hebt
Voordat je begint, leg je dit klaar:
- Een overzicht van je diensten. Elke betaalde of gratis dienst met een API-sleutel: AI-modellen, databases, betaalproviders, e-mail, je CRM.
- Toegang tot de instellingen van elke dienst. Je hebt het beheerdersrecht nodig om sleutels in te trekken en nieuwe, beperkte sleutels aan te maken.
- Een secrets manager. Een centrale, versleutelde kluis voor je sleutels, in de cloud of self-hosted (de keuze maak je in stap 2).
- Een Git-repository met pre-commit hooks. Voor het automatisch scannen van code voordat een sleutel per ongeluk wordt gecommit.
- Ongeveer een tot twee uur voor de eerste opzet. Daarna is het onderhoud minimaal.
De aanpak in het kort
Het beschermen van je AI-API-sleutels komt neer op zeven stappen: breng je sleutels in kaart, centraliseer ze in een secrets manager, geef elke sleutel zo min mogelijk rechten, roteer automatisch, knijp de rechten van plugins en pakketten dicht, scan elke commit, en bewaak het gebruik.
Werk de stappen in deze volgorde af:
1. Inventariseer al je sleutels
Maak eerst een lijst. Je kunt niets beschermen wat je niet kent. Loop elke dienst langs die je gebruikt en noteer per sleutel: van welke dienst hij is, waar hij staat (laptop, server, CI, een plugin), wat hij mag, en wie er toegang toe heeft. De meeste lekken beginnen bij een vergeten sleutel in een oud bestand of een testproject. Een sleutel die je niet op je lijst hebt, kun je ook niet roteren of intrekken.
2. Centraliseer in een secrets manager
Haal sleutels uit losse bestanden en zet ze in één kluis. Een secrets manager bewaart je credentials versleuteld en levert ze pas bij het draaien van je applicatie aan, in plaats van ze hardcoded in code of in een .env op tien plekken te laten staan. Je injecteert ze bij runtime; ze raken nooit de broncode.
De markt is volwassen. Een ruwe vergelijking van de gangbare opties:
| Tool | Type | Self-hosten | Open source | Sterk in |
|---|---|---|---|---|
| Infisical | Cloud of self-hosted | Ja | Ja (MIT) | Open source met een complete gratis self-host |
| HashiCorp Vault / OpenBao | Cloud of self-hosted | Ja | Vault: source-available (BSL); OpenBao: ja (MPL) | Zwaardere, beleidsgedreven omgevingen |
| Doppler | Beheerde clouddienst | Nee | Nee | Snel starten, gratis tot drie gebruikers |
| AWS / GCP / Azure secrets | Beheerde clouddienst | Nee | Nee | Als je daar je infrastructuur al draait |
| SOPS | CLI-encryptie van bestanden | n.v.t. | Ja (MPL) | Versleutelde secrets in Git, klein en simpel |
Draai je liever alles in eigen beheer, dan past een self-hosted opzet zoals Infisical of OpenBao op dezelfde server als je AI-gateway. Zit je al diep in één cloud, dan is de secrets manager van die cloud de weg van de minste weerstand. De beste keuze is bijna altijd: de eenvoudigste die je team echt gebruikt.
3. Geef elke sleutel zo min mogelijk rechten
Eén sleutel voor alles is de duurste fout. Het uitgangspunt is least privilege: een sleutel mag precies dat doen wat dat ene onderdeel nodig heeft, en niets meer. Wordt hij gestolen, dan is de schade beperkt tot die ene scope.
De meeste serieuze diensten ondersteunen dit inmiddels. OpenAI werkt met projecten waarin je sleutels aanmaakt met de rechten All, Restricted of Read Only, gekoppeld aan één project met een eigen budget en rate limit. Maak dus per applicatie of omgeving (productie, staging, een experiment) een eigen project met een eigen sleutel, in plaats van overal dezelfde organisatiesleutel te plakken. Hetzelfde principe geldt elders: een leesrecht waar je alleen leest, een aparte sleutel per integratie zoals je Stripe-betaalintegratie of je Supabase-database, en geen enkele geheime sleutel in code die in de browser draait.
4. Roteer sleutels automatisch
Een sleutel die nooit verandert, is een sleutel die lang genoeg leeft om gestolen te worden. Rotatie betekent: periodiek een nieuwe sleutel uitgeven en de oude intrekken. Goede secrets managers doen dit voor je. AWS Secrets Manager kan sleutels automatisch roteren, zo vaak als elke vier uur, en andere kluizen bieden vergelijkbare schema's.
Begin pragmatisch: roteer de gevoeligste sleutels (betaalprovider, productiemodellen) op een vast schema, bijvoorbeeld maandelijks, en zet daar waar het kan automatische rotatie aan. De cruciale stap die mensen overslaan: trek de oude sleutel daadwerkelijk in. Een geroteerde sleutel die nog werkt, is geen rotatie maar een extra sleutel.
5. Knijp de rechten van plugins en pakketten dicht
De aanval komt vaak niet via jouw code, maar via wat je code meelaadt. Een editor-plugin of een npm-pakket draait met dezelfde rechten als jij, en kan dus je .env en je shell-omgeving lezen. Beperk dat aanvalsoppervlak:
- Installeer alleen wat je vertrouwt en echt gebruikt. Elke plugin en elk pakket is een potentiële credential-steler. Minder is veiliger.
- Pin je dependencies met een lockfile en update bewust, niet blind. Een vergiftigd pakket sluipt vaak binnen via een nieuwe minor-versie.
- Geef plugins minimale bestandstoegang. Draai onbekende tools liever in een container of sandbox dan op je kale werkmachine met al je sleutels binnen handbereik.
- Scheid je sleutels van je werkomgeving. Als je secrets bij runtime uit een kluis komen en niet als platte omgevingsvariabele rondslingeren, valt er voor een meelezend pakket veel minder te halen.
6. Scan elke commit op secrets
Zet een hek voor je repository. De klassieke blunder is een sleutel die per ongeluk in Git belandt; eenmaal gepusht, staat hij in de geschiedenis en moet je hem als gelekt beschouwen. Een secret scanner vangt dit af voordat het gebeurt. Gitleaks is hiervoor de open-source standaard onder de MIT-licentie: het draait als pre-commit hook én in je CI, herkent API-sleutels en tokens via regex en entropie-analyse, en blokkeert de commit als het iets vindt.
De opzet is klein: voeg Gitleaks toe aan je .pre-commit-config.yaml zodat elke commit lokaal wordt gescand, en draai dezelfde scan als verplichte stap in je CI-pipeline voor wie de hook lokaal heeft uitgezet. Vals-positief? Een .gitleaksignore of een gitleaks:allow-comment houdt de scan schoon zonder hem uit te zetten.
7. Bewaak gebruik en stel budgetten in
Zonder monitoring merk je diefstal pas op de factuur. De laatste stap maakt misbruik zichtbaar terwijl het gebeurt. Zet per project een uitgavenlimiet en een rate limit, schakel waarschuwingen in bij ongebruikelijk verbruik, en log wie welke sleutel wanneer gebruikt. Een sleutel die plots vanuit een onbekend land of midden in de nacht duizenden calls doet, hoort een alarm af te laten gaan, niet een naheffing.
Wil je dit steviger aanpakken voor AI-agents die zelfstandig calls doen, dan kun je AI-agents audit-ready houden met logging, budgetten en kill-switches, zodat je een ontspoorde of gekaapte sleutel met één handeling stillegt.
Valkuilen
- De vergeten
.envin Git. Voeg.envtoe aan je.gitignorevoordat je iets commit, en vertrouw daarnaast op je secret scanner. Staat een sleutel eenmaal in de historie, dan helpt verwijderen niet meer: roteren is dan de enige echte oplossing. - Eén almachtige sleutel. Comfortabel, maar als hij lekt, ligt alles open. Splits per omgeving en per integratie.
- Roteren zonder intrekken. De oude sleutel blijft een open deur. Controleer dat hij echt is gedeactiveerd.
- Secrets in client-side code. Alles wat in de browser draait, is leesbaar voor de bezoeker. Geheime sleutels horen achter een backend, nooit in je frontend-bundel.
- Sleutels in CI-logs. Een onschuldig
echoof een debug-print zet je sleutel in een logbestand dat half je team kan lezen. Behandel logs als openbaar. - Blind vertrouwen op extensies. Een populaire plugin is niet automatisch een veilige plugin. De recente incidenten draaiden juist om tools die er legitiem uitzagen.
Kant-en-klaar vs. maatwerk
Moet je hiervoor iets laten bouwen, of pak je een standaardtool? Een eerlijke afweging:
| Kant-en-klaar (SaaS secrets manager) | Self-hosted standaardtool | Maatwerk-opzet | |
|---|---|---|---|
| Opzettijd | Minuten tot uren | Een dag | Dagen tot weken |
| Controle over je data | Bij de leverancier | Volledig bij jou | Volledig bij jou |
| Onderhoud | Leverancier | Jij (updates, back-ups) | Jij of een partner |
| Past bij | De meeste teams die snel willen starten | Wie alles in eigen beheer wil | Complexe stacks met eigen eisen |
Voor de meeste ondernemers is een bestaande secrets manager precies goed: snel, betrouwbaar en je hoeft het wiel niet opnieuw uit te vinden. Kies self-hosted als data-soevereiniteit of een specifieke compliance-eis zwaarder weegt dan het gemak. Maatwerk is pas zinnig als je een ongebruikelijke stack hebt waar de standaardtools niet op aansluiten, bijvoorbeeld sleutels die langs tientallen interne diensten en een eigen agent-laag moeten stromen. De valkuil is overigens niet te weinig techniek, maar te veel: een eenvoudige opzet die je team consequent gebruikt, verslaat een geavanceerd systeem dat niemand bijhoudt.
Wat het zwaarste weegt, is niet welke tool je kiest, maar of je sleutels als wat ze zijn behandelt: de loper op je hele digitale huis. Wie ze centraliseert, beperkt en bewaakt, verandert een gestolen sleutel van een ramp in een voetnoot. Dat is geen project van een kwartaal, maar een ochtend werk en daarna een gewoonte. En een gewoonte die je elke maand een potentiële naheffing, een datalek of een uitgeput modelbudget bespaart, is met afstand de goedkoopste verzekering in je hele stack.
Veelgestelde vragen
Je credentials echt op slot
Ik denk met je mee over je AI-stack en richt het end-to-end in: van een secrets manager en scoped keys tot automatische rotatie en monitoring, zodat een gestolen sleutel een voetnoot blijft in plaats van een ramp.
Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.
