- Authors

- Name
- Phillip Pham
- @ddppham
Keyless Identity für AI-Agents: Agents ohne statische Secrets auf Kubernetes
TL;DR
- Das größte Sicherheitsrisiko Ihrer KI ist ein statisches Secret. Ein MCP-Agent bekommt oft einen Client-Secret, der als Umgebungsvariable im Pod liegt — Jahre aktiv, nie rotiert, im Git-Verlauf kopiert. Der Pod ist kurzlebig, das Credential nicht.
- Ein Sicherheits-Audit fand in der Praxis einen 8 Monate alten, nie rotierten Token, der durch Git-History und alle Rollbacks kopiert worden war.
- Die Lösung heißt Keyless Identity: kein Secret, das gestohlen werden kann. Das Ziel in einem Satz: Kein Secret vor dem Pod, kein Secret nach dem Pod, kein Replay während des Pods.
- Das Muster kombiniert erprobte Standards: SPIRE (Workload-Identität), Keycloak (IdP), CIMD (dynamische Client-Registrierung), DPoP (Replay-Schutz) und OPA (Autorisierung).
- Ein gestohlener Access-Token ist wertlos ohne den In-Memory-Key, der nie den Pod verlassen hat.
Warum statische Secrets für Agents scheitern
Das Problem in der Praxis
Ein Krankenhaus betreibt viele kleine Agents auf Kubernetes: Diagnose (liest klinische Daten), Billing (erstellt Rechnungen), Audit (prüft Zugriffe). Jeder Agent braucht strikte Trennung: Diagnose darf lesen, Billing darf nicht auf klinische Daten, Audit darf nichts ändern.
Die heutige Realität:
| Methode | Problem |
|---|---|
| Client-Secret in Datei | Aus dem Dateisystem extrahierbar |
| API-Key als Env-Variable | Dumpbar |
| Service-Account-Token gemountet | Kopierbar |
| Langlebiger Private Key | Rotation & Leakage-Risiko |
| Handgefertigte Clients | Menschlicher Aufwand |
Der Kern: Der Pod ist temporär, das Credential nicht. Ohne kurzfristige Identität halten auch höhere Kontrollen (HIPAA/GDPR) nicht wirklich.
Das Ziel
- Kein Client-Secret, kein API-Key, kein gemounteter Service-Account-Token, kein Private Key auf Disk.
- Kein Mensch, der Clients von Hand erstellt.
- Zugriffs-Token resistent gegen Replay.
- Autorisierung kommt aus Policy.
- Das Credential stirbt mit dem Pod.
Das Keyless-Muster in 5 Schritten
Das Muster kombiniert erprobte Standards und Projekte: SPIRE (Workload-Identität), Keycloak (IdP), CIMD (dynamische Client-Registrierung), DPoP (Replay-Schutz) und OPA (Autorisierung).
| Schritt | Mechanismus | Zweck |
|---|---|---|
| 1. Identität | SPIRE: Pod erhält kurzfristigen Token | Runtime-Identität, kein Secret auf Disk |
| 2. Registrierung | CIMD: Pod registriert sich per URL | Client entsteht automatisch, kein Admin |
| 3. Assertion | Signierter Request mit In-Memory-Key | Beweis des Private Keys, kein Secret gesendet |
| 4. Token | DPoP-gebundener Token von Keycloak | Replay-Schutz, an den Key gebunden |
| 5. Tool-Call | OPA entscheidet pro Tool | Autorisierung aus Policy, nicht aus Vertrauen |
Warum ein gestohlener Token wertlos ist
Ein Angreifer fängt ab: den Access-Token und den DPoP-Proof. Beides ist nutzlos:
- Der Token ist DPoP-gebunden an den Private Key des Pods — der Angreifer hat den Key nicht.
- Der Proof ist Single-Use — ein Replay wird abgelehnt.
- Ein gefälschter Proof mit eigenem Key scheitert an der Key-Bindung des Tokens.
Ein gestohlener Token ist wertlos ohne den Key, der nie den Pod verlassen hat.
Autorisierung: Vertrauensmatrix statt Vertrauen in den Namespace
- Authentifizierung beweist, WER spricht (SPIRE-Identität).
- OPA entscheidet, WAS er darf (Policy pro Tool, pro Trust-Level).
- Der Billing-Agent kann alle krypto-Checks bestehen und trotzdem den Zugriff auf klinische Daten verweigert bekommen. Die Verweigerung ist der Punkt.
Authentifizierung: "Wer spricht?" → SPIRE (Workload-Identität)
Autorisierung: "Was darf er?" → OPA (Policy pro Tool, pro Trust-Level)
Die ehrlichen Grenzen: PC1 → PC2
Der erste Proof-of-Concept hat eine Lücke: Der Pod generiert seinen eigenen Key und „labeled" ihn mit einer Identität — die Identität ist aber nur ein Label, keine kryptografische Bindung. Ein Pod in einem vertrauenswürdigen Namespace kann sich selbst registrieren und Vertrauen nur wegen des Namespace erhalten.
Die Lösung (PC2): Der Agent präsentiert eine von SPIRE signierte SVID als Client-Assertion. Keycloak verifiziert sie gegen das SPIRE-Trust-Bundle (Federated Client Authentication). Vertrauen kommt dann aus verifizierter Identität, nicht aus dem Namespace.
Ein Roboter kann eine URL publizieren, aber keine SPIRE-signierte SVID erzeugen.
| Ansatz | Vertrauensquelle | Lücke |
|---|---|---|
| PC1 (eigener Key + Label) | Namespace | Identität ist nur ein Label, keine krypto-Bindung |
| PC2 (SPIRE-signierte SVID) | Verifizierte Identität | Geschlossen — Keycloak verifiziert gegen Trust-Bundle |
Die ehrliche Einordnung: machbar, aber kein Turnkey
Dieses Muster ist heute umsetzbar (Keycloak 26.x, CNCF-Projekte), aber es ist kein Turnkey-Produkt:
- SPIRE-Integration, CIMD-Registrierung, DPoP-Bindung, OPA-Policies und Fail-Closed-Verhalten müssen konfiguriert, getestet und betrieben werden.
- Die echten Grenzen liegen in Kubernetes-RBAC, Network Policies und SPIRE-Selektoren — nicht in einzelnen Tools.
- CIMD und Federated Client Authentication sind teils experimentell — professionelle Validierung nötig.
Fail-Closed ist Pflicht
Wenn SPIRE ausfällt, muss der Agent fail-closed — sonst öffnet der Ausfall eine Lücke. Dazu gehören:
- SVID-Rotation & Revocation — kurzlebige Identitäten, die sich erneuern
- Trust-Bundle-Management — über Umgebungen und Cluster hinweg
- Fail-Closed-Verhalten — kein Zugriff bei Ausfall, statt offener Tür
- Monitoring & Audit — nachweisbar, wer wann was getan hat
Fazit
Keyless Identity dreht die Sicherheitsfrage um: Statt „Wie schützen wir den Schlüssel besser?" die bessere Frage: „Was, wenn es gar keinen Schlüssel mehr zu stehlen gibt?"
- Statische Secrets sind der größte Risikofaktor — der Pod ist kurzlebig, das Credential nicht.
- Keyless Muster: SPIRE + Keycloak + CIMD + DPoP + OPA — kein Secret auf Disk, Replay-Schutz, Autorisierung aus Policy.
- Verifizierte Identität statt Namespace-Vertrauen: Die SPIRE-signierte SVID schließt die Label-Lücke.
- Das Credential stirbt mit dem Pod — kurzlebig, kryptografisch gebunden, audit-fähig.
FAQ
Was ist „Keyless Identity"? Ein Architekturmuster, bei dem Workloads (Agents) kurzfristige, kryptografisch gebundene Identität zur Laufzeit erhalten — statt statischer Secrets, die gestohlen werden können.
Ist das produktionsreif? Das Muster ist heute umsetzbar, aber nicht Turnkey. Es braucht professionelle Konfiguration und Betrieb — SPIRE-Integration, CIMD, DPoP, OPA-Policies und Fail-Closed-Verhalten.
Was ist der größte Vorteil? Ein gestohlener Access-Token ist nutzlos ohne den In-Memory-Key des Pods. Kein Secret vor dem Pod, kein Secret nach dem Pod, kein Replay während des Pods.
Reicht nicht ein gut verwaltetes Secrets-Management? Es reduziert das Risiko, aber das Secret bleibt stehlbar. Keyless Identity entfernt die Angriffsfläche strukturell — es gibt nichts mehr zu stehlen.
Verwandte Artikel
📖 Verwandte Artikel
Weitere interessante Beiträge zu ähnlichen Themen
Non-Human Identities: Zero-Trust für KI-Agents in Kubernetes
Non-Human Identities & Identity Chaining für AI-Agents: So verhindern Sie den Confused Deputy mit RFC 8693, RFC 7523 & ID-JAG — Zero-Trust in Kubernetes.
AI-Agent-Sandbox auf Kubernetes: VM-Isolation mit Kata Containers
AI-Agent-Sandbox auf Kubernetes: Warum Container-Isolation für untrusted Agents nicht reicht und wie Kata Containers VM-Isolation bei Standard-Container-Workflow liefert.
Keycloak für Service-to-Service-Autorisierung in Kubernetes: Autorisierung in die Plattform, nicht in die App
Keycloak als zentrale Autorisierungs-Control-Plane in Kubernetes: Service-to-Service-Autorisierung an der Plattform-Ebene durchsetzen — ohne App-Änderungen, mit Istio Ambient & Waypoint.
Llama Stack: Enterprise-KI-Plattform auf Kubernetes
Llama Stack standardisiert Inference, RAG, Agents und Guardrails wie Kubernetes Container: eine API, austauschbare Provider — von Laptop bis Rechenzentrum.
Kubernetes RBAC Best Practices 2026: Rollen, Bindings & Least Privilege
Kubernetes RBAC Best Practices mit vollständigen Role-, ClusterRole- und RoleBinding-Manifesten: Least-Privilege-Rollen für Entwickler, CI/CD und Auditoren bauen, mit kubectl auth can-i und rbac-lookup verifizieren und die häufigsten Fehlkonfigurationen systematisch eliminieren.
Zero-Trust Architektur für Kubernetes: Komplett-Guide (2026)
Zero-Trust für Kubernetes: Network Policies, mTLS, Service Mesh & Identity Verification. Schritt-für-Schritt-Anleitung für sicherste Cluster-Architektur.
Agentic AI auf Kubernetes: Was in der Praxis zählt
Agentic AI auf Kubernetes: Warum K8s das Substrat bleibt, welche Schichten (Inference bis Agents) zählen und wo Sandbox, Scheduling und Kosten knifflig werden.
NIS2-Meldepflicht für Kubernetes-Vorfälle: Ablauf in Stunden
Meldepflicht nach NIS2/§ 32 BSIG für Kubernetes-Vorfälle: 24h-Erstmeldung, 72h-Meldung, Abschlussbericht. Welche Cluster-Ereignisse die Frist auslösen.