Dezentrales IAM und Multi-Cloud-Sicherheit: Zero Trust im großen Maßstab aufbauen
Die Ära des klassischen Sicherheitsmodells mit Burg und Wassergraben (Castle-and-Moat) ist vorbei. Wenn sich Ihre Infrastruktur über AWS, GCP, Azure und On-Premise-Umgebungen erstreckt, gibt es keinen festen Netzwerk-Perimeter mehr. In dieser Realität ist dezentrales IAM und Multi-Cloud-Sicherheit kein bloßes architektonisches Muster - es ist die einzig wirksame Verteidigung gegen laterale Bewegungen von Angreifern und raffinierte Supply-Chain-Angriffe. Die Identität des Anfordernden, ob Mensch oder Maschine, ist die neue Grenze.
Die meisten Organisationen scheitern daran. Sie versuchen, veraltete, zentralisierte Identity Provider (IdPs) in dynamische Multi-Cloud-Kubernetes-Cluster zu integrieren. Das führt zu fehleranfälligen Verknüpfungen, übermäßig vergebenen Berechtigungen und Single Points of Failure. In diesem Beitrag analysieren wir das Problem, schlagen eine klare Architektur vor und zeigen Ihnen genau, wie Sie diese implementieren, ohne die Entwicklungsgeschwindigkeit zu beeinträchtigen.
Das Problem: Die Hub-and-Spoke-Identitätsfalle
Wenn Unternehmen zum ersten Mal eine Multi-Cloud-Strategie einführen, leiten sie in der Regel die gesamte Authentifizierung und Autorisierung über ein einziges zentrales Verzeichnis (z. B. Active Directory oder eine Okta-Instanz). Dies schafft die Hub-and-Spoke-Identitätsfalle.
Jeder Dienst in AWS, der auf eine Datenbank in GCP zugreifen möchte, muss sich am zentralen Hub authentifizieren. Dieses Design weist drei kritische Schwachstellen auf:
- Latenz: Eine Microservice-Architektur, die Hunderte von internen API-Aufrufen pro Sekunde durchführt, kann sich die Round-Trip-Latenz zu einem zentralen IdP nicht leisten.
- Verfügbarkeit: Wenn der zentrale IdP ausfällt, steht die gesamte Multi-Cloud-Infrastruktur still.
- Explosionsradius (Blast Radius): Ein kompromittiertes zentrales Verzeichnis gibt dem Angreifer die Schlüssel für das gesamte Königreich über alle Clouds hinweg in die Hand.
Sie müssen Identitäten lokal verifizieren, aber global verwalten.
Warum dezentrales IAM und Multi-Cloud-Sicherheit schwierig sind
Identität zu dezentralisieren bedeutet, Vertrauen zu verteilen. Das wiederum erfordert kryptografische Nachweise, die kontinuierlich validiert werden. Wenn eine Workload in AWS EKS ein Objekt in einem Google Cloud Storage-Bucket lesen muss, woher weiß GCP dann, dass es dem AWS-Pod vertrauen kann?
Der naive Ansatz besteht in langlebigen statischen Anmeldeinformationen (z. B. AWS Access Keys oder JSON-Dateien für GCP-Dienstkonten), die in Vault oder Kubernetes Secrets gespeichert werden. Das ist ein massives Anti-Pattern. Statische Zugangsdaten lecken, sie werden selten rotiert und sie verletzen das Kernprinzip von Zero Trust: kurzlebiger, genau definierter Zugriff.
Die Herausforderung besteht darin, Workload-Identitätsföderation über verschiedene Vertrauensdomänen hinweg aufzubauen. Sie müssen eine Identität in Domäne A (AWS OIDC-Provider) einer Rolle in Domäne B (GCP IAM) zuweisen, ohne langlebige Geheimnisse auszutauschen.
Die empfohlene Architektur: Workload Identity Federation
Wir plädieren für eine Architektur, bei der jede Umgebung als eigener Identity Provider (IdP) für die von ihr gehosteten Workloads fungiert. Diese lokalen IdPs föderieren das Vertrauen dann mit anderen Cloud-Umgebungen über OpenID Connect (OIDC).
Unsere Referenzarchitektur nutzt:
- Kubernetes (EKS v1.30): Zum Hosten der Workloads.
- AWS IAM OIDC Provider: Der lokale IdP für EKS.
- GCP Workload Identity Federation: Vertraut dem AWS OIDC-Provider.
- SPIFFE/SPIRE (v1.8.0): Für internes Service-zu-Service mTLS und die Ausstellung von Identitäten.
Anstatt Secrets zu übertragen, fordert die Workload ein kurzlebiges Token aus ihrer lokalen Umgebung an. Dieses Token wird vom lokalen IdP kryptografisch signiert. Die Zielumgebung (GCP) überprüft die Signatur, ordnet den OIDC-Claim einer lokalen IAM-Rolle zu und gewährt temporären Zugriff.
Implementierung: AWS EKS zu GCP BigQuery
Betrachten wir eine konkrete Implementierung. Wir haben einen Datenerfassungsdienst (Data Ingestion Service), der in einem AWS EKS-Cluster läuft und in ein GCP BigQuery-Dataset schreiben muss.
1. Konfigurieren des AWS EKS OIDC-Providers
Stellen Sie zunächst sicher, dass Ihrem EKS-Cluster ein IAM OIDC-Provider zugeordnet ist. Dies ermöglicht es Kubernetes-Servicekonten, IAM-Rollen anzunehmen, und bietet vor allem eine Aussteller-URL (Issuer URL), der GCP vertrauen kann.
2. Erstellen des GCP Workload Identity Pools
In GCP erstellen wir einen Workload Identity Pool und einen Provider. Der Provider verweist auf die AWS EKS OIDC-Aussteller-URL. Wir ordnen den sub-Claim (der den Kubernetes-Namespace und den Namen des Servicekontos enthält) einem Google IAM-Subjekt zu.
3. Zuweisen des GCP-Servicekontos
Jetzt erstellen wir ein GCP-Servicekonto mit Schreibrechten für BigQuery und erlauben dem spezifischen Kubernetes-Servicekonto (über den Identity Pool), sich als dieses auszugeben (Impersonation).
4. Der Anwendungscode
Die in EKS ausgeführte Anwendung nutzt das Google Cloud SDK. Das SDK erkennt automatisch das von EKS bereitgestellte projizierte Servicekonto-Token, verwendet es zur Authentifizierung beim GCP Workload Identity Pool und ruft ein kurzlebiges Zugriffstoken für das bq-writer-sa ab. Es sind keine statischen Schlüssel erforderlich.
Zu vermeidende Fallstricke
Die Implementierung dieser Architektur ist nicht ohne Risiken. Hier sind die häufigsten Fehlerbilder, die wir beobachten, wenn Teams dezentrales IAM einführen:
1. Zu breites Claim-Mapping
Achten Sie beim Konfigurieren des Attribut-Mappings des Workload Identity Providers darauf, keine zu allgemeinen Claims zuzuordnen. Wenn Sie "google.subject" = "assertion.aud" definieren, erlauben Sie jeder Workload im EKS-Cluster, sich als das GCP-Servicekonto auszugeben. Ordnen Sie das Mapping immer dem spezifischen sub (Subjekt) zu, welches den Namespace und den Namen des Servicekontos enthält (system:serviceaccount:namespace:sa-name).
2. Ignorieren des Token-Ablaufs
Projizierte Servicekonto-Token in Kubernetes laufen ab. Ihre Anwendung muss in der Lage sein, Anmeldeinformationen dynamisch neu zu laden. Die meisten modernen SDKs übernehmen dies automatisch, aber selbst geschriebene Autorisierungslogiken cachen Token oft unbegrenzt. Dies führt zu schwer zu debuggenden Fehlern, wenn das Token nach einer Stunde abläuft.
3. Vernachlässigung von Audit-Logs
Dezentralisierung kann die Sichtbarkeit einschränken. Sie müssen die Audit-Logs von AWS CloudTrail, GCP Cloud Logging und Ihrem Kubernetes-API-Server in einem zentralen SIEM aggregieren. Wenn eine Workload-Identität kompromittiert wird, müssen Sie in der Lage sein, ihre Aktionen über Cloud-Grenzen hinweg nachzuvollziehen. Stellen Sie sicher, dass Sie den sub-Claim aus dem OIDC-Token mit den resultierenden API-Aufrufen in der Zielumgebung korrelieren.
Das Ergebnis: Sicherheit als Wegbereiter
Der Übergang zu einer föderierten, dezentralen IAM-Architektur verändert das Sicherheitsniveau einer Software-Organisation grundlegend.
Durch die Eliminierung statischer Zugangsdaten beseitigen Sie den Hauptvektor für Supply-Chain-Angriffe. Wenn ein Entwickler Zugriff auf eine Cloud-übergreifende Ressource für einen neuen Dienst benötigt, fordert er keinen Schlüssel mehr beim Sicherheitsteam an. Er schreibt ein Terraform-Modul, um das Vertrauensverhältnis zu etablieren und die Richtlinie zu definieren.
Sicherheit wird zu Code. Vertrauen wird kurzlebig. Die Infrastruktur wird resilient. Dies ist der einzig gangbare Weg für professionelle Engineering-Teams, die im großen Maßstab operieren.
