Zugreifen auf AWS Ressourcen mithilfe von EKS Pod Identity Target IAM-Rollen - Amazon EKS

Hilf mit, diese Seite zu verbessern

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.

Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, 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 denselben oder unterschiedlichen AWS Konten vorhanden sind. In dieser Anleitung erfahren Sie, wie Sie den Zugriff zwischen diesen Konten mithilfe von EKS Pod Identity einrichten, sodass Ihre Kubernetes-Pods auf andere Ressourcen zugreifen können. AWS

Voraussetzungen

Bevor Sie beginnen, stellen Sie 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 (wie S3-Buckets oder DynamoDB-Tabellen). Die EKS-Pod-Identity-Rolle muss sich aufgrund der PassRoleIAM-Anforderungen im Konto Ihres EKS-Clusters befinden, während sich die Ziel-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 nacheinander zwei Rollenannahmen durch: zuerst übernimmt sie die EKS-Pod-Identity-Rolle und verwendet dann diese Anmeldeinformationen, um die Ziel-IAM-Rolle anzunehmen. Durch diesen Vorgang erhält Ihr Pod temporäre Anmeldeinformationen mit den in der Zielrolle definierten Berechtigungen, sodass ein sicherer Zugriff auf Ressourcen in anderen AWS Konten möglich ist.

Überlegungen zum Zwischenspeichern

Aufgrund von Caching-Mechanismen werden Aktualisierungen einer IAM-Rolle in einer bestehenden Pod-Identity-Zuordnung möglicherweise nicht sofort in den Pods wirksam, die auf Ihrem EKS-Cluster ausgeführt werden. Der Pod Identity Agent speichert die IAM-Anmeldeinformationen auf der Grundlage der Konfiguration der Zuordnung zum Zeitpunkt des Abrufs der Anmeldeinformationen im Cache. Wenn die Zuordnung nur einen ARN für die EKS-Pod-Identity-Rolle und keine Ziel-IAM-Rolle enthält, sind die zwischengespeicherten Anmeldeinformationen 6 Stunden lang gültig. Wenn die Zuordnung sowohl den ARN der EKS-Pod-Identity-Rolle als auch eine Ziel-IAM-Rolle umfasst, sind die zwischengespeicherten Anmeldeinformationen 59 Minuten lang gültig. Durch das Ändern einer vorhandenen Zuordnung, z. B. das Aktualisieren des ARN der EKS-Pod-Identity-Rolle oder das Hinzufügen einer Ziel-IAM-Rolle, wird der vorhandene Cache nicht zurückgesetzt. Daher erkennt der Agent Aktualisierungen erst, wenn die zwischengespeicherten Anmeldeinformationen aktualisiert werden. Um Änderungen früher zu übernehmen, können Sie die vorhandenen Pods neu erstellen. Andernfalls müssen Sie warten, bis der Cache abläuft.

Schritt 1: Eine Ziel-IAM-Rolle erstellen und zuordnen

In diesem Schritt richten Sie eine sichere Vertrauenskette ein, 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.

Erstellen Sie die Ziel-IAM-Rolle

  1. Öffnen Sie die Amazon IAM-Konsole.

  2. 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.

  3. Wählen Sie im linken Navigationsbereich Roles aus.

  4. Wählen Sie die Schaltfläche „Rolle erstellen“ und anschließend „ AWS Konto“ unter „Vertrauenswürdiger Entitätstyp“.

  5. 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.

  6. Fügen Sie die Berechtigungsrichtlinien hinzu, die Sie der Rolle zuordnen möchten (z. B. AmazonS3FullAccess), und wählen Sie dann Weiter.

  7. Geben Sie einen Rollennamen ein, z. B.MyCustomIAMTargetRole, und wählen Sie dann Rolle erstellen aus.

Aktualisieren Sie die Vertrauensrichtlinie für die IAM-Zielrolle

  1. Nachdem Sie die Rolle erstellt haben, kehren Sie zur Rollenliste zurück. Suchen Sie die neue Rolle, die Sie im vorherigen Schritt erstellt haben, und wählen Sie sie aus (z. B.MyCustomIAMTargetRole).

  2. Wählen Sie den Tab Vertraunsbeziehungen.

  3. Klicken Sie auf der rechten Seite auf Vertrauensrichtlinie bearbeiten.

  4. Ersetzen Sie im Richtlinien-Editor den Standard-JSON durch Ihre Vertrauensrichtlinie. Ersetzen Sie die Platzhalterwerte für den Rollennamen und 111122223333 im ARN der IAM-Rolle durch die AWS Konto-ID, die Ihren EKS-Cluster hostet. Zum Beispiel:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:TagSession" } ] }

Aktualisieren Sie die 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 den Target IAM Role ARN als Ressource hinzufügen.

  1. Öffnen Sie die Amazon-EKS-Konsole.

  2. Wählen Sie im linken Navigationsbereich Clusters und dann den Namen Ihres EKS-Clusters aus.

  3. Wählen Sie die Registerkarte Zugriff aus.

  4. Wählen Sie unter Pod Identity-Verknüpfungen Ihre EKS Pod Identity-Rolle aus.

  5. Wählen Sie Berechtigungen, Berechtigungen hinzufügen und dann Inline-Richtlinie erstellen aus.

  6. Wählen Sie auf der rechten Seite JSON aus.

  7. Ersetzen Sie im Richtlinien-Editor den Standard-JSON durch Ihre Berechtigungsrichtlinie. Ersetzen Sie den Platzhalterwert für den Rollennamen und 222233334444 im ARN der IAM-Rolle durch Ihre Ziel-IAM-Rolle. Zum 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: Ordnen Sie die Ziel-IAM-Rolle einem Kubernetes-Dienstkonto zu

In diesem Schritt erstellen Sie eine Zuordnung zwischen der Target-IAM-Rolle und dem Kubernetes-Dienstkonto in Ihrem EKS-Cluster.

  1. Öffnen Sie die Amazon-EKS-Konsole.

  2. Wählen Sie im linken Navigationsbereich Cluster und dann den Namen des Clusters aus, dem Sie die Zuordnung hinzufügen möchten.

  3. Wählen Sie die Registerkarte Zugriff aus.

  4. Wählen Sie in den Pod-Identity-Zuordnungen die Option Erstellen aus.

  5. Wählen Sie die EKS Pod Identity-Rolle in der IAM-Rolle aus, die Ihre Workloads annehmen sollen.

  6. Wählen Sie in der Target-IAM-Rolle die Target-IAM-Rolle aus, die von der EKS Pod Identity-Rolle übernommen werden soll.

  7. Geben Sie im Feld Kubernetes-Namespace den Namen des Namespaces ein, in dem Sie die Zuordnung erstellen möchten (z. B.). my-app-namespace Dies definiert, wo sich das Dienstkonto befindet.

  8. Geben Sie im Feld Kubernetes-Dienstkonto den Namen des Dienstkontos ein (z. B.my-service-account), das die IAM-Anmeldeinformationen verwenden wird. Dadurch wird die IAM-Rolle mit dem Dienstkonto verknüpft.

  9. Wählen Sie Erstellen aus, um die Zuordnung zu erstellen.

(Optional) Schritt 3: Fügen Sie einer IAM-Zielrolle externe Berechtigungen hinzu

Manchmal müssen Sie möglicherweise einer dritten Partei Zugriff auf Ihre AWS Ressourcen gewähren (Delegiertenzugriff). Sie entscheiden sich beispielsweise dafür, ein Drittanbieter namens Example Corp mit der Überwachung Ihres AWS Kontos und der Kostenoptimierung zu beauftragen. Um Ihre täglichen Ausgaben verfolgen zu können, muss Example Corp auf Ihre AWS Ressourcen zugreifen. In diesem Fall empfehlen wir, der Vertrauensrichtlinie Ihrer IAM-Zielrolle eine hinzuzufügen, ExternalId um mögliche Probleme mit Confused Deputy zu vermeiden.

Bearbeiten Sie die Vertrauensrichtlinie

  1. Nachdem Sie die Rolle erstellt haben, kehren Sie zur Rollenliste zurück. Suchen Sie die neue Rolle, die Sie im vorherigen Schritt erstellt haben, und klicken Sie darauf (z. B.MyCustomIAMTargetRole).

  2. Wählen Sie den Tab Vertraunsbeziehungen.

  3. Klicken Sie auf der rechten Seite auf Vertrauensrichtlinie bearbeiten.

  4. Ersetzen Sie im Richtlinien-Editor den Standard-JSON durch Ihre Vertrauensrichtlinie. Ersetzen Sie den ExternalId Platzhalterwert füraws-region/other-account/cluster-name/namespace/service-account-name, wobei „Region“ die AWS Region Ihres Clusters, „111122223333“ die andere AWS Konto-ID, „Clustername“ der EKS-Clustername, „Namespace“ der Kubernetes-Namespace und "" der Kubernetes-Dienstkontoname ist. service-account-name Zum Beispiel:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "region/111122223333/cluster-name/namespace/service-account-name" } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws: iam::111122223333:role/eks-pod-identity-primary-role" }, "Action": "sts:TagSession" } ] }