Helfen Sie 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.
Möchten Sie zu diesem Benutzerhandbuch beitragen? Wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet. Ihre Beiträge werden dazu beitragen, dass unser Benutzerhandbuch für alle besser wird.
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ährung IAM Benutzerzugriff auf Kubernetes mit einem ConfigMap
Wichtig
Der aws-auth ConfigMap
ist veraltet. Für die empfohlene Methode zur Verwaltung des Zugriffs auf Kubernetes APIs, sieheGewährung IAM Benutzerzugriff auf Kubernetes mit EKS-Zugangseinträ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 auf
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 das aws-auth ConfigMap
Kubernetes und erstellen Sie ein Kubernetes rolebinding
oder clusterrolebinding
mit dem Namen einesgroup
, den Sie in der angebenaws-auth ConfigMap
.
Anmerkung
Weitere Informationen zur Kubernetes Konfiguration der rollenbasierten Zugriffskontrolle (RBAC), siehe Verwenden
-
Bestimmen Sie, welche Anmeldeinformationen
kubectl
für den Zugriff auf Ihren Cluster verwendet. Amazon Resource Name (ARN)Auf Ihrem Computer können Sie mit dem folgenden Befehl sehen, welche Anmeldeinformationenkubectl
verwendet.~/.kube/config
Ersetzen Sie ihn durch den Pfad zu Ihrerkubeconfig
Datei, wenn Sie nicht den Standardpfad verwenden.cat ~/.kube/config
Eine 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
admin
für einen Cluster mit dem Namenmy-cluster
konfiguriert. 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-auth
Eine 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-auth
ConfigMap
. Nur die Knoten-Instance-Rolle hat Zugriff auf den Cluster. -
Stellen Sie sicher, dass Sie bereits vorhanden sind Kubernetes
roles
undrolebindings
oderclusterroles
undclusterrolebindings
denen Sie IAM-Prinzipale zuordnen können. Weitere Informationen zu diesen Ressourcen finden Sie unter Verwenden der RBAC-Autorisierungim Kubernetes -Dokumentation. -
Sehen Sie sich Ihre vorhandenen an Kubernetes
roles
oderclusterroles
.Roles
sind auf a beschränktnamespace
,clusterroles
sind aber auf den Cluster beschränkt.kubectl get roles -A
kubectl get clusterroles
-
Zeigen Sie die Details einer beliebigen
role
oderclusterrole
an, 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-name
durch einenrole
-Namen, den der vorherige Befehl zurückgegeben hat. Ersetzen Siekube-system
durch den Namespace derrole
.kubectl describe role role-name -n kube-system
Ersetzen Sie
cluster-role-name
durch einenclusterrole
-Namen, den der vorherige Befehl zurückgegeben hat.kubectl describe clusterrole cluster-role-name
-
Sehen Sie sich Ihr vorhandenes an Kubernetes
rolebindings
oderclusterrolebindings
.Rolebindings
sind auf a beschränktnamespace
,clusterrolebindings
sind aber auf den Cluster beschränkt.kubectl get rolebindings -A
kubectl get clusterrolebindings
-
Zeigen Sie die Details einer beliebigen
rolebinding
oderclusterrolebinding
an und bestätigen Sie, dass sie einerole
oderclusterrole
aus dem vorherigen Schritt hat, die alsroleRef
aufgeführt wird, und einen Gruppennamen, der fürsubjects
aufgeführt wird.Ersetzen Sie
role-binding-name
durch einenrolebinding
-Namen, den der vorherige Befehl zurückgegeben hat. Ersetzen SIekube-system
mit demnamespace
derrolebinding
.kubectl describe rolebinding role-binding-name -n kube-system
Eine 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.io
Ersetzen Sie
cluster-role-binding-name
durch einenclusterrolebinding
-Namen, den der vorherige Befehl zurückgegeben hat.kubectl describe clusterrolebinding cluster-role-binding-name
Eine 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-auth
ConfigMap
. Sie können ein Tool wieeksctl
verwenden, um dieConfigMap
zu aktualisieren, oder Sie können sie durch manuelle Bearbeitung aktualisieren.Wichtig
Wir empfehlen die Verwendung von
eksctl
oder einem anderen Tool, um dieConfigMap
zu 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-Leitfäden. Ist aws-auth
ConfigMap
falsch 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.199.0
oder eine neuere Version deseksctl
Befehlszeilentools, das auf Ihrem Gerät installiert ist oder. AWS CloudShell Informationen zum Installieren und Aktualisieren voneksctl
finden Sie in der Dokumentation zueksctl
unter Installation. -
Zeigen Sie die aktuellen Mappings in der
ConfigMap
an. Ersetzen Siemy-cluster
mit dem Namen Ihres Clusters.region-code
Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet.eksctl get iamidentitymapping --cluster my-cluster --region=region-code
Eine 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-role
durch den Namen Ihrer Rolle.eks-console-dashboard-full-access-group
Ersetzen Sie es durch den Namen der Gruppe, die in Ihrem KubernetesRoleBinding
oderClusterRoleBinding
Objekt. Ersetzen Sie111122223333
durch Ihre Konto-ID. Sie könnenadmin
mit 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-arns
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-role
my-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-user
durch den Benutzernamen.eks-console-dashboard-restricted-access-group
Ersetzen Sie es durch den Namen der Gruppe, die in Ihrem KubernetesRoleBinding
oderClusterRoleBinding
Objekt. Ersetzen Sie111122223333
durch Ihre Konto-ID. Sie könnenmy-user
mit 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-arns
Eine 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
ConfigMap
an.eksctl get iamidentitymapping --cluster my-cluster --region=region-code
Eine 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
Configmap manuell bearbeiten
-
Öffnen Sie
ConfigMap
zum Bearbeiten.kubectl edit -n kube-system configmap/aws-auth
Anmerkung
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
ConfigMap
hinzu. 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
mapRoles
derConfigMap
unterdata
hinzu. 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-name
arn:aws: iam::
sein.111122223333
:role/role-name
-
username: Der Benutzername innerhalb Kubernetes um der IAM-Rolle zuzuordnen.
-
Gruppen: Die Gruppe oder Liste von Kubernetes Gruppen, denen die Rolle zugeordnet werden soll. Die Gruppe kann eine Standardgruppe oder eine Gruppe sein, die in einer
clusterrolebinding
oderrolebinding
angegeben ist. Weitere Informationen finden Sie unter Standardrollen und Rollenbindungenim 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 derConfigMap
unterdata
hinzu. 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 um es dem IAM-Benutzer zuzuordnen.
-
Gruppen: Die Gruppe oder Liste von Kubernetes Gruppen, denen der Benutzer zugeordnet werden soll. Die Gruppe kann eine Standardgruppe oder eine Gruppe sein, die in einer
clusterrolebinding
oderrolebinding
angegeben ist. Weitere Informationen finden Sie unter Standardrollen und Rollenbindungenim Kubernetes -Dokumentation.
-
-
-
Beispiel: Der folgende YAML-Block enthält:
-
Ein
mapRoles
Abschnitt, der die IAM-Knoteninstanz zuordnet Kubernetes Gruppen, sodass sich Knoten selbst beim Cluster und dermy-console-viewer-role
IAM-Rolle registrieren können, die einem zugeordnet ist Kubernetes Gruppe, die alle anzeigen kann Kubernetes Ressourcen für alle Cluster. Für eine Liste der IAM und Kubernetes Für diemy-console-viewer-role
IAM-Rolle erforderliche Gruppenberechtigungen finden Sie unter. Erforderliche Berechtigungen -
Ein
mapUsers
Abschnitt, der denadmin
IAM-Benutzer vom AWS Standardkonto demsystem:masters
Kubernetes Gruppe und dermy-user
Benutzer aus einem anderen AWS Konto, das einem zugeordnet ist Kubernetes Gruppe, die Folgendes anzeigen kann Kubernetes Ressourcen für einen bestimmten Namespace. Für eine Liste der IAM und Kubernetes Für denmy-user
IAM-Benutzer erforderliche Gruppenberechtigungen finden Sie unter. Erforderliche BerechtigungenFügen Sie nach Bedarf Zeilen hinzu oder entfernen Sie sie und ersetzen Sie alle
example values
durch 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-auth
ConfigMap
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 diese noch nicht aws-auth
ConfigMap
auf Ihren Cluster angewendet haben, können Sie dies mit dem folgenden Verfahren tun.
-
Prüfen Sie, ob Sie das bereits angewendet haben.
aws-auth
ConfigMap
kubectl describe configmap -n kube-system aws-auth
Wenn 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.yaml
rolearn
auf den Amazon-Ressourcennamen (ARN) der IAM-Rolle ein, die Ihren Knoten zugeordnet ist. Hierzu können Sie einen Texteditor verwenden odermy-node-instance-role
ersetzen 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-role
my-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, im AWS Management Console
-
-
Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.
kubectl apply -f aws-auth-cm.yaml
Anmerkung
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 --watch
Geben Sie
Ctrl
+C
ein, um zu einer Shell-Eingabeaufforderung zurückzukehren.