Ansichten:
Profilanwendbarkeit: Stufe 1
Kubernetes-Workloads sollten keine Cluster-Knoten-Servicekonten verwenden, um sich bei Amazon EKS-APIs zu authentifizieren. Jeder Kubernetes-Workload, der 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, umfassen 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 Rechtevergabe 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 Standarddienstkonto 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-Instanzprofile Anmeldedaten für Amazon EC2-Instanzen bereitstellen.
Anstatt Ihre AWS-Anmeldedaten an die Container zu verteilen oder die Rolle der Amazon EC2-Instanz 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 der IAM-Rollen für Dienstkonten bietet die folgenden Vorteile:
  • Geringste Berechtigung: 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 macht auch den Einsatz von Drittanbieterlösungen wie kiam oder kube2iam überflüssig.
  • Anmeldeinformationen-Isolation: 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 rückblickende Prüfung zu gewährleisten.