Unterstützung für die Verbesserung dieser Seite beitragen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Zugreifen auf AWS Ressourcen mithilfe von EKS Pod Identity Target IAM-Rollen
Wenn Sie Anwendungen auf Amazon Elastic Kubernetes Service (Amazon EKS) ausführen, müssen Sie möglicherweise auf AWS Ressourcen zugreifen, die in verschiedenen AWS Konten vorhanden sind. In dieser Anleitung erfahren Sie, wie Sie den kontoübergreifenden Zugriff mithilfe von EKS Pod Identity einrichten, sodass Ihre Kubernetes-Pods mithilfe von Zielrollen auf andere AWS Ressourcen zugreifen können.
Voraussetzungen
Stellen Sie vor dem Beginn sicher, dass Sie die folgenden Schritte abgeschlossen haben:
So funktioniert’s
Mit Pod Identity können Anwendungen in Ihrem EKS-Cluster über einen Prozess, der als Rollenverkettung bezeichnet wird, kontenübergreifend auf AWS Ressourcen zugreifen.
Wenn Sie eine Pod Identity-Zuordnung erstellen, können Sie zwei IAM-Rollen angeben: eine EKS-Pod-Identity-Rolle in demselben Konto wie Ihr EKS-Cluster und eine Ziel-IAM-Rolle aus dem Konto, das Ihre AWS Ressourcen enthält, auf die Sie zugreifen möchten (wie S3-Buckets oder RDS-Datenbanken). Die EKS-Pod-Identity-Rolle muss sich aufgrund der PassRoleIAM-Anforderungen im Konto Ihres EKS-Clusters befinden, während sich die Target-IAM-Rolle in jedem Konto befinden kann. AWS PassRole ermöglicht es einer AWS Entität, die Rollenübernahme an einen anderen Dienst zu delegieren. EKS Pod Identity verwendet PassRole , um eine Rolle mit einem Kubernetes-Dienstkonto zu verbinden. Dabei müssen sich sowohl die Rolle als auch die Identität, die sie übergibt, in demselben AWS Konto wie der EKS-Cluster befinden. Wenn Ihr Anwendungs-Pod auf AWS Ressourcen zugreifen muss, fordert er Anmeldeinformationen von Pod Identity an. Pod Identity führt dann automatisch zwei Rollenübernahmen nacheinander durch: Zunächst übernimmt es die EKS-Pod-Identity-Rolle und verwendet dann diese Anmeldeinformationen, um die Ziel-IAM-Rolle zu übernehmen. Durch diesen Vorgang erhält Ihr Pod temporäre Anmeldeinformationen, für die die in der Zielrolle definierten Berechtigungen gelten, sodass Sie sicher auf Ressourcen in anderen AWS Konten zugreifen können.
Überlegungen zum Caching
Aufgrund von Caching-Mechanismen werden Aktualisierungen einer IAM-Rolle in einer vorhandenen Pod-Identity-Zuordnung möglicherweise nicht sofort in den Pods wirksam, die auf Ihrem EKS-Cluster ausgeführt werden. Der Pod-Identity-Agent speichert IAM-Anmeldedaten basierend auf der Konfiguration der Zuordnung zum Zeitpunkt des Abrufs der Anmeldedaten zwischen. Wenn die Zuordnung nur eine EKS-Pod-Identity-Rolle und keine Ziel-IAM-Rolle enthält, bleiben die im Cache gespeicherten Anmeldedaten 6 Stunden lang gültig. Wenn die Zuordnung sowohl die EKS-Pod-Identity-Rolle ARN als auch eine Ziel-IAM-Rolle enthält, bleiben die im Cache gespeicherten Anmeldeinformationen 59 Minuten lang gültig. Durch das Ändern einer vorhandenen Zuordnung, z. B. durch Aktualisieren der ARN der EKS-Pod-Identity-Rolle oder Hinzufügen einer Ziel-IAM-Rolle, wird der vorhandene Cache nicht zurückgesetzt. Daher erkennt der Agent Aktualisierungen erst, wenn die zwischengespeicherten Anmeldedaten aktualisiert werden. Um Änderungen schneller anzuwenden, können Sie die vorhandenen Pods neu erstellen. Andernfalls müssen Sie warten, bis der Cache abgelaufen ist.
Schritt 1: Erstellen und Zuordnen einer Ziel-IAM-Rolle
In diesem Schritt erstellen Sie eine sichere Vertrauenskette, indem Sie eine Ziel-IAM-Rolle erstellen und konfigurieren. Zur Veranschaulichung erstellen wir eine neue Target-IAM-Rolle, um eine Vertrauenskette zwischen zwei AWS Konten einzurichten: Die EKS-Pod-Identity-Rolle (z. B.eks-pod-identity-primary-role) im AWS Konto des EKS-Clusters erhält die Erlaubnis, die Target-IAM-Rolle (z. B.eks-pod-identity-aws-resources) in Ihrem Zielkonto zu übernehmen, wodurch der Zugriff auf AWS Ressourcen wie Amazon S3 S3-Buckets ermöglicht wird.
Ziel-IAM-Rolle erstellen
-
Öffnen Sie die Amazon IAM-Konsole
. -
Vergewissern Sie sich in der oberen Navigationsleiste, dass Sie bei dem Konto angemeldet sind, das die AWS Ressourcen (wie S3-Buckets oder DynamoDB-Tabellen) für Ihre Target IAM-Rolle enthält.
-
Wählen Sie im linken Navigationsbereich Roles aus.
-
Wählen Sie die Schaltfläche „Rolle erstellen“ und anschließend „ AWS Konto“ unter „Vertrauenswürdiger Entitätstyp“.
-
Wählen Sie Anderes AWS Konto, geben Sie Ihre AWS Kontonummer ein (das Konto, für das Ihre EKS Pod Identity-Rolle existiert) und wählen Sie dann Weiter.
-
Fügen Sie die Berechtigungsrichtlinien hinzu, die Sie der Rolle zuordnen möchten (z. B. AmazonS3FullAccess), und wählen Sie dann Weiter.
-
Geben Sie einen Rollennamen ein, z. B.
MyCustomIAMTargetRole, und wählen Sie dann Rolle erstellen aus.
Aktualisierung der Vertrauensrichtlinie für die Ziel-IAM-Rolle
-
Nach der Erstellung der Rolle werden Sie zur Liste Rollen zurückgeleitet. Suchen und wählen Sie die neue Rolle aus, die Sie im vorherigen Schritt erstellt haben (z. B.
MyCustomIAMTargetRole). -
Wählen Sie den Tab Vertraunsbeziehungen.
-
Klicken Sie auf der rechten Seite auf Vertrauensrichtlinie bearbeiten.
-
Ersetzen Sie im Richtlinien-Editor die Standard-JSON-Datei durch Ihre Vertrauensrichtlinie. Ersetzen Sie die Platzhalterwerte für den Rollennamen und
111122223333im ARN der IAM-Rolle durch die AWS Konto-ID, die Ihren EKS-Cluster hostet. Sie können PrincipalTags in der Rollenvertrauensrichtlinie optional auch festlegen, dass nur bestimmte Dienstkonten aus einem bestimmten Cluster und Namespace Ihre Zielrolle übernehmen. Beispiel:
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:RequestTag/eks-cluster-arn": "arn:aws:eks:us-east-1:111122223333:cluster/example-cluster", "aws:RequestTag/kubernetes-namespace": "ExampleNameSpace", "aws:RequestTag/kubernetes-service-account": "ExampleServiceAccountName" }, "ArnEquals": { "aws:PrincipalARN": "arn:aws:iam::111122223333:role/eks-pod-identity-primary-role" } } } ] }
Mit der obigen Richtlinienrichtlinie kann die Rolle eks-pod-identeity-primary-role aus dem AWS Konto 111122223333 mit den entsprechenden EKS Pod Identity-Sitzungstags diese Rolle übernehmen.
Wenn Sie Sitzungs-Tags in Ihrer EKS-Pod-Identität deaktiviert haben, legt die EKS Pod Identity beim Übernehmen einer Ziel-Rolle auch die sts:ExternalId mit Informationen zum Cluster, Namespace und Servicekonto eines Pods fest.
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "region/111122223333/cluster-name/namespace/service-account-name" }, "ArnEquals": { "aws:PrincipalARN": "arn:aws:iam::111122223333:role/eks-pod-identity-primary-role" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:TagSession" } ] }
Die oben genannte Richtlinie trägt dazu bei, dass nur der erwartete Cluster, Namespace und das Servicekonto die Zielrolle übernehmen können.
Aktualisierung der Berechtigungsrichtlinie für die EKS-Pod-Identity-Rolle
In diesem Schritt aktualisieren Sie die Berechtigungsrichtlinie der EKS-Pod-Identity-Rolle, die Ihrem Amazon-EKS-Cluster zugeordnet ist, indem Sie die Ziel-IAM-Rolle ARN als Ressource hinzufügen.
-
Öffnen Sie die Amazon-EKS-Konsole
. -
Wählen Sie im linken Navigationsbereich Cluster und anschließend den Namen des EKS-Clusters, den Sie ändern möchten.
-
Wählen Sie die Registerkarte Zugriff aus.
-
Wählen Sie unter Pod Identity-Zuordnungen Ihre EKS-Pod-Identity-Rolle aus.
-
Wählen Sie Berechtigungen, Berechtigungen hinzufügen und anschließend Inline-Richtlinie erstellen aus.
-
Wählen Sie auf der rechten Seite JSON aus.
-
Ersetzen Sie im Richtlinien-Editor die Standard-JSON-Datei durch Ihre Berechtigungsrichtlinie. Ersetzen Sie den Platzhalterwert für den Rollennamen und
222233334444in der IAM-Rolle ARN durch Ihre Ziel-IAM-Rolle. Beispiel:
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Resource": "arn:aws:iam::222233334444:role/eks-pod-identity-aws-resources" } ] }
Schritt 2: Zuordnung der Ziel-IAM-Rolle zu einem Kubernetes-Servicekonto
In diesem Schritt erstellen Sie eine Zuordnung zwischen der Ziel-IAM-Rolle und dem Kubernetes-Servicekonto in Ihrem EKS-Cluster.
-
Öffnen Sie die Amazon-EKS-Konsole
. -
Wählen Sie im linken Navigationsbereich Cluster und anschließend den Namen des Clusters aus, zu dem Sie die Zuordnung hinzufügen möchten.
-
Wählen Sie die Registerkarte Zugriff aus.
-
Wählen Sie in den Pod-Identity-Zuordnungen die Option Erstellen aus.
-
Wählen Sie die EKS-Pod-Identity-Rolle in der IAM-Rolle für Ihre Workloads aus.
-
Wählen Sie die Ziel-IAM-Rolle in der Ziel-IAM-Rolle aus, die von der EKS-Pod-Identity-Rolle übernommen werden soll.
-
Geben Sie im Feld Kubernetes-Namespace den Namen des Namespace ein, in dem Sie die Zuordnung erstellen möchten (z. B.
my-app-namespace). Dies definiert, wo sich das Servicekonto befindet. -
Geben Sie im Feld Kubernetes-Servicekonto den Namen des Servicekontos ein (z. B.
my-service-account), das die IAM-Anmeldeinformationen verwenden soll. Dadurch wird die IAM-Rolle dem Servicekonto zugeordnet. -
Wählen Sie Erstellen aus, um die Zuordnung zu erstellen.