Profilanwendbarkeit: Stufe 1
Kubernetes-Workloads sollten keine Clusterknoten-Servicekonten verwenden, um sich
bei Amazon EKS-APIs zu authentifizieren. Jedes Kubernetes-Workload, das sich bei anderen
AWS-Diensten mit AWS IAM authentifizieren muss, sollte mit einem dedizierten Servicekonto
ausgestattet werden.
Manuelle Ansätze zur Authentifizierung von Kubernetes-Workloads, die auf Amazon EKS
gegen AWS-APIs laufen, beinhalten das Speichern von Servicekonto-Schlüsseln als Kubernetes-Geheimnis
(was manuelle Schlüsselrotation und potenzielle Schlüsselkompromittierung einführt)
oder die Verwendung des IAM-Servicekontos der zugrunde liegenden Knoten, was das Prinzip
der minimalen Rechte auf einem Multi-Tenant-Knoten verletzt, wenn ein Pod Zugriff
auf einen Dienst benötigt, aber jeder andere Pod auf dem Knoten, der das Servicekonto
verwendet, nicht.
Prüfung
Überprüfen Sie für jeden Namespace im Cluster die Rechte, die dem Standard-Servicekonto
zugewiesen sind, und stellen Sie sicher, dass ihm keine Rollen oder Clusterrollen
zugewiesen sind, außer den Standardrollen.
Stellen Sie außerdem sicher, dass die Einstellung
automountServiceAccountToken: false für jedes Standard-Servicekonto vorhanden ist.Wiederherstellung
Mit IAM-Rollen für Servicekonten auf Amazon EKS-Clustern können Sie eine IAM-Rolle
mit einem Kubernetes-Servicekonto verknüpfen. Dieses Servicekonto kann dann AWS-Berechtigungen
für die Container in jedem Pod bereitstellen, der dieses Servicekonto verwendet. Mit
dieser Funktion müssen Sie der IAM-Rolle des Worker-Knotens keine erweiterten Berechtigungen
mehr erteilen, damit Pods auf diesem Knoten AWS-APIs aufrufen können.
Anwendungen müssen ihre AWS API-Anfragen mit AWS-Anmeldedaten signieren. Diese Funktion
bietet eine Strategie zur Verwaltung von Anmeldedaten für Ihre Anwendungen, ähnlich
wie Amazon EC2-Instance-Profile Anmeldedaten für Amazon EC2-Instances bereitstellen.
Anstatt Ihre AWS-Anmeldedaten an die Container zu erstellen und zu verteilen oder
die Rolle der Amazon EC2-Instance zu verwenden, können Sie eine IAM-Rolle mit einem
Kubernetes-Dienstkonto verknüpfen. Die Anwendungen in den Containern des Pods können
dann ein AWS SDK oder die AWS CLI verwenden, um API-Anfragen an autorisierte AWS-Dienste
zu stellen.
Die Funktion "IAM-Rollen für Dienstkonten" bietet die folgenden Vorteile:
- Minimaler Zugriff: Durch die Verwendung der IAM-Rollen für Servicekonten müssen Sie der IAM-Rolle des Worker-Knotens 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. Diese Funktion beseitigt auch die Notwendigkeit für Drittanbieterlösungen wie kiam oder kube2iam.
- Anmeldeinformationen-Isolierung: Ein Container kann nur Anmeldeinformationen für die IAM-Rolle abrufen, die dem Dienstkonto zugeordnet ist, zu dem er gehört. Ein Container hat niemals Zugriff auf Anmeldeinformationen, die für einen anderen Container bestimmt sind, der zu einem anderen Pod gehört.
- Prüfbarkeit: Zugriffs- und Ereignisprotokollierung ist über CloudTrail verfügbar, um eine nachträgliche Prüfung zu gewährleisten.
Um Erste Schritte zu machen, sehen Sie sich die Liste hier an: Aktivieren von IAM-Rollen
für Dienstkonten in Ihrem Cluster.
Für eine vollständige Anleitung mit eksctl siehe Anleitung: Aktualisieren eines DaemonSets
zur Verwendung von IAM für Servicekonten.
