API-Key-Rotation
API-Keys gehören rotiert. Standardmäßig empfehlen wir alle 6 Monate plus sofort wenn jemand das Team verlässt der den Klartext gesehen haben könnte.
Rotations-Strategie ohne Downtime
CodeGuard erlaubt mehrere aktive Keys gleichzeitig pro Account. Das ist explizit so designt damit ihr ohne Service-Unterbruch rotieren könnt.
Ablauf:
- Neuen Key erzeugen im Portal. Alter bleibt aktiv.
- Neuen Wert im CI hinterlegen, am besten als zweite Variable,
z.B.
CODEGUARD_API_KEY_NEW. - Workflow umstellen auf die neue Variable.
- CI-Run abwarten und prüfen dass der neue Key funktioniert (im Portal kannst du am Last-Used-Datum sehen dass der neue gepullt hat).
- Alten Key revoken.
- Aufräumen (optional): die Variable umbenennen zurück auf
CODEGUARD_API_KEY.
So ist nie ein Zeitfenster in dem die CI gar nicht authentifizieren kann.
Wenn ihr einen Key sofort revoken müsst
Wenn ein Key kompromittiert wurde (in einem öffentlichen PR gesehen, in einem Slack-Channel gelandet, ...): sofort im Portal revoken.
Beispiel-Reihenfolge:
- Im Portal revoken, der Key ist ab sofort tot.
- Neuen Key erzeugen.
- CI-Secret aktualisieren.
- GitHub Secret Scanning prüft eure Repos automatisch, ob der alte Key noch irgendwo committed ist. Bekommt ihr eine Notification, einen PR machen um es rauszunehmen plus Git-History-Cleanup falls relevant.
- Audit prüfen, im Portal sehen wir ob der Key zwischen Exposure und Revoke gepullt hat. Falls ja, wir informieren euch und checken ob die Pulls plausibel sind.
Lifetime-basierte Rotation
Beim Anlegen eines Keys kannst du eine Lifetime wählen (30 Tage, 90 Tage, 1 Jahr, unbegrenzt). Nach Ablauf wird der Key automatisch deaktiviert.
Nutzungs-Tipps:
- 30 Tage für externe Berater oder Audits.
- 90 Tage für Standard-CI-Keys mit eingespielter Rotation.
- 1 Jahr wenn ihr nur sehr selten rotieren wollt.
- Unbegrenzt nur wenn ihr ein Audit-System habt das den Key trotzdem regelmäßig prüft.
Rotations-Schedule
Setzt die Lifetime auf 90 Tage und plant alle 80 Tage einen Kalender-Eintrag im Team-Kalender für die Rotation. So bleibt die Pause zwischen zwei Rotationen kurz genug, dass das Vorgehen im Team eingespielt bleibt.
Mehrere Keys, mehrere Zwecke
Es macht Sinn pro CI-Setup einen eigenen Key zu haben:
acme-web-ci, für eures Haupt-Repoacme-web-staging, für einen separaten Staging-Build-Serveracme-consulting-firma-x, für eine Dritt-Firma die euer Repo temporär bauen muss
Bei Bedarf könnt ihr einzelne Keys revoken ohne andere zu treffen.
Backup-Key
Wir empfehlen keinen "Backup-Key" in einem Tresor, ein Key der nicht aktiv genutzt wird ist ein Key der ungesehen kompromittiert sein könnte. Die schnelle Rotation oben ist die robustere Strategie.
Mehr Hintergrund unter API-Keys verwalten und API-Keys in Secrets.