Knowledge Center Monthly Newsletter - June 2025
Stay up to date with the latest from the Knowledge Center. See all new Knowledge Center articles published in the last month, and re:Post's top contributors.
Wie gewähre ich anderen IAM-Benutzern und -Rollen Zugriff auf einen Cluster, nachdem ich einen Cluster in Amazon EKS erstellt habe?
Wenn ich kubectl-Befehle verwende, um auf einen Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster zuzugreifen, erhalte ich die Fehlermeldung: „You must be logged in to the server (Unauthorized)“.
Kurzbeschreibung
Wenn der Benutzer oder die Rolle des AWS Identity and Access Management (IAM, Identitäts- und Zugriffsmanagement) einen Amazon EKS-Cluster erstellt, der sich von dem Cluster unterscheidet, den aws-iam-authenticator verwendet, erhalten Sie die Fehlermeldung Nicht autorisiert. Um dieses Problem zu beheben, konfigurieren Sie die rollenbasierte Zugriffskontrolle (RBAC) Ihres Amazon EKS-Clusters, um die IAM-Entität zu autorisieren. Weitere Informationen finden Sie unter Verwendung der RBAC-Autorisierung auf der Kubernetes-Website.
Nur der Ersteller des Amazon EKS-Clusters verfügt über system:masters-Berechtigungen zur Konfiguration des Clusters. Es gibt zwei Möglichkeiten, system:masters-Berechtigungen auf andere IAM-Benutzer und -Rollen auszudehnen:
- Nehmen Sie die Anmeldeinformationen des Cluster-Erstellers an. Fügen Sie dann die IAM-Rolle im Bereich mapRoles der aws-auth ConfigMap hinzu.
- Verwenden Sie EKS-Zugriffseinträge.
Wichtig: Es hat sich bewährt, cluster_creator nicht zur ConfigMap hinzuzufügen. Wenn Sie die ConfigMap falsch konfigurieren, verlieren alle IAM-Benutzer und -Rollen, einschließlich cluster_creator, möglicherweise dauerhaft den Zugriff auf den Amazon EKS-Cluster. Standardmäßig hat der cluster_creator Administratorzugriff auf den Cluster, den er erstellt hat, sodass Sie den cluster_creater nicht zur aws-auth ConfigMap hinzufügen müssen.
Hinweis: In der folgenden Lösung ist cluster_creator die IAM-Entität, die den Cluster in Amazon EKS erstellt. Der Benutzer, dem Sie Zugriff gewähren, wird designated_user bezeichnet.
Lösung
Hinweis: Wenn Sie beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhalten, finden Sie weitere Informationen unter Problembehandlung bei der AWS CLI. Stellen Sie außerdem sicher, dass Sie die neueste Version der AWS CLI verwenden.
Identifizieren des IAM-Benutzer oder der IAM-Rolle für den Clusterersteller
Identifizieren Sie die IAM-Entität für den Clusterersteller, die über den primären Zugriff auf die Konfiguration des Amazon EKS-Clusters verfügt. Um den Clusterersteller zu identifizieren, suchen Sie in AWS CloudTrail nach dem API-Aufruf CreateCluster und überprüfen Sie dann den Abschnitt userIdentity des API-Aufrufs.
Identifizieren Sie dann die IAM-Entität, der Sie die Autorisierung gewähren, nachdem Sie den Cluster erstellt haben.
Verwendung der aws-auth ConfigMap, um Zugriff auf den Cluster zu gewähren, wenn der cluster_creator ein IAM-Benutzer ist
Führen Sie die folgenden Schritte aus:
-
Installieren Sie kubectl auf Ihrem lokalen Host-Computer. Oder, wenn eine dedizierte Amazon Elastic Compute Cloud (Amazon EC2)-Instance vorliegt, auf der ein kubectl-Paket installiert ist, verwenden Sie SSH, um eine Verbindung zur Instance herzustellen.
-
Konfigurieren Sie auf demselben Host-Computer, auf dem kubectl installiert ist, die AWS CLI mit den Anmeldeinformationen des designated_user:
aws configure
-
Führen Sie den AWS CLI-Befehl get-caller-identity aus:
aws sts get-caller-identity
Die Ausgabe gibt die IAM-Benutzerdetails für den designated_user zurück:
{ "UserId": "#####################", "Account": "############", "Arn": "arn:aws:iam::############:user/designated_user" }
-
Listen Sie die Pods auf, die im Cluster des Standard-Namespace ausgeführt werden:
kubectl get pods --namespace default
In der Ausgabe wird die Fehlermeldung Nicht authorisiert angezeigt, da der designated_user nicht berechtigt ist, auf den Amazon EKS-Cluster zuzugreifen.
-
Konfigurieren Sie die AWS-Zugriffsschlüssel-ID und den geheimen AWS-Zugriffsschlüssel des cluster_creator.
Wenn Sie die Amazon EKS-Konsole verwendet haben, um den Cluster zu erstellen, konfigurieren Sie auf Ihrem lokalen Host-Computer den IAM-Benutzer oder die -Rolle cluster_creator in der AWS CLI:aws configure
Wenn Sie eksctl verwendet haben, um den Cluster zu erstellen, verwenden Sie die angegebenen Anmeldeinformationen für das AWS CLI-Profil, um die AWS CLI für die Ausführung von kubectl-Befehlen zu konfigurieren.
-
Stellen Sie sicher, dass der cluster_creator Zugriff auf den Cluster hat:
kubectl get pods
Sie erhalten die Fehlermeldung Nicht autorisiert nicht, und in der Ausgabe werden alle Pods aufgeführt, die im Standard-Namespace ausgeführt werden. Wenn die Ausgabe keine Ressourcen anzeigt, werden keine Pods im Standard-Namespace ausgeführt.
-
Um dem designated_user Zugriff auf den Cluster zu gewähren, fügen Sie den Abschnitt mapUsers Ihrer aws-auth.yaml-Datei hinzu. Weitere Informationen finden Sie unter Hinzufügen von IAM-Prinzipien zum Amazon EKS-Cluster.
-
Fügen Sie den designated_user dem Abschnitt mapUsers der Datei aws-auth.yaml hinzu, und speichern Sie anschließend die Datei.
-
Wenden Sie die neue ConfigMap auf die RBAC-Konfiguration des Clusters an:
kubectl apply -f aws-auth.yaml
-
Ändern Sie die AWS CLI-Konfiguration erneut, um die Anmeldeinformationen des designated_user zu verwenden:
aws configure
- Stellen Sie sicher, dass der designated_user Zugriff auf den Cluster hat:
kubectl get pods
Sie erhalten die Fehlermeldung Nicht autorisiert nicht, und in der Ausgabe werden alle Pods aufgeführt, die im Standard-Namespace ausgeführt werden. Wenn die Ausgabe keine Ressourcen anzeigt, werden keine Pods im Standard-Namespace ausgeführt.
Verwenden Sie aws-auth ConfigMap, um Zugriff auf den Cluster zu gewähren, wenn der cluster_creator eine IAM-Rolle ist
Wenn eine IAM-Rolle den Cluster anstelle eines IAM-Benutzers erstellt hat, können Sie keine Anmeldeinformationen verwenden. Stattdessen müssen Sie die IAM-Rolle übernehmen, die den Cluster erstellt hat, um dem designated_user Zugriff zu gewähren.
Führen Sie die folgenden Schritte aus:
-
Führen Sie den AWS CLI-Befehl get-caller-identity aus, um die IAM-Benutzerdetails des assume_role_user abzurufen:
aws sts get-caller-identity
-
Stellen Sie sicher, dass der assume_role_user Zugriff auf den Cluster hat:
kubectl get pods
In der Ausgabe wird die Fehlermeldung Nicht authorisiert angezeigt, da der designated_user nicht berechtigt ist, auf den Amazon EKS-Cluster zuzugreifen.
-
Erlauben Sie dem assume_role_user, die Rolle des cluster_creator zu übernehmen:
aws sts assume-role --role-arn arn:aws:iam:11122223333:role/cluster_creator --role-session-name test
Die Ausgabe zeigt die temporären IAM-Anmeldeinformationen für den assume_role_user.
-
Verwenden Sie die temporären IAM-Anmeldeinformationen, um die Umgebungsvariablen AWS_ACCESS_KEY_ID, AWS_SESSION_TOKEN und AWS_SECRET_ACCESS_KEY festzulegen:
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SESSION_TOKEN=EXAMPLETOKEN export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Die AWS CLI stuft die in den Umgebungsvariablen festgelegten Anmeldeinformationen ein und verwendet sie, um AWS-Services aufzurufen.
-
Stellen Sie sicher, dass die AWS CLI die angenommene Rolle für den cluster_creator verwendet:
aws sts get-caller-identity
-
Um dem designated_user Zugriff auf den Cluster zu gewähren, fügen Sie den Abschnitt mapUsers Ihrer aws-auth.yaml-Datei hinzu.
-
Fügen Sie den designated_user dem Abschnitt mapUsers der Datei aws-auth.yaml hinzu, und speichern Sie anschließend die Datei.
-
Wenden Sie die neue Konfiguration auf die RBAC-Konfiguration des Amazon EKS-Clusters an:
kubectl apply -f aws-auth.yaml
-
Entfernen Sie die folgenden Umgebungsvariablen:
unset AWS_ACCESS_KEY_ID unset AWS_SESSION_TOKEN unset AWS_SECRET_ACCESS_KEY
-
Führen Sie den AWS CLI-Befehl get-caller-identity aus, um die IAM-Benutzerdetails des designated_user abzurufen:
aws sts get-caller-identity
- Vergewissern Sie sicher, dass der designated_user Zugriff auf den Cluster hat:
kubectl get pods
Sie erhalten die Fehlermeldung Nicht autorisiert nicht, und in der Ausgabe werden alle Pods aufgeführt, die im Standard-Namespace ausgeführt werden. Wenn die Ausgabe keine Ressourcen anzeigt, werden keine Pods im Standard-Namespace ausgeführt.
**Hinweis:**Wenn Sie eksctl verwenden, finden Sie weitere Informationen unter IAM-Benutzer und -Rollen verwalten auf der eksctl-Website.
Verwenden Sie EKS-Zugriffseinträge, um IAM-Benutzern und -Rollen den Zugriff auf Cluster zu gewähren
Amazon EKS unterstützt drei Authentifizierungsmodi für Zugriffseinträge:
- CONFIG_MAP, um nur aws-auth ConfigMap zu verwenden.
- API_AND_CONFIG_MAP, um sowohl Eingabe-APIs für den EKS-Zugriff als auch aws-auth ConfigMap zu verwenden. Dieser Modus priorisiert die Authentifizierung über EKS-Zugriffseinträge und ist nützlich, wenn Sie vorhandene aws-auth-Berechtigungen zu EKS-Zugriffseinträgen migrieren müssen.
- API, um nur APIs für EKS-Zugriffseinträge zu verwenden.
Weitere Informationen finden Sie unter IAM-Benutzern und -Rollen Zugriff auf Kubernetes-APIs gewähren.
Um Ihren Cluster mit Zugriffseinträgen zu konfigurieren, setzen Sie den Cluster-Authentifizierungsmodus auf EKS API oder EKS API und ConfigMap.
Gehen Sie wie folgt vor, um den aktuellen Authentifizierungsmodus des Clusters zu überprüfen:
- Öffnen Sie die Amazon EKS-Konsole.
- Wählen Sie die Registerkarte Zugriff.
- Überprüfen Sie unter Zugriffskonfiguration die Bezeichnung Authentifizierungsmodus.
Oder führen Sie den Befehl describe-cluster aus:
aws eks describe-cluster --name example-cluster --query 'cluster.accessConfig.authenticationMode' --region exampleRegion
Wenn der Authentifizierungsmodus des Clusters EKS API oder ** EKS API und ConfigMap** ist, können Sie den Cluster so konfigurieren, dass er Zugriffseinträge verwendet. Falls nicht, finden Sie weitere Informationen unter Änderung des Authentifizierungsmodus, um Zugriffseinträge zu verwenden.
Hinweis: Sie können vom Authentifizierungsmodus CONFIG_MAP in den API-Modus wechseln, aber Sie können nicht vom API- oder API_AND_CONFIG_MAP.Modus in den CONFIG_MAP-Modus wechseln. Weitere Informationen finden Sie unter Cluster Access Manager auf der GitHub-Website.
Ähnliche Informationen
Eine IAM-Rolle in der AWS CLI verwenden
IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen gewähren
Migration vorhandener aws-auth ConfigMap-Einträge, um auf Einträge zuzugreifen
Ähnliche Videos


Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor 7 Monaten