Ruoli IAM per gli account di servizio - Amazon EKS

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à.

Ruoli IAM per gli account di servizio

Le applicazioni nei container di un Pod possono usare un SDK AWS o la AWS CLI per effettuare richieste API a Servizi AWS utilizzando autorizzazioni (IAM) AWS Identity and Access Management. Le applicazioni devono firmare le proprie richieste API AWS con le credenziali AWS. I ruoli IAM per gli account di servizio 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 credenziali AWS ai container o di utilizzare il ruolo dell'istanza Amazon EC2, puoi associare un ruolo IAM a un account di servizio Kubernetes e configurare i Pods per l'uso dell'account di servizio. Non è possibile utilizzare i ruoli IAM per gli account di servizio con i cluster locali per Amazon EKS su AWS Outposts.

La caratteristica dei ruoli IAM per gli account di servizio offre i seguenti vantaggi:

  • Privilegio minimo: è possibile definire l'ambito delle autorizzazioni IAM per un account di servizio; solo i Pods 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: un container del Pod's 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 Pods. Quando si utilizzano ruoli IAM per gli account di servizio, i container Pod's hanno anche le autorizzazioni assegnate al nodo del ruolo IAM Amazon EKS, a meno che non blocchi l'accesso Pod al servizio di metadati di istanza (IMDS) di Amazon EC2. Per ulteriori informazioni, consulta Limitazione dell'accesso al profilo dell'istanza assegnato al nodo worker.

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

Abilita i ruoli IAM per gli account di servizio completando le seguenti procedure:

  1. Creazione di un fornitore OIDC IAM per il cluster: questa procedura viene completata una sola volta per ogni cluster.

    Nota

    Se abiliti l'endpoint EKS VPC, non è possibile accedere all'endpoint del servizio EKS OIDC dall'interno di quel VPC. Di conseguenza, le operazioni come la creazione di un provider OIDC con eksctl nel VPC non funzioneranno e comporteranno un timeout durante il tentativo di richiesta di https://oidc.eks.region.amazonaws.com. Segue un messaggio di errore di esempio:

    ** server can't find oidc.eks.region.amazonaws.com: NXDOMAIN

    Per completare questo passaggio, puoi eseguire il comando all'esterno del VPC, ad esempio in AWS CloudShell o su un computer connesso a Internet.

  2. Configurazione di un account di servizio Kubernetes per assumere un ruolo IAM: completa questa procedura per ogni set univoco di autorizzazioni che desideri abbia un'applicazione.

  3. Configurazione dei Pods per l'utilizzo di un account di servizio Kubernetes: completa questa procedura per ogni Pod che deve accedere a Servizi AWS.

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

IAM, Kubernetes, e OpenID Connect (OIDC) informazioni di base

Nel 2014, AWS Identity and Access Management ha aggiunto il supporto per le identità federate mediante OpenID Connect (OIDC). Questa caratteristica consente di autenticare le chiamate API AWS con provider di identità supportati e ricevere un token Web OIDC JSON (JWT) valido. É possibile passare questo token all'operazione API AWS STS AssumeRoleWithWebIdentity e ricevere credenziali temporanee per il ruolo IAM. È possibile utilizzare queste credenziali per interagire con qualsiasi servizio Servizio AWS, tra cui Amazon S3 e DynamoDB.

Ogni token JWT è firmato da una coppia di chiavi di firma. Le chiavi vengono fornite dal provider OIDC gestito da Amazon EKS e la chiave privata ruota ogni 7 giorni. Amazon EKS conserva le chiavi pubbliche fino alla loro scadenza. Se connetti client OIDC esterni, tieni presente che devi aggiornare le chiavi di firma prima della scadenza della chiave pubblica. Scopri come effettuare il Recupera le chiavi di firma.

Kubernetes utilizza da tempo gli account di servizio come sistema di identità interno. Pods può autenticarsi con il Kubernetes Server API che utilizza un token montato automaticamente (che non era OIDC JWT) che solo il Kubernetes server API potrebbe convalidare. Questi token legacy dell'account di servizio non hanno scadenza e la rotazione della chiave di firma è un processo difficile. Nella Kubernetes versione 1.12, è stato aggiunto il supporto per una nuova ProjectedServiceAccountToken caratteristica. Questa funzionalità è un token Web OIDC JSON che contiene anche l'identità dell'account del servizio e supporta un pubblico configurabile.

Amazon EKS ora ospita un endpoint di rilevamento OIDC pubblico per ogni cluster, contenente le chiavi di firma per i token Web ProjectedServiceAccountToken JSON, in modo che i sistemi esterni, ad esempio IAM, possano convalidare e accettare i token OIDC emessi da Kubernetes.