Contribuisci a migliorare questa pagina
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Concedi agli utenti IAM l'accesso a Kubernetes con un ConfigMap
Importante
La funzionalità aws-auth ConfigMap è obsoleta. Per il metodo consigliato per gestire l'accesso a Kubernetes, consulta. APIs Concedere agli utenti IAM l’accesso a Kubernetes con le voci di accesso EKS
L’accesso al cluster utilizzando i principali IAM è abilitato dall’autenticatore AWS IAM per Kubernetesaws-auth ConfigMap. Per tutte le impostazioni di ConfigMap aws-auth, consulta Formato di configurazione completo
Aggiunta di principali IAM al cluster Amazon EKS
Quando crei un cluster Amazon EKS, il principale IAM che crea il cluster riceve automaticamente le autorizzazioni system:masters nella configurazione del controllo degli accessi basato sul ruolo (RBAC) nel piano di controllo di Amazon EKS. Questo principale non è visualizzato in una configurazione visibile qualsiasi, quindi assicurati di tenere traccia di quale principale ha originariamente creato il cluster. Per concedere a ulteriori principali IAM la capacità di interagire con il cluster, modifica aws-auth ConfigMap all’interno di Kubernetes e crea rolebinding o clusterrolebinding Kubernetes con il nome di group specificato in aws-auth ConfigMap.
Nota
Per ulteriori informazioni sulla configurazione del controllo degli accessi basato sul ruolo (RBAC) di Kubernetes, consultare Using RBAC Authorization
-
Determina quali credenziali
kubectlvengono utilizzate per accedere al cluster. Sul computer, è possibile vedere quali credenzialikubectlutilizza con il seguente comando. Sostituiscilo~/.kube/configcon il percorsokubeconfigdel file se non utilizzi il percorso predefinito.cat ~/.kube/configDi seguito viene riportato un output di esempio.
[...] 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 [...]Nell'output dell'esempio precedente, le credenziali per un utente denominato
adminsono configurate per un cluster denominatomy-cluster. Se si tratta dell’utente che ha creato il cluster, ha già accesso al cluster. Se l’utente non ha creato il cluster, devi completare i passaggi rimanenti per abilitare l’accesso al cluster per gli altri principali IAM. Le best practice IAM consigliano di concedere le autorizzazioni ai ruoli anziché agli utenti. Per visualizzare gli altri principali che hanno attualmente accesso al cluster, esegui il comando seguente:kubectl describe -n kube-system configmap/aws-authDi seguito viene riportato un output di esempio.
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>
L’esempio precedente è una
aws-authConfigMappredefinita. Solo il ruolo dell’istanza del nodo ha accesso al cluster. -
Assicurati di disporre di
roleserolebindingsoclusterroleseclusterrolebindingsdi Kubernetes da mappare ai principali IAM. Per ulteriori informazioni su queste risorse, consulta Utilizzo dell’autorizzazione RBACnella documentazione di Kubernetes. -
Visualizza i
rolesoclusterrolesKubernetes esistenti. L’ambito diRolesènamespace, mentre l’ambito diclusterrolesè il cluster.kubectl get roles -Akubectl get clusterroles -
Visualizza i dettagli dei valori
roleoclusterrolerestituiti nell’output precedente e verifica di disporre delle autorizzazioni (rules) da concedere ai principali IAM del cluster.Sostituisci
role-namecon un nome delrolerestituito nell'output del comando precedente. Sostituiscikube-systemcon lo spazio dei nomi delrole.kubectl describe role role-name -n kube-systemSostituisci
cluster-role-namecon un nome delclusterrolerestituito nell'output del comando precedente.kubectl describe clusterrole cluster-role-name -
Visualizza i
rolebindingsoclusterrolebindingsKubernetes esistenti. L’ambito diRolebindingsènamespace, mentre l’ambito diclusterrolebindingsè il cluster.kubectl get rolebindings -Akubectl get clusterrolebindings -
Visualizza i dettagli di
rolebindingoclusterrolebindinge verifica che dispongano di unroleorclusterroledella fase precedente elencato come unroleRefe un nome di gruppo elencato persubjects.Sostituisci
role-binding-namecon un nome delrolebindingrestituito nell'output del comando precedente. Sostituiscikube-systemcon lonamespacedelrolebinding.kubectl describe rolebinding role-binding-name -n kube-systemDi seguito viene riportato un output di esempio.
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.ioSostituisci
cluster-role-binding-namecon un nome delclusterrolebindingrestituito nell'output del comando precedente.kubectl describe clusterrolebinding cluster-role-binding-nameDi seguito viene riportato un output di esempio.
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
-
-
Modificare
aws-authConfigMap. Per aggiornareConfigMappuoi usare uno strumento adeguato, ad esempioeksctl, oppure puoi eseguire l’aggiornamento in modo manuale tramite modifica.Importante
Ti consigliamo di utilizzare
eksctl, o uno strumento simile, per modificareConfigMap. Per informazioni su altri strumenti che puoi utilizzare, consulta Utilizzare gli strumenti per apportare modifiche a aws- authConfigMapnelle guide alle best practice di Amazon EKS. Una formattazione impropria di aws-authConfigMappuò causare la perdita dell’accesso al cluster.-
Visualizzare le fasi per modificare configmap con eksctl.
-
Visualizzare le fasi per modificare configmap manualmente.
-
Modificare Configmap con Eksctl
-
È necessaria la versione
0.215.0o una versione successiva dello strumento da riga dieksctlcomando installata sul dispositivo o AWS CloudShell. Per l’installazione o l’aggiornamento dieksctl, consulta la sezione Installationnella documentazione di eksctl. -
Visualizza le mappature correnti in
ConfigMap. Sostituiscimy-clustercon il nome del cluster. Sostituisciloregion-codecon la AWS regione in cui si trova il cluster.eksctl get iamidentitymapping --cluster my-cluster --region=region-codeDi seguito viene riportato un output di esempio.
ARN USERNAME GROUPS ACCOUNT arn:aws: iam::111122223333:role/eksctl-my-cluster-my-nodegroup-NodeInstanceRole-1XLS7754U3ZPA system:node:{{EC2PrivateDNSName}} system:bootstrappers,system:nodes -
Aggiungi una mappatura per un ruolo. Sostituisci
my-rolecon il nome del tuo ruolo. Sostituiscieks-console-dashboard-full-access-groupcon il nome del gruppo specificato nel tuo KubernetesRoleBindingo nell'oggetto.ClusterRoleBindingSostituisci111122223333con l'ID del tuo account. Puoi sostituireadmincon un nome a tua scelta.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-arnsImportante
L’ARN del ruolo non può includere un percorso, ad esempio
role/my-team/developers/my-role. Il formato dell’ARN deve esserearn:aws: iam::. In questo esempio,111122223333:role/my-rolemy-team/developers/deve essere rimosso.Di seguito viene riportato un output di esempio.
[...] 2022-05-09 14:51:20 [ℹ] adding identity "{arn-aws}iam::111122223333:role/my-role" to auth ConfigMap -
Aggiungi una mappatura per un utente. Le best practice IAM consigliano di concedere le autorizzazioni ai ruoli anziché agli utenti. Sostituisci
my-usercon il tuo nome utente. Sostituiscieks-console-dashboard-restricted-access-groupcon il nome del gruppo specificato nel tuoRoleBindingKubernetes o nell'oggetto.ClusterRoleBindingSostituisci111122223333con l'ID del tuo account. Puoi sostituiremy-usercon un nome a tua scelta.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-arnsDi seguito viene riportato un output di esempio.
[...] 2022-05-09 14:53:48 [ℹ] adding identity "arn:aws: iam::111122223333:user/my-user" to auth ConfigMap -
Visualizza nuovamente le mappature nella
ConfigMap.eksctl get iamidentitymapping --cluster my-cluster --region=region-codeDi seguito viene riportato un output di esempio.
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
Modificare Configmap manualmente
-
Apri
ConfigMapper la modifica.kubectl edit -n kube-system configmap/aws-authNota
Se ricevi un errore che indica "
Error from server (NotFound): configmaps "aws-auth" not found«, utilizza la procedura in Applica l'aws-auth al tuo cluster ConfigMap per applicare lo stock.ConfigMap -
Aggiungi i tuoi principali IAM alla
ConfigMap. Un gruppo IAM non è un principale IAM, quindi non può essere aggiunto allaConfigMap.-
Per aggiungere un ruolo IAM (ad esempio, per utenti federati): aggiungere i dettagli del ruolo alla sezione
mapRolesdellaConfigMap, indata. Aggiungi questa sezione se non esiste già nel file. Ogni voce supporta i seguenti parametri:-
rolearn: l’ARN; del ruolo IAM da aggiungere. Questo valore non può includere un percorso. Ad esempio, non puoi specificare un ARN, come
arn:aws: iam::. L’ARN deve essere111122223333:role/my-team/developers/role-namearn:aws: iam::.111122223333:role/role-name -
username: il nome utente all’interno di Kubernetes da associare al ruolo IAM.
-
groups: il gruppo o l’elenco dei gruppi Kubernetes a cui mappare il ruolo. Tale gruppo può essere un gruppo predefinito o un gruppo specificato in un
clusterrolebindingo unrolebinding. Per ulteriori informazioni consultare Default roles and role bindingsnella documentazione di Kubernetes.
-
-
Per aggiungere un utente IAM: le best practice IAM consigliano di concedere le autorizzazioni ai ruoli anziché agli utenti. Aggiungi i dettagli dell’utente alla sezione
mapUsersdellaConfigMap, indata. Aggiungi questa sezione se non esiste già nel file. Ogni voce supporta i seguenti parametri:-
userarn: L’ARN; dell’utente IAM da aggiungere.
-
username: Il nome utente all’interno di Kubernetes da associare all’utente IAM.
-
groups: il gruppo o l’elenco dei gruppi Kubernetes a cui mappare l’utente. Tale gruppo può essere un gruppo predefinito o un gruppo specificato in un
clusterrolebindingo unrolebinding. Per ulteriori informazioni consultare Default roles and role bindingsnella documentazione di Kubernetes.
-
-
-
Ad esempio, il blocco YAML seguente contiene:
-
Una sezione
mapRolesche mappa l’istanza del nodo IAM ai gruppi Kubernetes, in modo che i nodi possano registrarsi autonomamente con il cluster e il ruolo IAMmy-console-viewer-rolemappato a un gruppo Kubernetes in grado di visualizzare tutte le risorse Kubernetes per tutti i cluster. Per un elenco delle autorizzazioni del gruppo IAM e Kubernetes necessarie per il ruolo IAMmy-console-viewer-role, consulta Autorizzazioni richieste. -
Una
mapUserssezione che mappa l'utenteadminIAM dall' AWS account predefinito al grupposystem:mastersKubernetes e l'my-userutente di un AWS account diverso mappato a un gruppo Kubernetes in grado di visualizzare le risorse Kubernetes per uno spazio dei nomi specifico. Per un elenco delle autorizzazioni del gruppo IAM e Kubernetes necessarie per l’utente IAMmy-user, consulta Autorizzazioni richieste.Aggiungi o rimuovi righe in base alle esigenze e sostituisci tutti i valori di esempio con quelli desiderati.
# 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
-
-
Salva il file ed esci dall’editor di testo.
Applica la aws-authConfigMap al cluster
La aws-auth ConfigMap viene creata e applicata automaticamente al cluster quando si crea un gruppo di nodi gestito o quando si crea un gruppo di nodi utilizzando eksctl. È inizialmente creata per consentire ai nodi di unirsi al cluster, ma questa ConfigMap può essere usata anche per aggiungere l’accesso RBAC (controllo degli accessi basato sul ruolo) a principali IAM. Se non hai avviato nodi autogestiti e non hai applicato la aws-auth ConfigMap al cluster, puoi farlo utilizzando la procedura seguente.
-
Controlla per vedere se è già stata applicata la
aws-authConfigMap.kubectl describe configmap -n kube-system aws-authSe ricevi un errore di tipo "
Error from server (NotFound): configmaps "aws-auth" not found", procedi con le fasi seguenti per applicare lo stockConfigMap. -
Scarica, modifica e applica la mappa di configurazione dell'autenticatore. AWS
-
Scarica la mappa di configurazione.
curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm.yaml -
Nel file
aws-auth-cm.yaml, imposta ilrolearnsul nome della risorsa Amazon (ARN) del ruolo IAM associato ai nodi. Per eseguire questa operazione, utilizza un editor di testo o sostituiscimy-node-instance-roleeseguendo il comando seguente:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yamlNon modificare altre righe in questo file.
Importante
L’ARN del ruolo non può includere un percorso, ad esempio
role/my-team/developers/my-role. Il formato dell’ARN deve esserearn:aws: iam::. In questo esempio,111122223333:role/my-rolemy-team/developers/deve essere rimosso.Puoi ispezionare gli output dello AWS CloudFormation stack per i tuoi gruppi di nodi e cercare i seguenti valori:
-
InstanceRoleARN — Per i gruppi di nodi creati con
eksctl -
NodeInstanceRole— Per i gruppi di nodi creati con i AWS CloudFormation modelli forniti da Amazon EKS nel Console di gestione AWS
-
-
Applica la configurazione. L’esecuzione di questo comando potrebbe richiedere alcuni minuti.
kubectl apply -f aws-auth-cm.yamlNota
Se ricevi qualsiasi altro errore di tipo di risorsa o autorizzazione, consulta la sezione Accesso negato o non autorizzato (kubectl) nell’argomento relativo alla risoluzione dei problemi.
-
-
Guarda lo stato dei nodi e attendi che raggiungano lo stato
Ready.kubectl get nodes --watchInserisci
Ctrl+Cper tornare a un prompt della shell.