Come posso fornire l'accesso ad altri utenti e ruoli IAM dopo aver creato il cluster in Amazon EKS?

7 minuti di lettura
0

Quando provo ad accedere al cluster Amazon Elastic Kubernetes Service (Amazon EKS) tramite i comandi kubectl, appare il seguente errore di autorizzazione: "errore: Devi aver effettuato il log-in al server (Non autorizzato)".

Breve descrizione

Ricevi un errore di autorizzazione quando la tua identità AWS Gestione Identità e Accesso (IAM) non è autorizzata dalla configurazione controllo degli accessi in base al ruolo (RBAC) del cluster Amazon EKS. Questo si verifica quando un utente o un ruolo IAM crea un cluster Amazon EKS diverso da quello utilizzato da aws-iam-authenticator.

All’inizio, solo il creatore del cluster Amazon EKS possiede le autorizzazioni di riferimento del sistema per configurare il cluster. Per estendere le autorizzazioni di riferimento del sistema ad altri utenti e ruoli, devi aggiungere aws-auth ConfigMap alla configurazione del cluster Amazon EKS. La ConfigMap autorizza altre entità IAM, ad esempio utenti e ruoli, ad accedere al cluster Amazon EKS.

Per concedere l'accesso ad un ruolo IAM, devi entrare in possesso delle credenziali del creatore del cluster. Quindi, aggiungi il ruolo IAM nella sezione mapRoles di aws-auth ConfigMap.

Importante:

  • Evita errori di sintassi, come errori di battitura, quando aggiorni aws-auth ConfigMap. I suddetti errori possono ripercuotersi sulle autorizzazioni di tutti gli utenti e i ruoli IAM che sono stati aggiornati all'interno della ConfigMap del cluster Amazon EKS.
  • È consigliabile evitare di aggiungere cluster_creator a ConfigMap. Modificare ConfigMap in modo errato può comportare la perdita permanente dell'accesso al cluster Amazon EKS per tutti gli utenti e i ruoli IAM, incluso cluster_creator.
  • Non è necessario aggiungere cluster_creator a aws-auth ConfigMap per ottenere l'accesso al cluster Amazon EKS in qualità di amministratore. Per impostazione predefinita, il cluster_creator possiede l'accesso amministratore al cluster Amazon EKS che ha creato.

Nota: Se si rilevano errori durante l'esecuzione dell’Interfaccia della linea di comando AWS (AWS CLI), assicurati di utilizzare la versione più recente di AWS CLI.

Risoluzione

Nota: Nei passaggi successivi, il creatore del cluster è cluster_creator. L'utente che attualmente non ha accesso al cluster ma deve eseguirvi l’accesso si chiama designated_user.

Identifica l'utente o il ruolo IAM per il creatore del cluster

  1. Identifica l'utente o il ruolo IAM del creatore del cluster che ha l'accesso principale per configurare il tuo cluster Amazon EKS.

  2. Identifica l'utente IAM a cui il creatore del cluster concede l'autorizzazione dopo aver creato il cluster. Per identificare il creatore del cluster, individua la voce API CreateCluster in AWS CloudTrail, quindi controlla la sezione userIdentity della chiamata API.

Aggiungi designated_user alla ConfigMap se cluster_creator è un utente IAM

  1. Installa kubectl sul tuo computer host locale. In alternativa, se hai un'istanza Amazon Elastic Compute Cloud (Amazon EC2) dedicata con un pacchetto kubectl installato, usa SSH per connetterti all'istanza.

  2. Sulla stessa macchina host in cui è installato kubectl, configura l'AWS CLI con le credenzialidesignated_user:

aws configure
  1. Nel CLI AWS, esegui il seguente comando:
aws sts get-caller-identity

L'output dovrebbe riportare i dettagli dell'utente IAM per il designated_user.

Ad esempio:

{
    "UserId": "XXXXXXXXXXXXXXXXXXXXX",
    "Account": "XXXXXXXXXXXX",
    "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/designated_user"
}
  1. Elenca i pod in esecuzione nel cluster dello spazio predefinito dei nomi:
kubectl get pods --namespace default

L'output mostra quanto segue: “errore: Devi aver effettuato il login al server (Non autorizzato)”. Questo errore indica che il designated_user non dispone dell'autorizzazione per accedere al cluster Amazon EKS.

  1. Configura l'ID della chiave di accesso AWS e la chiave di accesso segreta AWS di cluster_creator.

Se il cluster è stato creato utilizzando la Console di gestione AWS, identifica il ruolo o l'utente IAM che ha creato il cluster. Nella macchina host dove è installato kubectl, configura l'utente o il ruolo IAM del cluster_creator nell’AWS CLI:

aws configure

Seeksctl è stato utilizzato per creare il cluster, utilizza le credenziali del profilo AWS CLI predefinite o specificate per configurare l'AWS CLI per eseguire i comandi kubectl.

  1. Assicurati checluster_creator abbia l’accesso al cluster:
kubectl get pods

Se tutte le impostazioni sono corrette, allora non apparirà un messaggio di errore non autorizzato. L'output dovrebbe elencare tutti i pod in esecuzione nello spazio predefinito dei nomi. Se l'output rileva che non è stata trovata alcuna risorsa, allora nessun pod è in esecuzione nello spazio predefinito dei nomi.

  1. Per dare l'accesso a designated_user al cluster, aggiungi la sezione mapUsers al tuo file aws-auth.yaml. Vedi il file di esempio aws-auth.yaml in Abilitare utenti e ruoli IAM per l’accesso al tuo cluster.

  2. Aggiungi designated_user alla sezione mapUsers del file aws-auth.yaml nel passaggio 7, quindi salva il file.

  3. Applica la nuova ConfigMap alla configurazione RBAC del cluster:

kubectl apply -f aws-auth.yaml
  1. Modifica nuovamente la configurazione dell'AWS CLI per utilizzare le credenziali di designated_user:
aws configure
  1. Assicurati che il designated_user abbia l’accesso al cluster:
kubectl get pods

Se tutte le impostazioni sono corrette, non apparirà un messaggio di errore non autorizzato. L'output elenca tutti i pod in esecuzione nello spazio predefinito dei nomi. Se l'output rileva che non è stata trovata alcuna risorsa, allora nessun pod è in esecuzione nello spazio predefinito dei nomi.

Aggiungi designated\ _user alla ConfigMap se il cluster\ _creator è un ruolo IAM

Nei passaggi precedenti, hai utilizzato le credenziali del cluster_creator per fornire l'accesso al designated_user. Tuttavia, se il cluster è stato creato da un ruolo IAM anziché da un utente IAM, non sarà possibile utilizzare alcuna credenziale. Se fosse questo il caso, devi assumere il ruolo IAM che ha creato il cluster per fornire l'accesso al designated_user. Se il creatore del cluster non è un ruolo IAM, non è necessario completare i passaggi successivi.

Nota: Nei passaggi successivi, assume_role_user è l'utente che assume il ruolo di cluster_creator. L'utente che attualmente non ha accesso al cluster ma deve eseguirvi l’accesso si chiama designated_user.

Per assumere il ruolo IAM e modificare la aws-auth ConfigMap sul cluster in modo da poter garantire l'accesso al designated_user, completa i seguenti passaggi:

  1. Mostra i dettagli utente IAM di assume_role_user:
aws sts get-caller-identity
  1. Conferma che assume_role_user abbia l’accesso al cluster:
kubectl get pods

L'output mostra il seguente errore: “errore: Devi aver effettuato il login al server (Non autorizzato)”. Il suddetto errore indica che assume_role_user non dispone dell'autorizzazione per configurare il cluster Amazon EKS.

  1. Consenti a assume_role_user di assumere il ruolo di cluster_creator:
aws sts assume-role --role-arn arn:aws:iam:11122223333:role/cluster_creator --role-session-name test

L'output mostra le credenziali IAM temporanee per assume_role_user.

  1. Utilizza le credenziali IAM temporanee per impostare le variabili d’ambiente AWS_ACCESS_KEY_ID, AWS_SESSION_TOKEN e AWS_SECRET_ACCESS_KEY.

Ad esempio:

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SESSION_TOKEN=EXAMPLETOKEN
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

L'AWS CLI ora classifica le credenziali impostate nelle variabili d’ambiente e le utilizza per realizzare chiamate ai servizi AWS.

  1. Assicurati che l'AWS CLI stia utilizzando il ruolo assunto per cluster_creator:
aws sts get-caller-identity
  1. Per dare l'accesso a designated_user al cluster, aggiungi la sezione mapUsers al tuo file aws-auth.yaml. Vedi il file di esempio aws-auth.yaml in Abilitare utenti e ruoli IAM per l’accesso al tuo cluster.

  2. Aggiungi designated_user alla sezione mapUsers del file aws-auth.yaml nel passaggio 6, e poi salva il file.

  3. Applica la nuova configurazione alla configurazione RBAC del cluster Amazon EKS:

kubectl apply -f aws-auth.yaml
  1. Annulla le seguenti variabili d’ambiente:
unset AWS_ACCESS_KEY_ID
unset AWS_SESSION_TOKEN
unset AWS_SECRET_ACCESS_KEY
  1. Mostra i dettagli utente IAM del designated_user:
aws sts get-caller-identity
  1. Conferma che designated_user abbia l’accesso al cluster:
kubectl get pods

Se tutte le impostazioni sono corrette, allora non apparirà un messaggio di errore non autorizzato. L'output elenca tutti i pod in esecuzione nello spazio predefinito dei nomi. Se l'output rileva che non è stata trovata alcuna risorsa, allora nessun pod è in esecuzione nello spazio predefinito dei nomi.

Nota: Se usi eksctl, considera la risoluzione in Gestione utenti e ruoli IAM sul sito web Weaveworks.


Informazioni correlate

Utilizzare un ruolo IAM in AWS CLI

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa