Wat je gaat doen
- Roteer een sleutel zonder downtime door eerst de vervanging uit te geven en de oude pas in te trekken nadat de nieuwe sleutel bevestigd live staat.
- Trek een gelekte sleutel meteen in — verspreiding naar alle regio's duurt hoogstens 60 seconden.
- Bewaar sleutels in omgevingsvariabelen of een secret manager, nooit in code, en roteer wanneer een teamlid met toegang vertrekt.
API-sleutels zijn langlevende bearer-tokens, dus ze periodiek roteren — en meteen intrekken zodra er één lekt — is de moeite waard om goed te doen. Dit artikel behandelt beide gevallen.
Een sleutel roteren zonder downtime
Rotatie betekent dat je een nieuwe sleutel uitgeeft voordat je de oude buiten gebruik stelt, zodat er geen gat ontstaat waarin je integratie niet geauthenticeerd is.
- Ga naar Instellingen → API-sleutels en klik op Sleutel genereren.
- Geef de nieuwe sleutel een naam die het doel duidelijk maakt (bijv.
production-v2). - Kies dezelfde rol als de sleutel die je vervangt.
- Kopieer de token — hij wordt maar één keer getoond.
- Werk je omgevingsvariabele of secret manager bij met de nieuwe token en deploy.
- Zodra de nieuwe sleutel live staat en bevestigd werkt (controleer de kolom Laatst gebruikt — die zou binnen enkele minuten moeten omslaan), ga terug naar Instellingen → API-sleutels en klik op Intrekken bij de oude sleutel.
Houd de oude sleutel actief tot je zeker weet dat de nieuwe werkt. Als je te vroeg intrekt en de deploy nog niet is uitgerold, krijgt het verkeer 401's te zien.
Een gelekte sleutel meteen intrekken
Als een sleutel is blootgesteld — gepusht naar een publieke repo, gelekt in logs, opgenomen in een client-side bundel — trek hem dan eerst in en onderzoek daarna.
- Instellingen → API-sleutels, zoek de sleutel op naam of prefix (de prefix is zichtbaar in de tabel, ook al is de volledige token dat niet).
- Klik op Intrekken. Intrekking verspreidt zich binnen 60 seconden naar alle regio's.
- Geef een vervangende sleutel uit en werk je secrets bij.
- Controleer de tijdstempel Laatst gebruikt op de ingetrokken sleutel om in te schatten hoe lang hij blootgesteld was en of je onverwachte activiteit moet controleren.
Ingetrokken sleutels blijven met een revoked-badge in de tabel staan, zodat je een overzicht hebt. Ze kunnen niet opnieuw geactiveerd worden.
Secrets veilig bijwerken
Het standaardpatroon is om sleutels in omgevingsvariabelen te bewaren, niet in code:
# .env.local (nooit gecommit)
ELIDO_API_KEY=elido_live_xxx...
import { ElidoClient } from "@elido/sdk";
const client = new ElidoClient({ apiKey: process.env.ELIDO_API_KEY! });
Gebruik voor CI-pipelines de secretopslag van je platform (GitHub Actions secrets, GitLab CI variables, enz.) en roteer wanneer een lid met toegang het team verlaat.
Wat er gebeurt met live integraties
Wanneer je een sleutel intrekt, wordt elke request die al onderweg was en de token al had verzonden nog steeds voltooid — we valideren aan het begin van de request, niet halverwege de response. Requests die na de intrekking beginnen, krijgen 401 Unauthorized. De SDK's doen geen retry bij een 401 (dat zou in een loop terechtkomen), dus je integratie zal meteen beginnen te falen.
Plan een korte overlapperiode: houd de oude sleutel actief tot je hebt bevestigd dat de nieuwe in productie actief is.
Problemen oplossen
401 op een sleutel die ik net heb aangemaakt. De token die bij aanmaak wordt getoond, is de volledige sleutel inclusief het geheime suffix. Als je alleen de prefix uit de tabel hebt gekopieerd (bijv. elido_abc123), werkt dat niet — de prefix is alleen ter weergave. Geef een nieuwe sleutel uit en kopieer de volledige token.
Knop Intrekken ontbreekt. De sleutel is waarschijnlijk al ingetrokken. Ingetrokken sleutels tonen een revoked-badge en geen actieknop. Controleer of je naar de juiste workspace kijkt — sleutels zijn workspace-gebonden.
Verspreidingsvenster van 60 seconden. Als je een sleutel hebt ingetrokken en requests nog even blijven slagen, is dat verwacht gedrag. Onze edge-nodes synchroniseren intrekkingen via Redis pub/sub; de vertraging is in het slechtste geval ongeveer 60 seconden.
Sleutel is verdwenen uit de lijst. We bewaren ingetrokken sleutels voor onbepaalde tijd in de tabel voor auditdoeleinden. Als je hem niet kunt vinden, controleer dan of je de lijst niet hebt gefilterd — er is standaard geen filter voor alleen actieve sleutels, maar een tekstzoekopdracht op het naamveld verbergt niet-overeenkomende rijen.