Erfahren Sie, wie Pods Zugriff auf AWS Dienste EKS Pod Identity gewährt - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle 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.

Erfahren Sie, wie Pods Zugriff auf AWS Dienste EKS Pod Identity gewährt

Anwendungen in Containern Pod von a können ein AWS SDK oder das verwenden AWS CLI , um API Anfragen an die AWS-Services Verwendung von AWS Identity and Access Management (IAM) -Berechtigungen zu stellen. Anwendungen müssen ihre AWS API Anfragen mit AWS Anmeldeinformationen signieren.

EKSPod-Identitäten bieten die Möglichkeit, Anmeldeinformationen für Ihre Anwendungen zu verwalten, ähnlich wie EC2 Amazon-Instance-Profile Anmeldeinformationen für EC2 Amazon-Instances bereitstellen. Anstatt Ihre AWS Anmeldeinformationen zu erstellen und an die Container zu verteilen oder die Rolle der EC2 Amazon-Instance zu verwenden, verknüpfen Sie eine IAM Rolle mit einem Kubernetes Dienstkonto und konfigurieren Ihr Konto für Pods die Verwendung des Dienstkontos.

Jede EKS Pod Identity-Zuordnung ordnet einem Dienstkonto in einem Namespace im angegebenen Cluster eine Rolle zu. Wenn Sie dieselbe Anwendung in mehreren Clustern haben, können Sie in jedem Cluster identische Zuordnungen vornehmen, ohne die Vertrauensrichtlinie der Rolle zu ändern.

Wenn ein Pod ein Dienstkonto verwendet, das über eine Verknüpfung verfügt, EKS legt Amazon Umgebungsvariablen in den Containern des Pods fest. Die Umgebungsvariablen konfigurieren die AWS SDKs, einschließlich der AWS CLI, für die Verwendung der EKS Pod-Identity-Anmeldeinformationen.

Vorteile von EKS Pod-Identitäten

EKSPod-Identitäten bieten die folgenden Vorteile:

  • Geringste Rechte — Sie können IAM Berechtigungen auf ein Dienstkonto beschränken, und nur diejenigen, Pods die dieses Dienstkonto verwenden, haben Zugriff auf diese Berechtigungen. Mit diesem Feature entfällt auch die Notwendigkeit von Drittanbieterlösungen wie kiam oder kube2iam.

  • Isolierung von Anmeldeinformationen — Ein Pod's Container kann nur Anmeldeinformationen für die IAM Rolle abrufen, die dem Dienstkonto zugeordnet ist, das der Container verwendet. Ein Container hat nie Zugriff auf Anmeldeinformationen, die von anderen Containern in anderen Pods verwendet werden. Bei der Verwendung von Pod-Identitäten verfügen die Pod's Container auch über die der EKSIAMAmazon-Knotenrolle zugewiesenen Berechtigungen, es sei denn, Sie blockieren den Pod Zugriff auf den Amazon EC2 Instance Metadata Service (IMDS). Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

  • Überprüfbarkeit — Zugriffs- und Ereignisprotokollierung sind über verfügbar AWS CloudTrail , um nachträgliche Prüfungen zu erleichtern.

EKSPod Identity ist eine einfachere Methode alsIAM-Rollen für Servicekonten, da diese Methode keine Identitätsanbieter verwendetOIDC. EKSPod Identity bietet die folgenden Verbesserungen:

  • Unabhängiger Betrieb – In vielen Organisationen liegt die Verantwortung für die Erstellung von OIDC-Identitätsanbietern bei anderen Teams als für die Verwaltung der Kubernetes-Cluster. EKSPod Identity verfügt über eine klare Aufgabentrennung, bei der die gesamte Konfiguration der EKS Pod Identity-Verknüpfungen in Amazon EKS und die gesamte Konfiguration der IAM Berechtigungen in erfolgtIAM.

  • Wiederverwendbarkeit — EKS Pod Identity verwendet einen einzigen IAM Prinzipal anstelle der separaten Prinzipale für jeden Cluster, den IAM Rollen für Dienstkonten verwenden. Ihr IAM Administrator fügt der Vertrauensrichtlinie jeder Rolle den folgenden Prinzipal hinzu, damit sie von EKS Pod Identities verwendet werden kann.

    "Principal": { "Service": "pods.eks.amazonaws.com" }
  • Skalierbarkeit — Jeder Satz temporärer Anmeldeinformationen wird vom EKS Auth Dienst in EKS Pod Identity übernommen und nicht von jedem AWS SDK, den Sie in jedem Pod ausführen. Anschließend gibt der Amazon EKS Pod Identity Agent, der auf jedem Knoten ausgeführt wird, die Anmeldeinformationen an den ausSDKs. Dadurch wird die Last für jeden Knoten reduziert und nicht in jedem Pod dupliziert. Weitere Details zu diesem Prozess finden Sie unter Verstehe, wie EKS Pod Identity funktioniert.

Weitere Informationen zum Vergleich der beiden Alternativen finden Sie unter Gewähren Sie Kubernetes-Workloads Zugriff auf die Verwendung von Service AWS Accounts Kubernetes.

Überblick über die Einrichtung von EKS Pod-Identitäten

Gehen Sie wie folgt vor, um EKS Pod-Identitäten zu aktivieren:

  1. Richten Sie den Amazon EKS Pod Identity Agent ein – Sie führen dieses Verfahren für jeden Cluster nur einmal durch.

  2. Einem Kubernetes Dienstkonto eine IAM Rolle zuweisen – Führen Sie dieses Verfahren für jeden eindeutigen Satz von Berechtigungen aus, über den eine Anwendung verfügen soll.

  3. Für pods den Zugriff auf AWS Dienste mit Dienstkonten konfigurieren— Führen Sie dieses Verfahren für alle aus, auf Pod die Sie Zugriff AWS-Services benötigen.

  4. Verwenden Sie Pod Identity mit dem AWS SDK— Vergewissern Sie sich, dass AWS SDK der Workload eine unterstützte Version verwendet und dass der Workload die standardmäßige Anmeldeinformationskette verwendet.

EKSÜberlegungen zur Pod-Identität

  • Sie können jedem Kubernetes Dienstkonto in jedem Cluster eine IAM Rolle zuordnen. Sie können ändern, welche Rolle dem Dienstkonto zugeordnet ist, indem Sie die EKS Pod Identity-Zuordnung bearbeiten.

  • Sie können nur Rollen zuordnen, die sich im selben AWS-Konto Cluster befinden. Sie können den Zugriff von einem anderen Konto auf die Rolle in diesem Konto delegieren, die Sie für die Verwendung von EKS Pod-Identitäten konfigurieren. Eine Anleitung zum Delegieren von Zugriff und AssumeRole finden Sie unter AWS Kontoübergreifendes Delegieren des Zugriffs mithilfe von IAM Rollen im Benutzerhandbuch. IAM

  • Der EKS Pod Identity Agent ist erforderlich. Er wird als Kubernetes DaemonSet auf Ihren Knoten ausgeführt und stellt Anmeldeinformationen nur für Pods auf dem Knoten bereit, auf dem er ausgeführt wird. Weitere Informationen zur Kompatibilität mit dem EKS Pod Identity Agent finden Sie im folgenden AbschnittEKSEinschränkungen der Pod-Identität.

  • Der EKS Pod Identity Agent verwendet den hostNetwork des Knotens und verwendet Port 80 und Port 2703 an einer link-lokalen Adresse auf dem Knoten. Diese Adresse ist 169.254.170.23 für IPv4- und [fd00:ec2::23] für IPv6-Cluster.

    Wenn Sie IPv6 Adressen deaktivieren oder IPv6 Localhost-IP-Adressen anderweitig verhindern, kann der Agent nicht gestartet werden. Um den Agenten auf Knoten zu starten, die nicht verwendet werden könnenIPv6, folgen Sie den Schritten unter IPv6Im EKS Pod Identity Agent deaktivieren So deaktivieren Sie die IPv6 Konfiguration.

EKSPod Identity-Cluster-Versionen

Um EKS Pod-Identitäten verwenden zu können, muss der Cluster über eine Plattformversion verfügen, die mit der in der folgenden Tabelle aufgeführten Version identisch oder höher ist, oder über eine Kubernetes Version, die später als die in der Tabelle aufgeführten Versionen ist.

Kubernetes-Version Plattformversion
1.30 eks.2
1.29 eks.1
1.28 eks.4
1.27 eks.8
1.26 eks.9
1.25 eks.10
1.24 eks.13

Mit EKS Pod Identity kompatible Zusatzversionen

Wichtig

Um EKS Pod Identity mit einem EKS Add-on zu verwenden, müssen Sie die EKS Pod Identity-Zuordnung manuell erstellen. Wählen Sie in der Add-On-Konfiguration keine IAM Rolle aus AWS Management Console, diese Rolle wird nur mit verwendetIRSA.

EKSAmazon-Add-Ons und selbstverwaltete Add-Ons, für die IAM Anmeldeinformationen erforderlich sind, können EKS Pod Identity IRSA oder die Instance-Rolle verwenden. Die Liste der Add-Ons, die IAM Anmeldeinformationen verwenden, die EKS Pod Identity unterstützen, lautet wie folgt:

  • Amazon VPC CNI plugin for Kubernetes1.15.5-eksbuild.1oder später

  • AWS Load Balancer Controller2.7.0oder später. Beachten Sie, dass das AWS Load Balancer Controller nicht als EKS Add-on, sondern als selbstverwaltetes Add-On verfügbar ist.

EKSEinschränkungen der Pod-Identität

EKSPod-Identitäten sind auf folgenden Plattformen verfügbar:

  • Die im vorherigen Thema aufgeführten EKS Amazon-Cluster-VersionenEKSPod Identity-Cluster-Versionen.

  • Worker-Knoten im Cluster, bei denen es sich um EC2 Linux-Amazon-Instances handelt.

EKSPod-Identitäten sind in folgenden Fällen nicht verfügbar:

  • AWS Outposts.

  • Amazon EKS überall.

  • KubernetesCluster, die Sie auf Amazon erstellen und ausführenEC2. Die EKS Pod Identity-Komponenten sind nur bei Amazon erhältlichEKS.

Sie können EKS Pod Identities nicht verwenden mit:

  • Pods, die überall außer EC2 Linux-Amazon-Instances laufen. Linux- und Windows-Pods, die auf laufen, werden AWS Fargate (Fargate) nicht unterstützt. Pods, die auf Windows EC2 Amazon-Instances ausgeführt werden, werden nicht unterstützt.

  • EKSAmazon-Add-Ons, für die IAM Anmeldeinformationen erforderlich sind. Die EKS Add-Ons können stattdessen nur IAMRollen für Dienstkonten verwenden. Die Liste der EKS Add-Ons, die IAM Anmeldeinformationen verwenden, umfasst:

    • Die CSI Speichertreiber: EBSCSI, EFSCSI, Amazon FSx for CSI Lustre-Treiber, Amazon FSx FSx for NetApp ONTAP CSI Open-Treiber, Amazon File ZFS CSI CSI Cache-Treiber, AWS Secrets and Configuration Provider (ASCP) für den Kubernetes Secrets CSI Store-Treiber

    Anmerkung

    Wenn diese Controller, Treiber und Plug-ins als selbstverwaltete Add-Ons statt als EKS Add-Ons installiert werden, unterstützen sie EKS Pod-Identitäten, sofern sie auf die neueste Version aktualisiert wurden. AWS SDKs