Hilf mit, diese Seite 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.
Wenn Sie zu diesem Benutzerhandbuch beitragen möchten, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
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.
Gewähren Sie IAM-Benutzern Zugriff auf Kubernetes mit einem ConfigMap
Wichtig
Der aws-auth ConfigMap ist veraltet. Die empfohlene Methode zur Verwaltung des Zugriffs auf Kubernetes finden Sie unter. APIs Gewähren Sie IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen
Der Zugriff auf Ihren Cluster mithilfe von IAM-Prinzipalen wird durch den AWS IAM Authenticator for Kubernetesaws-auth ConfigMap. Alle aws-auth ConfigMap-Einstellungen finden Sie unter Vollständiges Konfigurationsformat
Hinzufügen von IAM-Prinzipal zu Ihrem Amazon EKS-Cluster
Wenn Sie einen Amazon EKS-Cluster erstellen, erhält der IAM-Principal, der den Cluster erstellt, automatisch system:masters Berechtigungen für die rollenbasierte Zugriffskontrolle (RBAC) des Clusters in der Amazon EKS-Kontrollebene. Dieser Principal erscheint in keiner sichtbaren Konfiguration. Vergewissern Sie sich daher, dass Sie stets im Auge behalten, welcher Prinzipal den Cluster ursprünglich erstellt hat. Um weiteren IAM-Prinzipalen die Möglichkeit zu geben, mit Ihrem Cluster zu interagieren, bearbeiten Sie die aws-auth ConfigMap in Kubernetes und erstellen Sie ein Kubernetes rolebinding oder clusterrolebinding mit dem Namen einesgroup, den Sie in der angeben. aws-auth ConfigMap
-
Bestimmen Sie, welche Anmeldeinformationen
kubectlfür den Zugriff auf Ihren Cluster verwendet. Amazon Resource Name (ARN)Auf Ihrem Computer können Sie mit dem folgenden Befehl sehen, welche Anmeldeinformationenkubectlverwendet. Ersetzen Sie ihn~/.kube/configdurch den Pfad zu IhrerkubeconfigDatei, wenn Sie nicht den Standardpfad verwenden.cat ~/.kube/configEine Beispielausgabe sieht wie folgt aus.
[...] contexts: - context: cluster: my-cluster.region-code.eksctl.io user: admin@my-cluster.region-code.eksctl.io name: admin@my-cluster.region-code.eksctl.io current-context: admin@my-cluster.region-code.eksctl.io [...]In der vorherigen Beispielausgabe werden die Anmeldeinformationen für einen Benutzer mit dem Namen
adminfür einen Cluster mit dem Namenmy-clusterkonfiguriert. Wenn dies der Benutzer ist, der den Cluster erstellt hat, hat er bereits Zugriff auf Ihren Cluster. Wenn es nicht der Benutzer ist, der den Cluster erstellt hat, müssen Sie die verbleibenden Schritte ausführen, um den Clusterzugriff für andere IAM-Prinzipale zu aktivieren. Bewährte Methoden für IAM empfehlen, dass Sie Rollen statt Benutzern Berechtigungen gewähren. Mit dem folgenden Befehl können Sie sehen, welche anderen Prinzipale derzeit Zugriff auf Ihren Cluster haben:kubectl describe -n kube-system configmap/aws-authEine Beispielausgabe sieht wie folgt aus.
Name: aws-auth Namespace: kube-system Labels: <none> Annotations: <none> Data ==== mapRoles: ---- - groups: - system:bootstrappers - system:nodes rolearn: arn:aws: iam::111122223333:role/my-node-role username: system:node:{{EC2PrivateDNSName}} BinaryData ==== Events: <none>
Das vorherige Beispiel ist ein standardmäßiger
aws-authConfigMap. Nur die Knoten-Instance-Rolle hat Zugriff auf den Cluster. -
Stellen Sie sicher, dass Sie bereits über Kubernetes und/oder andere verfügen
rolesclusterrolesundclusterrolebindingsdass SierolebindingsIAM-Prinzipale zuordnen können. Weitere Informationen über diese Ressourcen finden Sie unter Using RBAC Authorization(RBAC-Autorisierung verwenden) in der Kubernetes-Dokumentation. -
Zeigen Sie Ihre vorhandenen Kubernetes
rolesoderclusterrolesan.Rolessind auf einennamespaceausgelegt, aberclusterrolessind auf den Cluster ausgelegt.kubectl get roles -Akubectl get clusterroles -
Zeigen Sie die Details einer beliebigen
roleoderclusterrolean, die in der vorherigen Ausgabe zurückgegeben wurden, und bestätigen Sie, dass Sie die Berechtigungen (rules) hat, die Ihre IAM-Prinzipale in Ihrem Cluster haben sollen.Ersetzen Sie
role-namedurch einenrole-Namen, den der vorherige Befehl zurückgegeben hat. Ersetzen Siekube-systemdurch den Namespace derrole.kubectl describe role role-name -n kube-systemErsetzen Sie
cluster-role-namedurch einenclusterrole-Namen, den der vorherige Befehl zurückgegeben hat.kubectl describe clusterrole cluster-role-name -
Zeigen Sie Ihre vorhandenen Kubernetes
rolebindingsoderclusterrolebindingsan.Rolebindingssind auf einennamespaceausgelegt, aberclusterrolebindingssind auf den Cluster ausgelegt.kubectl get rolebindings -Akubectl get clusterrolebindings -
Zeigen Sie die Details einer beliebigen
rolebindingoderclusterrolebindingan und bestätigen Sie, dass sie eineroleoderclusterroleaus dem vorherigen Schritt hat, die alsroleRefaufgeführt wird, und einen Gruppennamen, der fürsubjectsaufgeführt wird.Ersetzen Sie
role-binding-namedurch einenrolebinding-Namen, den der vorherige Befehl zurückgegeben hat. Ersetzen SIekube-systemmit demnamespacederrolebinding.kubectl describe rolebinding role-binding-name -n kube-systemEine Beispielausgabe sieht wie folgt aus.
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: eks-console-dashboard-restricted-access-role-binding namespace: default subjects: - kind: Group name: eks-console-dashboard-restricted-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: eks-console-dashboard-restricted-access-role apiGroup: rbac.authorization.k8s.ioErsetzen Sie
cluster-role-binding-namedurch einenclusterrolebinding-Namen, den der vorherige Befehl zurückgegeben hat.kubectl describe clusterrolebinding cluster-role-binding-nameEine Beispielausgabe sieht wie folgt aus.
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: eks-console-dashboard-full-access-binding subjects: - kind: Group name: eks-console-dashboard-full-access-group apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: eks-console-dashboard-full-access-clusterrole apiGroup: rbac.authorization.k8s.io
-
-
Bearbeiten Sie
aws-authConfigMap. Sie können ein Tool wieeksctlverwenden, um dieConfigMapzu aktualisieren, oder Sie können sie durch manuelle Bearbeitung aktualisieren.Wichtig
Wir empfehlen die Verwendung von
eksctloder einem anderen Tool, um dieConfigMapzu bearbeiten. Informationen zu anderen Tools, die Sie verwenden können, finden Sie unter Use tools to make changes to the aws- authConfigMapin den Amazon EKS-Best-Practices-Handbüchern. Ist aws-authConfigMapfalsch formatiert, können Sie den Zugriff auf Ihren Cluster verlieren.-
Sehen Sie sich die Schritte zum Bearbeiten der Configmap mit eksctl an.
-
Sehen Sie sich die Schritte zur manuellen Bearbeitung der Configmap an.
-
Bearbeiten Sie Configmap mit Eksctl
-
Sie benötigen eine Version
0.212.0oder eine neuere Version deseksctlBefehlszeilentools, das auf Ihrem Gerät installiert ist oder. AWS CloudShell Informationen zum Installieren und Aktualisieren voneksctlfinden Sie in der Dokumentation zueksctlunter Installation. -
Zeigen Sie die aktuellen Mappings in der
ConfigMapan. Ersetzen Siemy-clustermit dem Namen Ihres Clusters.region-codeErsetzen Sie durch die AWS Region, in der sich Ihr Cluster befindet.eksctl get iamidentitymapping --cluster my-cluster --region=region-codeEine Beispielausgabe sieht wie folgt aus.
ARN USERNAME GROUPS ACCOUNT arn:aws: iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes -
Fügen Sie ein Mapping für eine Rolle hinzu. Ersetzen Sie
my-roledurch den Namen Ihrer Rolle.eks-console-dashboard-full-access-groupErsetzen Sie durch den Namen der Gruppe, die in Ihrem KubernetesRoleBindingoderClusterRoleBindingObjekt angegeben ist. Ersetzen Sie111122223333durch Ihre Konto-ID. Sie könnenadminmit einem beliebigen Namen ersetzen, den Sie wählen.eksctl create iamidentitymapping --cluster my-cluster --region=region-code \ --arn arn:aws: iam::111122223333:role/my-role --username admin --group eks-console-dashboard-full-access-group \ --no-duplicate-arnsWichtig
Der Rollen-ARN darf keinen Pfad wie enthalten
role/my-team/developers/my-role. Das Format des ARN mussarn:aws: iam::sein. In diesem Beispiel muss111122223333:role/my-rolemy-team/developers/entfernt werden.Eine Beispielausgabe sieht wie folgt aus.
[...] 2022-05-09 14:51:20 [ℹ] adding identity "{arn-aws}iam::111122223333:role/my-role" to auth ConfigMap -
Fügen Sie ein Mapping für einen Benutzer hinzu. Bewährte Methoden für IAM empfehlen, dass Sie Rollen statt Benutzern Berechtigungen gewähren. Ersetzen Sie
my-userdurch den Benutzernamen.eks-console-dashboard-restricted-access-groupErsetzen Sie es durch den Namen der Gruppe, die in Ihrem KubernetesRoleBindingoderClusterRoleBindingObjekt angegeben ist. Ersetzen Sie111122223333durch Ihre Konto-ID. Sie könnenmy-usermit einem beliebigen Namen ersetzen, den Sie wählen.eksctl create iamidentitymapping --cluster my-cluster --region=region-code \ --arn arn:aws: iam::111122223333:user/my-user --username my-user --group eks-console-dashboard-restricted-access-group \ --no-duplicate-arnsEine Beispielausgabe sieht wie folgt aus.
[...] 2022-05-09 14:53:48 [ℹ] adding identity "arn:aws: iam::111122223333:user/my-user" to auth ConfigMap -
Zeigen Sie wieder die Mappings in der
ConfigMapan.eksctl get iamidentitymapping --cluster my-cluster --region=region-codeEine Beispielausgabe sieht wie folgt aus.
ARN USERNAME GROUPS ACCOUNT arn:aws: iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes arn:aws: iam::111122223333:role/admin my-role eks-console-dashboard-full-access-group arn:aws: iam::111122223333:user/my-user my-user eks-console-dashboard-restricted-access-group
Bearbeiten Sie Configmap manuell
-
Öffnen Sie
ConfigMapzum Bearbeiten.kubectl edit -n kube-system configmap/aws-authAnmerkung
Wenn Sie eine Fehlermeldung mit der Angabe "
Error from server (NotFound): configmaps "aws-auth" not found" erhalten, wenden Sie das Verfahren unter AWS-Auth auf Ihren Cluster anwenden ConfigMap an, um den Bestand anzuwenden.ConfigMap -
Fügen Sie Ihre IAM-Prinzipale zu der
ConfigMaphinzu. Eine IAM-Gruppe ist kein IAM-Prinzipal und kann daher nicht zur hinzugefügt werden.ConfigMap-
So fügen Sie eine IAM-Rolle hinzu (z. B. für Verbundbenutzer): Fügen Sie die Rollendetails zum Abschnitt
mapRolesderConfigMapunterdatahinzu. Fügen Sie diesen Abschnitt hinzu, wenn er nicht bereits in der Datei vorhanden sind. Jeder Eintrag unterstützt die folgenden Parameter:-
rolearn: Der ARN der IAM-Rolle, den Sie hinzufügen möchten. Dieser Wert darf keinen Pfad enthalten. Sie können beispielsweise keinen ARN wie angeben
arn:aws: iam::. Der ARN muss stattdessen111122223333:role/my-team/developers/role-namearn:aws: iam::sein.111122223333:role/role-name -
username: Der Benutzername in Kubernetes für die Zuweisung zur IAM-Rolle.
-
Gruppen: Die Gruppe oder Liste der Kubernetes-Gruppen, denen die Rolle zugeordnet werden soll. Die Gruppe kann eine Standardgruppe oder eine Gruppe sein, die in einer
clusterrolebindingoderrolebindingangegeben ist. Weitere Informationen finden Sie unter Standardrollen und Rollenbindungenin der Kubernetes-Dokumentation.
-
-
Um einen IAM-Benutzer hinzuzufügen: Bewährte Methoden von IAM empfehlen, dass Sie Rollen statt Benutzern Berechtigungen gewähren. Fügen Sie die Benutzerdetails zum
mapUsers-Abschnitt derConfigMapunterdatahinzu. Fügen Sie diesen Abschnitt hinzu, wenn er nicht bereits in der Datei vorhanden sind. Jeder Eintrag unterstützt die folgenden Parameter:-
userarn: Die ARN des IAM-Benutzers, den Sie hinzufügen möchten.
-
username: Der Benutzername in Kubernetes für die Zuweisung zum IAM-Benutzer.
-
Gruppen: Die Gruppe oder Liste der Kubernetes-Gruppen, denen der Benutzer zugeordnet werden soll. Die Gruppe kann eine Standardgruppe oder eine Gruppe sein, die in einer
clusterrolebindingoderrolebindingangegeben ist. Weitere Informationen finden Sie unter Standardrollen und Rollenbindungenin der Kubernetes-Dokumentation.
-
-
-
Beispiel: Der folgende YAML-Block enthält:
-
Einen
mapRoles-Abschnitt, der die IAM-Knoten-Instance Kubernetes-Gruppen zuordnet, sodass sich Knoten selbst bei dem Cluster und dermy-console-viewer-role-IAM-Rolle registrieren können, die einer Kubernetes-Gruppe zugeordnet ist, die alle Kubernetes-Ressourcen für alle Cluster anzeigen kann. Eine Liste der erforderlichen IAM- und Kubernetes-Gruppenberechtigungen für diemy-console-viewer-role-IAM-Rolle finden Sie unter Erforderliche Berechtigungen. -
Ein
mapUsersAbschnitt, der denadminIAM-Benutzer aus dem AWS Standardkonto dersystem:mastersKubernetes-Gruppe und denmy-userBenutzer aus einem anderen AWS Konto zuordnet, das einer Kubernetes-Gruppe zugeordnet ist, die Kubernetes-Ressourcen für einen bestimmten Namespace anzeigen kann. Eine Liste der erforderlichen IAM- und Kubernetes-Gruppenberechtigungen für diemy-user-IAM-Benutzer finden Sie unter Erforderliche Berechtigungen.Fügen Sie nach Bedarf Zeilen hinzu oder entfernen Sie sie und ersetzen Sie alle
example valuesdurch eigene Werte.# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws: iam::111122223333:role/my-role username: system:node:{{EC2PrivateDNSName}} - groups: - eks-console-dashboard-full-access-group rolearn: arn:aws: iam::111122223333:role/my-console-viewer-role username: my-console-viewer-role mapUsers: | - groups: - system:masters userarn: arn:aws: iam::111122223333:user/admin username: admin - groups: - eks-console-dashboard-restricted-access-group userarn: arn:aws: iam::444455556666:user/my-user username: my-user
-
-
Speichern Sie die Datei und beenden Sie den Text-Editor.
Anwenden von aws-authConfigMap auf Ihren Cluster
aws-auth ConfigMap wird automatisch erstellt und auf Ihren Cluster angewendet, wenn Sie eine verwaltete Knotengruppe erstellen oder wenn Sie eine Knotengruppe mit eksctl erstellen. Sie wird anfänglich erstellt, um Knoten zu erlauben, Ihrem Cluster beizutreten, aber Sie verwenden diese ConfigMap auch, um rollenbasierten Zugriffssteuerungs(RBAC)-Zugriff auf IAM-Prinzipale hinzuzufügen. Wenn Sie selbstverwaltete Knoten gestartet und sie nicht auf Ihren Cluster angewendet haben, können Sie dies aws-auth ConfigMap mit dem folgenden Verfahren tun.
-
Prüfen Sie, ob Sie das bereits angewendet haben.
aws-authConfigMapkubectl describe configmap -n kube-system aws-authWenn Sie eine Fehlermeldung mit der Angabe "
Error from server (NotFound): configmaps "aws-auth" not found" erhalten, fahren Sie mit den folgenden Schritten fort, um die Aktie anzuwendenConfigMap. -
Laden Sie die AWS Authenticator-Konfigurationsübersicht herunter, bearbeiten Sie sie und wenden Sie sie an.
-
Laden Sie die Konfigurationszuordnung herunter.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml -
Stellen Sie in der Datei
aws-auth-cm.yamlrolearnauf den Amazon-Ressourcennamen (ARN) der IAM-Rolle ein, die Ihren Knoten zugeordnet ist. Hierzu können Sie einen Texteditor verwenden odermy-node-instance-roleersetzen und den folgenden Befehl ausführen:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yamlÄndern Sie keine anderen Zeilen in dieser Datei.
Wichtig
Der Rollen-ARN darf keinen Pfad wie enthalten
role/my-team/developers/my-role. Das Format des ARN mussarn:aws: iam::sein. In diesem Beispiel muss111122223333:role/my-rolemy-team/developers/entfernt werden.Sie können die AWS CloudFormation Stack-Ausgaben für Ihre Knotengruppen überprüfen und nach den folgenden Werten suchen:
-
InstanceRoleARN — Für Knotengruppen, die erstellt wurden mit
eksctl -
NodeInstanceRole— Für Knotengruppen, die mit von Amazon EKS bereitgestellten AWS CloudFormation Vorlagen erstellt wurden, in der AWS Management Console
-
-
Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.
kubectl apply -f aws-auth-cm.yamlAnmerkung
Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Thema zur Fehlerbehebung.
-
-
Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den
Ready-Status eintreten.kubectl get nodes --watchGeben Sie
Ctrl+Cein, um zu einer Shell-Eingabeaufforderung zurückzukehren.