Salta al contenuto

Come posso configurare un utente SSO affinché possa accedere al mio cluster Amazon EKS?

5 minuti di lettura
0

Desidero configurare un utente del Centro identità AWS IAM affinché possa accedere al mio cluster Amazon Elastic Kubernetes Service (Amazon EKS).

Risoluzione

Prerequisiti

  • Il Centro identità IAM deve essere attivato e configurato
  • L'utente SSO deve essere associato all'account AWS che contiene il cluster EKS
  • Il cluster EKS deve supportare Voci di accesso (versione della piattaforma eks.2 o successiva)

Per configurare un utente SSO affinché possa accedere a un cluster Amazon EKS, completa i seguenti passaggi:

Configura AWS CLI per l'autenticazione SSO

Nota: se ricevi degli errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori relativi ad AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Configura AWS CLI per utilizzare l'autenticazione SSO in modo che l'utente SSO possa autenticarsi e assumere un ruolo AWS Identity and Access Management (AWS IAM).

Per ulteriori informazioni sulla configurazione di AWS CLI con il Centro identità IAM, consulta Integrazione di AWS CLI con il Centro identità IAM.

Configura kubectl per utilizzare il profilo SSO

Per configurare kubectl per utilizzare il profilo SSO, esegui questo comando AWS CLI update-kubeconfig:

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

Nota: sostituisci your-cluster-name con il nome del tuo cluster EKS. Sostituisci your-sso-profile con il nome del tuo profilo SSO.

Verifica la modalità di autenticazione del cluster

Per verificare la modalità di autenticazione del cluster, esegui questo comando AWS CLI describe-cluster:

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

Nota: sostituisci your-cluster-name con il nome del tuo cluster EKS. Sostituisci your-sso-profile con il nome del tuo profilo SSO.

Se l'output mostra API o API_AND_CONFIG_MAP, le voci di accesso sono attivate. Se l'output mostra CONFIG_MAP, è disponibile solo il metodo della ConfigMap aws-auth.

Utilizza Voci di accesso per configurare l'accesso

Scegli uno dei seguenti livelli di autorizzazione:

Concedi le autorizzazioni di amministrazione a livello di cluster

Completa i seguenti passaggi:

  1. Apri la console Amazon EKS.
  2. Nel pannello di navigazione, scegliCluster.
  3. Seleziona il cluster.
  4. Scegli la scheda Accesso.
  5. Nella sezione Voci di accesso, scegli Crea voce di accesso.
  6. In ARN del principale IAM, inserisci l'ARN del ruolo SSO senza la componente relativa al percorso.
  7. Per Tipo, scegli Standard.
  8. Scegli Avanti.
  9. Per Nome della policy, scegli AmazonEKSClusterAdminPolicy.
  10. Per Ambito di accesso, scegli Cluster.
  11. Scegli Avanti, quindi scegli Crea.

Concedi autorizzazioni specifiche per il namespace

Completa i seguenti passaggi:

  1. Apri la console Amazon EKS.
  2. Nel pannello di navigazione, scegliCluster.
  3. Seleziona il cluster.
  4. Scegli la scheda Accesso.
  5. Nella sezione Voci di accesso, scegli Crea voce di accesso.
  6. In ARN del principale IAM, inserisci l'ARN del ruolo SSO senza la componente relativa al percorso.
  7. Per Tipo, scegli Standard.
  8. Scegli Avanti.
  9. Per Nome della policy, scegli AmazonEKSAdminViewPolicy o AmazonEKSEditPolicy in base ai requisiti del caso d'uso.
  10. Per Ambito di accesso, scegli Namespace.
  11. In Namespace, inserisci il nome del namespace.
  12. Scegli Avanti, quindi scegli Crea.

Per ulteriori informazioni sulle voci di accesso, consulta Concedere agli utenti IAM l’accesso a Kubernetes con le voci di accesso EKS.

Utilizza la ConfigMap aws-auth per configurare l'accesso

Importante: quando utilizzi aws-auth con il Centro identità IAM, utilizza l'ARN del ruolo IAM senza la componente relativa al percorso. Ad esempio, se l'ARN del tuolo è arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/us-east-1/AWSReservedSSO_AdministratorAccess_1234567890abcdef, rimuovi il percorso per utilizzare arn:aws:iam::123456789012:role/AWSReservedSSO_AdministratorAccess_1234567890abcdef.

Se il cluster non supporta Voci di accesso o se preferisci utilizzare il metodo della ConfigMap aws-auth, completa i seguenti passaggi:

Concedi le autorizzazioni di amministrazione a livello di cluster

Crea un file YAML con la seguente configurazione:

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

Nota: sostituisci il valore rolearn con l'ARN del tuo ruolo SSO senza la componente relativa al percorso. Sostituisci sso-admin-user con il tuo nome utente preferito.

Applica la configurazione:

kubectl apply -f aws-auth-configmap.yaml

Concedi autorizzazioni specifiche per il namespace

Crea un ruolo e un RoleBinding per l'accesso specifico per il namespace:

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

Nota: sostituisci your-namespace con il nome del tuo namespace. Sostituisci sso-user con il nome utente specificato nella ConfigMap aws-auth.

Applica la configurazione:

kubectl apply -f role-rolebinding.yaml

Aggiorna la ConfigMap aws-auth per mappare il ruolo SSO sul nome utente:

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

Nota: sostituisci il valore rolearn con l'ARN del tuo ruolo SSO senza la componente relativa al percorso.

Applica la configurazione:

kubectl apply -f aws-auth-configmap.yaml

Per ulteriori informazioni sulla ConfigMap aws-auth, consulta Concedi agli utenti IAM l'accesso a Kubernetes con una ConfigMap.

Verifica l'accesso

Per verificare che l'utente SSO possa accedere al cluster, esegui questo comando:

kubectl get nodes

Se il comando restituisce un elenco di nodi, l'utente SSO si è autenticato correttamente nel cluster.

Informazioni correlate

Gestione degli accessi ai cluster

AWS UFFICIALEAggiornata 5 mesi fa