Aiutaci 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à.
Vuoi contribuire a questa guida per l'utente? Scegli il GitHub link Modifica questa pagina che si trova nel riquadro destro di ogni pagina. I tuoi contributi contribuiranno a rendere la nostra guida utente migliore per tutti.
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à.
Grant IAM accesso degli utenti a Kubernetes con un ConfigMap
Importante
La funzionalità aws-auth ConfigMap
è obsoleta. Per il metodo consigliato per gestire l'accesso a Kubernetes APIs, vediGrant IAM accesso degli utenti a Kubernetes con voci di accesso EKS.
L'accesso al cluster tramite i principi IAM è abilitato da AWS IAM Authenticator for Kubernetesaws-auth
ConfigMap
. Per tutte le aws-auth
ConfigMap
impostazioni, consulta Full Configuration Format su
Aggiunta di principali IAM al cluster Amazon EKS
Quando crei un cluster Amazon EKS, al principale IAM che crea il cluster vengono automaticamente concesse system:masters
le autorizzazioni nella configurazione RBAC (role-based access control) del cluster nel piano di controllo di Amazon EKS. Questo principale non appare in nessuna configurazione visibile, quindi assicurati di tenere traccia di quale principale ha originariamente creato il cluster. Per concedere ad altri principali IAM la possibilità di interagire con il tuo cluster, modifica l'interno aws-auth ConfigMap
Kubernetes e crea un Kubernetes rolebinding
o clusterrolebinding
con il nome group
di a specificato inaws-auth ConfigMap
.
Nota
Per ulteriori informazioni sull' Kubernetes configurazione del controllo degli accessi basato sul ruolo (RBAC), vedere Utilizzo
-
Determina quali credenziali
kubectl
vengono utilizzate per accedere al cluster. Sul computer, è possibile vedere quali credenzialikubectl
utilizza con il seguente comando.~/.kube/config
Sostituiscilo con il percorso delkubeconfig
file se non utilizzi il percorso predefinito.cat ~/.kube/config
Di 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
admin
sono configurate per un cluster denominatomy-cluster
. Se si tratta dell'utente che ha creato il cluster, ha già accesso al cluster. Se non è l'utente che ha creato il cluster, devi completare i passaggi rimanenti per abilitare l'accesso al cluster per 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-auth
Di 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-auth
ConfigMap
predefinita. Solo il ruolo dell'istanza del nodo ha accesso al cluster. -
Assicurati di essere esistente Kubernetes
roles
rolebindings
e/oclusterroles
e suclusterrolebindings
cui puoi mappare i principi IAM. Per ulteriori informazioni su queste risorse, vedere Utilizzo dell'autorizzazione RBACnel Kubernetes documentazione. -
Visualizza il tuo esistente Kubernetes
roles
oppureclusterroles
.Roles
sono limitati anamespace
, maclusterroles
sono limitati al cluster.kubectl get roles -A
kubectl get clusterroles
-
Visualizza i dettagli dei valori
role
oclusterrole
restituiti nell'output precedente e verifica di disporre delle autorizzazioni (rules
) da concedere ai principali IAM del cluster.Sostituisci
role-name
con un nome delrole
restituito nell'output del comando precedente. Sostituiscikube-system
con lo spazio dei nomi delrole
.kubectl describe role role-name -n kube-system
Sostituisci
cluster-role-name
con un nome delclusterrole
restituito nell'output del comando precedente.kubectl describe clusterrole cluster-role-name
-
Visualizza il tuo esistente Kubernetes
rolebindings
oppureclusterrolebindings
.Rolebindings
sono limitati anamespace
, maclusterrolebindings
sono limitati al cluster.kubectl get rolebindings -A
kubectl get clusterrolebindings
-
Visualizza i dettagli di
rolebinding
oclusterrolebinding
e verifica che dispongano di unrole
orclusterrole
della fase precedente elencato come unroleRef
e un nome di gruppo elencato persubjects
.Sostituisci
role-binding-name
con un nome delrolebinding
restituito nell'output del comando precedente. Sostituiscikube-system
con lonamespace
delrolebinding
.kubectl describe rolebinding role-binding-name -n kube-system
Di 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.io
Sostituisci
cluster-role-binding-name
con un nome delclusterrolebinding
restituito nell'output del comando precedente.kubectl describe clusterrolebinding cluster-role-binding-name
Di 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-auth
ConfigMap
. Per aggiornareConfigMap
puoi 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-auth
ConfigMap
può causare la perdita dell'accesso al cluster.-
Visualizza i passaggi per modificare configmap con eksctl.
-
Visualizza i passaggi per modificare manualmente configmap.
-
Modifica Configmap con Eksctl
-
È necessaria la versione
0.199.0
o una versione successiva dello strumento da riga dieksctl
comando installato 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-cluster
con il nome del cluster. Sostituisciloregion-code
con la AWS regione in cui si trova il cluster.eksctl get iamidentitymapping --cluster my-cluster --region=region-code
Di 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-role
con il nome del tuo ruolo. Sostituiscieks-console-dashboard-full-access-group
con il nome del gruppo specificato nel tuo KubernetesRoleBinding
oClusterRoleBinding
oggetto. Sostituisci111122223333
con l'ID del tuo account. Puoi sostituireadmin
con 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-arns
Importante
Il ruolo ARN non può includere un percorso come.
role/my-team/developers/my-role
Il formato dell'ARN deve esserearn:aws: iam::
. In questo esempio,111122223333
:role/my-role
my-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-user
con il tuo nome utente. Sostituisciloeks-console-dashboard-restricted-access-group
con il nome del gruppo specificato nel tuo KubernetesRoleBinding
oClusterRoleBinding
oggetto. Sostituisci111122223333
con l'ID del tuo account. Puoi sostituiremy-user
con 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-arns
Di 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-code
Di 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
Modifica Configmap manualmente
-
Apri
ConfigMap
per la modifica.kubectl edit -n kube-system configmap/aws-auth
Nota
Se ricevi un errore che indica "
Error from server (NotFound): configmaps "aws-auth" not found
«, usa la procedura in Applica l'aws-auth ConfigMap al tuo cluster per applicare lo stock.ConfigMap
-
Aggiungi i tuoi principali IAM alla
ConfigMap
. Un gruppo IAM non è un principale IAM, quindi non può essere aggiunto a.ConfigMap
-
Per aggiungere un ruolo IAM (ad esempio, per utenti federati): aggiungere i dettagli del ruolo alla sezione
mapRoles
dellaConfigMap
, 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 è possibile specificare un ARN come.
arn:aws: iam::
L'ARN deve essere111122223333
:role/my-team/developers/role-name
arn:aws: iam::
.111122223333
:role/role-name
-
username: il nome utente all'interno Kubernetes da mappare al ruolo IAM.
-
gruppi: il gruppo o l'elenco di Kubernetes gruppi a cui mappare il ruolo. Tale gruppo può essere un gruppo predefinito o un gruppo specificato in un
clusterrolebinding
o unrolebinding
. Per ulteriori informazioni, vedere Ruoli e associazioni di ruoli predefiniti nellaKubernetes documentazione.
-
-
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
mapUsers
dellaConfigMap
, 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 Kubernetes da mappare all'utente IAM.
-
gruppi: il gruppo o l'elenco di Kubernetes gruppi a cui mappare l'utente. Tale gruppo può essere un gruppo predefinito o un gruppo specificato in un
clusterrolebinding
o unrolebinding
. Per ulteriori informazioni, vedere Ruoli e associazioni di ruoli predefiniti nellaKubernetes documentazione.
-
-
-
Ad esempio, il blocco YAML seguente contiene:
-
Una
mapRoles
sezione che mappa l'istanza del nodo IAM a Kubernetes gruppi in modo che i nodi possano registrarsi presso il cluster e il ruolomy-console-viewer-role
IAM mappato su un Kubernetes gruppo che può visualizzare tutto Kubernetes risorse per tutti i cluster. Per un elenco di IAM e Kubernetes autorizzazioni di gruppo richieste per il ruolomy-console-viewer-role
IAM, vediAutorizzazioni richieste. -
Una
mapUsers
sezione che mappa l'utenteadmin
IAM dall' AWS account predefinito alsystem:masters
Kubernetes gruppo emy-user
utente di un AWS account diverso mappato su un Kubernetes gruppo che può visualizzare Kubernetes risorse per uno spazio dei nomi specifico. Per un elenco di IAM e Kubernetes autorizzazioni di gruppo richieste per l'utentemy-user
IAM, vediAutorizzazioni richieste.Aggiungi o rimuovi righe in base alle esigenze e sostituisci tutti i valori
example values
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-auth
ConfigMap
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 hai avviato nodi autogestiti e non li hai applicati aws-auth
ConfigMap
al tuo cluster, puoi farlo con la seguente procedura.
-
Verifica se hai già applicato il
aws-auth
ConfigMap
.kubectl describe configmap -n kube-system aws-auth
Se ricevi un errore che indica "
Error from server (NotFound): configmaps "aws-auth" not found
«, procedi con i seguenti passaggi per applicare lo stockConfigMap
. -
Scarica, modifica e applica la mappa di configurazione dell' AWS autenticatore.
-
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 ilrolearn
sul nome della risorsa Amazon (ARN) del ruolo IAM associato ai nodi. Per eseguire questa operazione, utilizza un editor di testo o sostituiscimy-node-instance-role
eseguendo il comando seguente:sed -i.bak -e 's|<ARN of instance role (not instance profile)>|my-node-instance-role|' aws-auth-cm.yaml
Non modificate nessun'altra riga in questo file.
Importante
Il ruolo ARN non può includere un percorso come.
role/my-team/developers/my-role
Il formato dell'ARN deve esserearn:aws: iam::
. In questo esempio,111122223333
:role/my-role
my-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 AWS Management Console
-
-
Applica la configurazione. L'esecuzione di questo comando potrebbe richiedere alcuni minuti.
kubectl apply -f aws-auth-cm.yaml
Nota
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 --watch
Inserisci
Ctrl
+C
per tornare a un prompt della shell.