Direkt zum Inhalt

Wie konfiguriere ich einen SSO-Benutzer für den Zugriff auf meinen Amazon EKS-Cluster?

Lesedauer: 5 Minute
0

Ich möchte einen AWS IAM Identity Center-Benutzer konfigurieren, damit er auf meinen Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster zugreifen kann.

Lösung

Voraussetzungen

  • IAM Identity Center muss aktiviert und konfiguriert sein
  • Der SSO-Benutzer muss dem AWS-Konto zugeordnet sein, das den EKS-Cluster enthält
  • Der EKS-Cluster muss Zugriffseinträge unterstützen (Plattformversion eks.2 oder höher)

Um einen SSO-Benutzer für den Zugriff auf deinen Amazon EKS-Cluster zu konfigurieren, führe die folgenden Schritte aus:

AWS CLI für SSO-Authentifizierung konfigurieren

Hinweis: Wenn du beim Ausführen von AWS Command Line Interface (AWS CLI)-Befehlen Fehlermeldungen erhältst, findest du weitere Informationen dazu unter Problembehandlung bei der AWS CLI. Stelle außerdem sicher, dass du die neueste Version der AWS CLI verwendest.

Konfiguriere die AWS CLI so, dass sie SSO-Authentifizierung verwendet, damit sich der SSO-Benutzer authentifizieren und eine AWS Identity and Access Management (IAM)-Rolle übernehmen kann.

Weitere Informationen zur Konfiguration der AWS CLI mit IAM Identity Center findest du unter AWS CLI in IAM Identity Center integrieren.

kubectl für die Verwendung des SSO-Profils konfigurieren

Um kubectl für dein SSO-Profil zu konfigurieren, führe den folgenden AWS-CLI-Befehl update-kubeconfig aus:

aws eks update-kubeconfig --name your-cluster-name --profile your-sso-profile

Hinweis: Ersetze your-cluster-name durch deinen EKS-Cluster-Namen. Ersetze your-sso-profile durch den Namen deines SSO-Profils.

Authentifizierungsmodus des Clusters überprüfen

Um den Authentifizierungsmodus des Clusters zu überprüfen, führe den folgenden AWS-CLI-Befehl describe-cluster aus:

aws eks describe-cluster --name your-cluster-name --query "cluster.accessConfig.authenticationMode" --profile your-sso-profile

Hinweis: Ersetze your-cluster-name durch deinen EKS-Cluster-Namen. Ersetze your-sso-profile durch den Namen deines SSO-Profils.

Wenn die Ausgabe API oder API_AND_CONFIG_MAP anzeigt, sind Zugriffseinträge aktiviert. Wenn die Ausgabe CONFIG_MAP anzeigt, ist nur die Methode aws-auth ConfigMap verfügbar.

Zugriff mit Zugriffseinträgen konfigurieren

Wähle eine der folgenden Berechtigungsstufen aus:

Clusterweite Administratorberechtigungen erteilen

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-EKS-Konsole.
  2. Wähle im Navigationsbereich die Option Cluster aus.
  3. Wähle deinen Cluster aus.
  4. Wähle die Registerkarte Zugriff aus.
  5. Wähle im Abschnitt Zugriffseinträge die Option Zugriffseintrag erstellen aus.
  6. Gib für IAM-Prinzipal-ARN die ARN deiner SSO-Rolle ohne den Pfadbestandteil ein.
  7. Wähle für Typ die Option Standard aus.
  8. Wähle Weiter aus.
  9. Wähle für Richtlinienname die Option AmazonEKSClusterAdminPolicy aus.
  10. Wähle für Zugriffsbereich die Option Cluster aus.
  11. Wähle Weiter und dann Erstellen aus.

Namespace-spezifische Berechtigungen gewähren

Führe die folgenden Schritte aus:

  1. Öffne die Amazon-EKS-Konsole.
  2. Wähle im Navigationsbereich die Option Cluster aus.
  3. Wähle deinen Cluster aus.
  4. Wähle die Registerkarte Zugriff aus.
  5. Wähle im Abschnitt Zugriffseinträge die Option Zugriffseintrag erstellen aus.
  6. Gib für IAM-Prinzipal-ARN die ARN deiner SSO-Rolle ohne den Pfadbestandteil ein.
  7. Wähle für Typ die Option Standard aus.
  8. Wähle Weiter aus.
  9. Wähle für Richtlinienname die Option AmazonEKSAdminViewPolicy oder AmazonEKSEditPolicy aus, abhängig von deinen Anforderungen.
  10. Wähle für Zugriffsbereich die Option Namespace aus.
  11. Gib für Namespace den Namen deines Namespace ein.
  12. Wähle Weiter und dann Erstellen aus.

Weitere Informationen zu Access Entries findest du unter IAM-Benutzern Zugriff auf Kubernetes mit EKS-Zugriffseinträgen gewähren.

aws-auth ConfigMap verwenden, um Zugriff zu konfigurieren

Wichtig: Wenn du aws-auth mit IAM Identity Center verwendest, verwende die IAM-Rollen-ARN ohne den Pfadbestandteil. Wenn deine Rollen-ARN arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdministratorAccess_1234567890abcdef lautet, entferne den Pfad, um arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef zu verwenden.

Wenn dein Cluster Zugriffseinträge nicht unterstützt oder du lieber die aws-auth ConfigMap verwendest, führe die folgenden Schritte aus:

Clusterweite Administratorberechtigungen erteilen

Erstelle eine YAML-Datei mit der folgenden Konfiguration:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef
      username: sso-admin-user
      groups:
        - system:masters

Hinweis: Ersetze den Wert rolearn durch die ARN deiner SSO-Rolle ohne den Pfadbestandteil. Ersetze sso-admin-user durch deinen gewünschten Benutzernamen.

Wende die Konfiguration an:

kubectl apply -f aws-auth-configmap.yaml

Namespace-spezifische Berechtigungen gewähren

Erstelle eine Role und RoleBinding für namespacespezifischen Zugriff:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: sso-user-role
  namespace: your-namespace
rules:
- apiGroups: [""]
  resources: ["pods", "services", "configmaps"]
  verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: sso-user-rolebinding
  namespace: your-namespace
subjects:
- kind: User
  name: sso-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: sso-user-role
  apiGroup: rbac.authorization.k8s.io

Hinweis: Ersetze your-namespace durch den Namen deines Namespace. Ersetze sso-user durch den Benutzernamen, den du in der aws-auth ConfigMap angegeben hast.

Wende die Konfiguration an:

kubectl apply -f role-rolebinding.yaml

Aktualisiere die aws-auth ConfigMap, um die SSO-Rolle dem Benutzernamen zuzuordnen:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef
      username: sso-user

Hinweis: Ersetze den Wert rolearn durch die ARN deiner SSO-Rolle ohne den Pfadbestandteil.

Wende die Konfiguration an:

kubectl apply -f aws-auth-configmap.yaml

Weitere Informationen zur aws-auth ConfigMap findest du unter IAM-Benutzern Zugriff auf Kubernetes mit einer ConfigMap gewähren.

Zugriff überprüfen

Um zu überprüfen, ob der SSO-Benutzer auf den Cluster zugreifen kann, führe den folgenden Befehl aus:

kubectl get nodes

Wenn der Befehl eine Liste von Knoten zurückgibt, hat sich der SSO-Benutzer erfolgreich am Cluster authentifiziert.

Ähnliche Informationen

Cluster-Zugriffsverwaltung

AWS OFFICIALAktualisiert vor 4 Monaten