Key Rotation
Der risikobasierte Austausch von kryptografischen Schlüsseln und Credentials – kann das Risiko bei Kompromittierung reduzieren.
Die sichere Speicherung und Verwaltung von sensiblen Daten wie API-Keys, Passwörtern und Zertifikaten – nie im Code, immer verschlüsselt.
Secrets Management hält sensible Daten sicher – außerhalb des Codes.
SCHLECHT:
api_key = "sk-1234567890abcdef" # Im Code!
DATABASE_URL=postgres://user:pass@host # In .env committed
GUT:
api_key = secrets_manager.get("api-key")
DATABASE_URL = vault.read("database/creds")
| Tool | Use Case |
|---|---|
| HashiCorp Vault | Enterprise, Self-hosted |
| AWS Secrets Manager | AWS-native |
| Azure Key Vault | Azure-native |
| GCP Secret Manager | GCP-native |
| Doppler | Developer-friendly SaaS |
import hvac
client = hvac.Client(url='https://vault.example.com')
client.token = os.environ['VAULT_TOKEN']
# Secret lesen
secret = client.secrets.kv.read_secret_version(path='myapp/database')
db_password = secret['data']['data']['password']
Moderne Secrets Manager unterscheiden zwei Arten von Geheimnissen:
| Typ | Eigenschaft | Beispiel |
|---|---|---|
| Statisch | Manuell erstellt, gültig bis zur Rotation | API-Key eines externen Dienstes |
| Dynamisch | On-Demand generiert, kurze Lebensdauer | Temporäre Datenbank-Credentials |
Dynamische Secrets sind das sicherere Modell: Der Secrets Manager erzeugt bei jeder Anfrage frische Credentials mit begrenzter Gültigkeit. Wird ein solches Secret geleakt, ist es oft schon abgelaufen, bevor ein Angreifer es nutzen kann. Voraussetzung ist, dass das Zielsystem (z. B. eine Datenbank) programmatische Benutzerverwaltung unterstützt.
Gerade KI-Anwendungen sind auf viele externe Credentials angewiesen: API-Keys für LLM-Provider, Zugangsdaten für Vektordatenbanken, Tokens für Embedding-Dienste und Webhooks. Dabei gelten einige Besonderheiten:
| Fehler | Warum problematisch | Besser |
|---|---|---|
.env versehentlich committed | Secrets landen dauerhaft in der Git-Historie | .env in .gitignore, Pre-Commit-Scanning |
| Secrets in Logs | Debug-Ausgaben protokollieren Credentials im Klartext | Log-Redaction, strukturiertes Logging |
| Ein Key für alles | Kein Blast-Radius-Limit, Rotation betrifft alle Systeme | Pro Service und Umgebung eigene Secrets |
| Secrets in CI-Variablen ohne Maskierung | Build-Logs zeigen Werte an | Maskierte Variablen, OIDC statt Langzeit-Keys |
| Kein Ablaufdatum | Vergessene Keys bleiben jahrelang gültig | Lebensdauer begrenzen, Inventar pflegen |
Wichtig: Ein einmal in Git committetes Secret gilt als kompromittiert – auch nach dem Löschen des Commits bleibt es in der Historie und in Forks auffindbar. Die einzige korrekte Reaktion ist die sofortige Rotation.
Secrets Management ist wie ein Tresor für digitale Schlüssel: Statt Passwörter auf Post-its zu kleben, liegen sie sicher verwahrt und nur Berechtigte bekommen Zugang.
Secrets nie im Code oder Git!
Zentrale, verschlüsselte Speicherung
Automatische Rotation und Audit
CI/CD Pipelines
Sichere Injection von Credentials
Kubernetes
Secrets für Container
Microservices
Service-zu-Service-Authentifizierung
Besser als im Code, aber: Keine Rotation, kein Audit, oft in Logs sichtbar. Secrets Manager sind sicherer.
Deshalb: Encryption at Rest, strenge IAM-Policies, Audit Logging, und Secrets nur bei Bedarf abrufen.