IAM-Rollen für Servicekonten - Amazon EKS

IAM-Rollen für Servicekonten

Sie können eine IAM-Rolle mit einem Kubernetes-Dienstkonto verknüpfen. Dieses Servicekonto kann dann AWS-Berechtigungen für die Container in einem beliebigen pod bereitstellen, der dieses Servicekonto verwendet. Mit dieser Funktion müssen Sie der Amazon-EKS-Knoten-IAM-Rolle-Rolle keine erweiterten Berechtigungen mehr bereitstellen, damit pods auf diesem Knoten AWS-APIs aufrufen können.

Anwendungen müssen ihre AWS-API-Anforderungen mit AWS-Anmeldeinformationen signieren. Diese Funktion bietet eine Strategie für die Verwaltung von Anmeldeinformationen für Ihre Anwendungen, ähnlich der Art und Weise, wie Amazon-EC2-Instance-Profile Anmeldeinformationen für Amazon-EC2-Instances bereitstellen. Anstatt Ihre AWS-Anmeldeinformationen zu erstellen und sie auf die Container zu verteilen oder die Rolle der Amazon-EC2-Instance zu verwenden, können Sie eine IAM-Rolle einem Kubernetes-Servicekonto zuordnen. Die Anwendungen in den Containern des pod können dann das AWS SDK oder die AWS CLI verwenden, um API-Anfragen an autorisierte AWS-Services zu senden.

Wichtig

Auch wenn Sie einem Kubernetes-Dienstkonto eine IAM-Rolle zuweisen, hat der pod weiterhin die dem Amazon-EKS-Knoten-IAM-Rolle zugewiesenen Berechtigungen, es sei denn, Sie blockieren den pod-Zugriff auf das IMDS. Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

Die Funktion IAM-Rollen für Servicekonten bietet die folgenden Vorteile:

  • Geringste Rechte – Durch die Verwendung der Funktion IAM-Rollen für Dienstkonten müssen Sie der Knoten-IAM-Rolle keine erweiterten Berechtigungen mehr erteilen, damit pods auf diesem Knoten AWS-APIs aufrufen können. Sie können IAM-Berechtigungen auf ein Servicekonto beschränken, und nur pods, die dieses Servicekonto verwenden, haben Zugriff auf diese Berechtigungen. Mit dieser Funktion entfällt auch die Notwendigkeit von Drittanbieterlösungen wie kiam oder kube2iam.

  • Isolation von Anmeldeinformationen— Ein Container kann nur Anmeldeinformationen für die IAM-Rolle abrufen, die dem Servicekonto zugeordnet ist, zu dem er gehört. Ein Container hat nie Zugriff auf Anmeldeinformationen, die für einen anderen Container bestimmt sind, der zu einem anderen pod gehört.

  • Auditierbarkeit – Die Zugriffs- und Ereignisprotokollierung ist über CloudTrail verfügbar, um eine nachträgliche Prüfung zu ermöglichen.

Aktivieren Sie Dienstkonten für den Zugriff auf AWS-Ressourcen in drei Schritten

  1. Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster – Sie müssen dies nur einmal für einen Cluster tun.

  2. Erstellen Sie eine IAM-Rolle und fügen Sie ihr eine IAM-Richtlinie mit den Berechtigungen hinzu, die Ihre Dienstkonten benötigen – Wir empfehlen, separate Rollen für jede eindeutige Sammlung von Berechtigungen zu erstellen, die pods benötigen.

  3. Ordnen Sie eine IAM-Rolle zu einem Servicekonto zu – Führen Sie diese Aufgabe für jedes Kubernetes-Servicekonto aus, das Zugriff auf AWS-Ressourcen benötigt.

  4. Konfigurieren Sie den AWS Security Token Service-Endpunkttyp für ein Servicekonto – Sie können diese Aufgabe später für ein Servicekonto durchführen, wenn Ihr Cluster die Version 1.18 oder höher hat.