Informazioni su come EKS Pod Identity consente ai pod di accedere ai servizi AWS - Amazon EKS

Contribuisci a migliorare questa pagina

Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.

Informazioni su come EKS Pod Identity consente ai pod di accedere ai servizi AWS

Le applicazioni nei container di un pod possono utilizzare un AWS SDK o AWS CLI per effettuare richieste API ai servizi AWS utilizzando le autorizzazioni AWS Identity and Access Management (IAM). Le applicazioni devono firmare le proprie richieste API AWS con le credenziali AWS.

Le associazioni EKS Pod Identity forniscono la possibilità di gestire le credenziali per le applicazioni, analogamente al modo in cui i profili di istanza Amazon EC2 forniscono le credenziali alle istanze Amazon EC2. Invece di creare e distribuire le tue credenziali AWS ai container o utilizzare il ruolo dell’istanza Amazon EC2, associ un ruolo IAM a un account di servizio Kubernetes e configuri i tuoi pod per utilizzare l’account di servizio.

Ogni associazione EKS Pod Identity associa un ruolo a un account di servizio in uno spazio dei nomi nel cluster specificato. Se hai la stessa applicazione in più cluster, puoi creare associazioni identiche in ogni cluster senza modificare la policy di attendibilità del ruolo.

Se un pod utilizza un account di servizio con un'associazione, Amazon EKS imposta le variabili di ambiente nei container del pod. Le variabili di ambiente configurano AWS SDK, inclusa AWS CLI, per utilizzare le credenziali di EKS Pod Identity.

Vantaggi delle associazioni EKS Pod Identity

Le associazioni EKS Pod Identity offrono i seguenti vantaggi:

  • Privilegio minimo: è possibile definire l’ambito delle autorizzazioni IAM per un account di servizio; solo i pod che utilizzano tale account avranno accesso alle autorizzazioni definite. Questa caratteristica elimina anche la necessità di soluzioni di terze parti, ad esempio kiam o kube2iam.

  • Isolamento delle credenziali: quando l’accesso al servizio di metadati di istanza (IMDS) di Amazon EC2 è limitato, un container del pod può recuperare solo le credenziali per il ruolo IAM associato all’account del servizio che utilizza. Un container non ha mai accesso alle credenziali utilizzate da altri container in altri pod. Se IMDS non è soggetto a restrizioni, i container del pod hanno accesso anche al ruolo IAM del nodo Amazon EKS e i container potrebbero essere in grado di accedere alle credenziali dei ruoli IAM di altri pod sullo stesso nodo. Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

Nota

I pod configurati con hostNetwork: true avranno sempre accesso IMDS, ma AWS SDK e CLI utilizzeranno le credenziali di Pod Identity quando abilitati.

  • Verificabilità: accesso e registrazione degli eventi sono disponibili tramite AWS CloudTrail per garantire controlli retrospettivi.

Importante

I container non sono un limite di sicurezza e l’uso di Pod Identity non modifica questo aspetto. I pod assegnati allo stesso nodo condivideranno un kernel e potenzialmente altre risorse a seconda della configurazione del pod. Sebbene i pod in esecuzione su nodi separati siano isolati a livello di elaborazione, esistono applicazioni di nodo che dispongono di autorizzazioni aggiuntive nell’API Kubernetes oltre all’ambito di una singola istanza. Alcuni esempi sono kubelet, kube-proxy, driver di archiviazione CSI o le tue applicazioni Kubernetes.

EKS Pod Identity è un metodo più semplice di Ruoli IAM per gli account di servizio, in quanto non utilizza provider di identità OIDC. EKS Pod Identity presenta i seguenti miglioramenti:

  • Operazioni indipendenti: in molte organizzazioni, la creazione di provider di identità OIDC è una responsabilità di team diversi rispetto all’amministrazione dei cluster Kubernetes. EKS Pod Identity offre una netta separazione dei compiti, in cui tutta la configurazione delle associazioni EKS Pod Identity viene eseguita in Amazon EKS e tutta la configurazione delle autorizzazioni IAM viene eseguita in IAM.

  • Riusabilità: EKS Pod Identity utilizza un singolo principale IAM anziché principali separati per ogni cluster utilizzato dai ruoli IAM per gli account di servizio. L'amministratore IAM aggiunge il seguente principale alla policy di attendibilità di qualsiasi ruolo per renderlo utilizzabile da parte delle associazioni EKS Pod Identity.

    "Principal": { "Service": "pods.eks.amazonaws.com" }
  • Scalabilità: ciascun set di credenziali temporanee è assunto dal servizio di autenticazione EKS in EKS Pod Identity, anziché da ciascun AWS SDK eseguito in ciascun pod. Quindi, si esegue Amazon EKS Pod Identity Agent su ogni nodo rilasciando le credenziali agli SDK. Pertanto, il carico si riduce a una volta per ciascun nodo e non è duplicato in ciascun pod. Per ulteriori dettagli del processo, consulta Comprensione di come funziona EKS Pod Identity.

Per ulteriori informazioni su come confrontare le due alternative, consulta Concessione ai carichi di lavoro Kubernetes dell’accesso a AWS utilizzando gli account di servizio Kubernetes.

Panoramica sulla configurazione delle associazioni EKS Pod Identity

Attiva le associazioni EKS Pod Identity completando le seguenti procedure:

  1. Configurazione dell’agente Amazon EKS Pod Identity: completi questa procedura una sola volta per ogni cluster. Non è necessario completare questo passaggio se la modalità automatica EKS è abilitata sul cluster.

  2. Assegnazione di un ruolo IAM a un account di servizio Kubernetes: completa questa procedura per ciascun set univoco di autorizzazioni che desideri abbia un’applicazione.

  3. Configurazione dei pod per accedere ai servizi AWS con un account di servizio: completa questa procedura per ciascun pod che deve accedere ai servizi AWS.

  4. Utilizzo di Pod Identity con SDK AWS: verifica che il carico di lavoro utilizzi un AWS SDK di una versione supportata e che il carico di lavoro utilizzi la catena di credenziali predefinita.

Limiti

  • Sono supportate fino a 5.000 associazioni EKS Pod Identity per cluster per mappare i ruoli IAM agli account di servizio Kubernetes.

Considerazioni

  • Associazione del ruolo IAM: ogni account di servizio Kubernetes in un cluster può essere associato a un ruolo IAM dello stesso account AWS del cluster. Per modificare il ruolo, modifica l’associazione EKS Pod Identity. Per l’accesso multi-account, delega l’accesso al ruolo utilizzando i ruoli IAM. Per ulteriori informazioni, consulta Delegare l’accesso tra account AWS tramite i ruoli IAM nella Guida per l’utente IAM.

  • Agente EKS Pod Identity: l’agente Pod Identity è necessario per utilizzare EKS Pod Identity. L’agente funziona come Kubernetes DaemonSet sui nodi del cluster, fornendo credenziali solo ai pod sullo stesso nodo. Utilizza hostNetwork del nodo, la porta occupante 80 e 2703 sull’indirizzo locale del collegamento (169.254.170.23 per IPv4, [fd00:ec2::23] per IPv6). Se IPv6 è disabilitato nel cluster, disabilita IPv6 per l’agente Pod Identity. Per ulteriori informazioni, consulta Disabilitare IPv6 nell’agente EKS Pod Identity.

  • Coerenza finale: le associazioni EKS Pod Identity alla fine sono coerenti, con potenziali ritardi di diversi secondi dopo le chiamate API. Evita di creare o aggiornare associazioni in percorsi di codice critici e ad alta disponibilità. Esegui, invece, queste azioni in routine di inizializzazione o configurazione separate e meno frequenti. Per ulteriori informazioni, consulta Gruppi di sicurezza per pod nella Guida alle best practice EKS.

  • Considerazioni sui proxy e sui gruppi di sicurezza: per i pod che utilizzano un proxy, aggiungi 169.254.170.23 (IPv4) e [fd00:ec2::23] (IPv6) alle variabili di ambiente no_proxy/NO_PROXY per evitare richieste non riuscite all’agente EKS Pod Identity. Se utilizzi i gruppi di sicurezza per pods con il CNI di AWS VPC, imposta il flag ENABLE_POD_ENI su “vero” e il flag POD_SECURITY_GROUP_ENFORCING_MODE su “standard”. Per ulteriori informazioni, consulta Assegnare di gruppi di sicurezza ai singoli pod.

Versioni del cluster EKS Pod Identity

Per utilizzare le associazioni EKS Pod Identity, il cluster deve avere una versione della piattaforma uguale o successiva a quella elencata nella tabella seguente o una versione Kubernetes successiva a quelle elencate nella tabella. Per trovare la versione consigliata di Amazon EKS Pod Identity Agent per una versione Kubernetes, consulta Verifica la compatibilità delle versioni aggiuntive di Amazon EKS con un cluster.

Versione di Kubernetes Versione della piattaforma

Versioni di Kubernetes non elencate

Tutte le versioni delle piattaforma supportate

1.28

eks.4

Restrizioni di EKS Pod Identity

Le associazioni EKS Pod Identity sono disponibili in:

Le associazioni EKS Pod Identity non sono disponibili in quanto segue:

  • AWS Outposts.

  • Amazon EKS Anywhere.

  • Cluster Kubernetes creati ed eseguiti su Amazon EC2. I componenti di EKS Pod Identity sono disponibili solo su Amazon EKS.

Non è possibile utilizzare le associazioni EKS Pod Identity con:

  • Pod che vengono eseguiti ovunque, tranne che su istanze Amazon EC2 di Linux. Pod Linux e Windows che sono eseguiti su AWS Fargate (Fargate) non sono supportati. I pod che vengono eseguiti su istanze Amazon EC2 di Windows non sono supportati.