Secret Rotation automatisieren
Was dieser Artikel über automatische Secret Rotation behandelt
- Warum manuelle Rotation nicht skaliert.
- Wie Rotation mit Skripten und Cronjobs automatisiert wird.
- Wie Secret-Manager Rotation übernehmen.
- Wie Workflows mit n8n oder CI/CD Rotation triggern.
- Wichtige Stolpersteine und Best Practices.
Einleitung: Secret Rotation automatisieren
Regelmässiger Austausch von API-Keys, Tokens und Passwörtern ist wichtig, aber manuell aufwendig. Je mehr Dienste und Agenten man betreibt, desto schneller wird die Rotation zur Belastung. Automatisierung reduziert Fehler, spart Zeit und stellt sicher, dass kein Secret über seine Gültigkeit hinaus verwendet wird.
Dieser Artikel zeigt, wie man Rotation in lokalen KI-Projekten automatisieren kann, sowohl mit einfachen Skripten als auch mit Secret-Managern und Workflow-Tools.
Wichtige Begriffe
- Rotation: Austausch eines alten Secrets gegen ein neues.
- Automatisierung: Regelmässiger oder ereignisbasierter Austausch ohne manuellen Eingriff.
- Cronjob: Zeitgesteuerter Auftrag unter Linux.
- Webhook: HTTP-Callback, der Aktionen auslöst.
- Secret-Manager: Zentrale Verwaltung von Secrets.
- CI/CD: Automatisierte Build- und Deployment-Pipelines.
- Grace Period: Übergangszeit, in der alte und neue Secrets gültig sind.
Warum Automatisierung wichtig ist
- Skalierbarkeit: Viele Secrets erfordern viele Schritte.
- Zuverlässigkeit: Termine werden nicht vergessen.
- Reaktionsschnelligkeit: Bei Leaks sofort austauschen.
- Konsistenz: Gleicher Ablauf für alle Dienste.
- Dokumentation: Automatische Protokolle.
Automatisierung mit Skripten
Ein einfacher Bash-Ansatz für Ollama-API-Keys oder Tokens:
#!/bin/bash
set -e
# Konfiguration
SECRET_FILE="/etc/openclaw/secrets.env"
BACKUP_DIR="/backup/secrets"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# Backup
mkdir -p "$BACKUP_DIR"
cp "$SECRET_FILE" "$BACKUP_DIR/secrets.env.$TIMESTAMP"
# Neues Secret erzeugen
NEW_KEY=$(openssl rand -hex 32)
# Datei aktualisieren
sed -i "s/^API_KEY=.*/API_KEY=$NEW_KEY/" "$SECRET_FILE"
# Dienst neu starten
systemctl restart openclaw
# Altes Secret nach Grace Period deaktivieren
# Hinweis: Provider-spezifischer Schritt nötig
echo "Rotiert am $TIMESTAMP" >> /var/log/secret-rotation.log
Dieses Skript sichert die Datei, erzeugt einen neuen Key, aktualisiert die Konfiguration und startet den Dienst neu.
Cronjobs
Ein regelmässiger Cronjob:
0 3 * * 0 /usr/local/bin/rotate-secrets.sh
Dies rotiert wöchentlich sonntags um 3 Uhr nachts. Ausgaben sollten in ein Log umgeleitet werden:
0 3 * * 0 /usr/local/bin/rotate-secrets.sh >> /var/log/secret-rotation.log 2>&1
Automatisierung mit Python
import secrets
import os
import shutil
import subprocess
from datetime import datetime
SECRET_FILE = "/etc/myapp/secrets.env"
BACKUP_DIR = "/backup/secrets"
SERVICE = "myapp"
def rotate_secret():
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
os.makedirs(BACKUP_DIR, exist_ok=True)
shutil.copy(SECRET_FILE, f"{BACKUP_DIR}/secrets.env.{timestamp}")
new_key = secrets.token_urlsafe(32)
with open(SECRET_FILE, "w") as f:
f.write(f"API_KEY={new_key}\n")
subprocess.run(["systemctl", "restart", SERVICE], check=True)
print(f"Rotiert um {timestamp}")
if __name__ == "__main__":
rotate_secret()
Secret-Manager mit automatischer Rotation
- HashiCorp Vault: Dynamische Datenbank-Credentials mit TTL.
- Infisical: Integrationen für automatische Rotation bei ausgewählten Providern.
- Cloud-Provider: AWS Secrets Manager, Azure Key Vault, GCP Secret Manager bieten integrierte Rotation.
Bei Secret-Managern holen sich Anwendungen das aktuelle Secret dynamisch ab, statt es in Dateien zu speichern.
Workflows mit n8n
n8n kann regelmässig oder aufgrund von Webhooks Rotation anstossen:
- Trigger: Zeitplan oder Webhook bei Leak-Verdacht.
- Neues Secret generieren: HTTP-Node beim Provider.
- Konfiguration aktualisieren: SSH-Node oder API-Aufruf.
- Dienst neu starten: SSH-Node.
- Altes Secret deaktivieren: Nach Grace Period.
- Benachrichtigung: E-Mail oder Messaging.
CI/CD-Integration
In GitHub Actions oder GitLab CI kann ein Rotation-Job definiert werden, der bei Bedarf oder zeitgesteuert läuft:
rotate-secrets:
schedule:
- cron: '0 3 * * 0'
steps:
- name: Rotate API key
run: ./scripts/rotate-api-key.sh
Rollback-Strategie
Vor jeder Rotation ein Backup erstellen. Wenn ein Dienst nach der Rotation nicht funktioniert, kann schnell zurückgerollt werden:
cp "$BACKUP_DIR/secrets.env.20260907_030000" "$SECRET_FILE"
systemctl restart openclaw
Grace Period und Cleanup
Neue und alte Secrets sollten kurzzeitig parallel gültig sein. Ein Cleanup-Schritt deaktiviert das alte Secret nach einer definierten Zeit. Das vermeidet Ausfallzeiten, wenn ein Dienst noch das alte Secret cached.
Typische Stolpersteine
- Kein Backup: Fehler bei der Rotation führt zu Ausfall.
- Zu kurze Grace Period: Dienste laden das alte Secret noch.
- Hardcodierte Secrets: Anwendungen, die Keys im Code speichern, können nicht rotiert werden.
- Fehlende Tests: Nach der Rotation prüfen, ob alles funktioniert.
- Logs enthalten Secrets: Nie Keys in Logs schreiben.
- Manueller Eingriff: Automatisierung wird durch Bestätigungsschritte behindert.
Weiterführende Links und Infos
- BotServ.de Secret Rotation
- BotServ.de HashiCorp Vault
- BotServ.de Infisical
- BotServ.de dotenvx
- BotServ.de Mozilla SOPS
FAQ: Secret Rotation automatisieren
Sollte ich Rotation wirklich automatisieren? Ja, sobald mehr als wenige Secrets im Einsatz sind.
Wie oft sollte automatisch rotiert werden? Zum Beispiel wöchentlich oder monatlich, je nach Risiko.
Kann ich Rotation ohne Secret-Manager automatisieren? Ja, mit Skripten, Cronjobs oder CI/CD, aber es erfordert mehr Eigenaufwand.
Was passiert bei einem Fehler? Ein Backup und ein Rollback-Schritt minimieren Ausfallzeiten.
Sind automatisch erzeugte Passwörter sicher?
Ja, wenn sie kryptographisch stark sind, zum Beispiel mit openssl oder secrets.token_urlsafe.
Quellen und weiterführende Literatur
- HashiCorp Vault Dynamic Secrets: https://developer.hashicorp.com/vault/docs/secrets/databases
- Infisical Rotation: https://infisical.com/docs/
- Python secrets: https://docs.python.org/3/library/secrets.html
Zusammenfassung: Secret Rotation automatisieren
Manuelle Secret Rotation skaliert nicht. Mit Skripten, Cronjobs, Secret-Managern oder Workflows lässt sich der Austausch regelmässig und zuverlässig durchführen. Wichtig sind Backups, Grace Periods, Tests nach der Rotation und saubere Logs ohne Secrets. Wer Automatisierung richtig einsetzt, reduziert das Leak-Risiko erheblich und spart gleichzeitig Verwaltungsaufwand.


