Concedi ai carichi di lavoro Kubernetes l'accesso all'utilizzo AWSKubernetes Account di servizio - Amazon EKS

Aiutaci a migliorare questa pagina

Vuoi contribuire a questa guida per l'utente? Scorri fino alla fine di questa pagina e seleziona Modifica questa pagina su GitHub. 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à.

Concedi ai carichi di lavoro Kubernetes l'accesso all'utilizzo AWSKubernetes Account di servizio

A Kubernetes l'account di servizio fornisce un'identità per i processi eseguiti in un Pod. Per ulteriori informazioni, vedere Gestione degli account di servizio nel Kubernetes documentazione. Se le ricette di Pod se ha bisogno di accedere ai AWS servizi, è possibile mappare l'account del servizio a un' AWS Identity and Access Management identità per concedere tale accesso. Per ulteriori informazioni, consulta Ruoli IAM per gli account di servizio.

Token dell'account di servizio

La BoundServiceAccountTokenVolumefunzionalità è abilitata per impostazione predefinita in Kubernetes versioni. Questa funzionalità migliora la sicurezza dei token degli account di servizio consentendo l'esecuzione dei carichi di lavoro su Kubernetes per richiedere token JSON web che siano associati a audience, orario e chiave. I token dell'account di servizio scadono entro un'ora, In precedenza Kubernetes Nelle versioni, i token non avevano una scadenza. Di conseguenza, i client che si basano su questi token devono aggiornarli entro un'ora. Quanto segue Kubernetes i token SDKs di aggiornamento automatico del client entro il periodo di tempo richiesto:

  • Go versione 0.15.7 e successive

  • Python versione 12.0.0 e successive

  • Java versione 9.0.0 e successive

  • JavaScript versione 0.10.3 e successive

  • Ramo master di Ruby

  • Haskell versione 0.3.0.0

  • C# versione 7.0.5 e successive

Se il carico di lavoro utilizza una versione precedente del client, è necessario aggiornarla. Per consentire una migrazione fluida dei client ai nuovi token degli account di servizio con scadenza temporale, Kubernetes aggiunge un periodo di scadenza esteso al token dell'account di servizio oltre l'ora predefinita. Per EKS i cluster Amazon, il periodo di scadenza esteso è di 90 giorni. I tuoi EKS cluster Amazon Kubernetes APIil server rifiuta le richieste con token che risalgono a più di 90 giorni fa. Ti consigliamo di controllare le tue applicazioni e le relative dipendenze per assicurarti che il client Kubernetes sia uguale o successivo alle versioni SDKs elencate in precedenza.

Quando il API server riceve richieste con token che risalgono a più di un'ora, annota l'evento del registro di controllo con. API annotations.authentication.k8s.io/stale-token Il valore dell'annotazione è simile a quello riportato di seguito:

subject: system:serviceaccount:common:fluent-bit, seconds after warning threshold: 4185802.

Se nel cluster è abilitata la registrazione del piano di controllo (control-plane), le annotazioni di trovano nei registri di controllo. È possibile utilizzare la seguente query CloudWatch Logs Insights per identificare tutti i Pods nel tuo EKS cluster Amazon che utilizzano token obsoleti:

fields @timestamp | filter @logStream like /kube-apiserver-audit/ | filter @message like /seconds after warning threshold/ | parse @message "subject: *, seconds after warning threshold:*\"" as subject, elapsedtime

si subject riferisce all'account di servizio che Pod usato. elapsedtime indica in secondi il tempo trascorso dalla lettura dell'ultimo token. Le richieste al API server vengono negate quando elapsedtime superano i 90 giorni (7.776.000 secondi). Dovresti aggiornare in modo proattivo le tue applicazioni» Kubernetes client SDK per utilizzare una delle versioni elencate in precedenza che aggiorna automaticamente il token. Se il token dell'account di servizio utilizzato dura da quasi 90 giorni e non hai tempo sufficiente per aggiornare SDK le versioni del client prima della scadenza del token, puoi terminare il token esistente Pods e creane di nuovi. Ciò comporta il ripristino del token dell'account di servizio, che ti offre altri 90 giorni per aggiornare la versione del client. SDKs

Se il file Pod fa parte di una distribuzione, il modo consigliato per terminare Pods pur mantenendo un'elevata disponibilità, è necessario eseguire un rollout con il seguente comando. Sostituisci my-deployment con il nome della tua implementazione.

kubectl rollout restart deployment/my-deployment

Componenti aggiuntivi del cluster

I seguenti componenti aggiuntivi del cluster sono stati aggiornati per utilizzare il Kubernetes client SDKs che recupera automaticamente i token degli account di servizio. Assicurati che le versioni elencate, o versioni successive, siano installate sul tuo cluster.

Concessione AWS Identity and Access Management delle autorizzazioni ai carichi di lavoro sui cluster Amazon Elastic Kubernetes Service

Amazon EKS offre due modi per concedere AWS Identity and Access Management le autorizzazioni ai carichi di lavoro eseguiti nei EKS cluster Amazon: IAMruoli per gli account di servizio e EKS identità Pod.

Ruoli IAM per gli account di servizio

IAMroles for service accounts (IRSA) configura le applicazioni Kubernetes in esecuzione AWS con IAM autorizzazioni granulari per accedere a varie altre risorse AWS come bucket Amazon S3, tabelle Amazon DynamoDB e altro ancora. Puoi eseguire più applicazioni contemporaneamente nello stesso EKS cluster Amazon e assicurarti che ogni applicazione disponga solo del set minimo di autorizzazioni di cui ha bisogno. IRSAè stato creato per supportare vari Kubernetes opzioni di distribuzione supportate da AWS AmazonEKS, Amazon EKS Anywhere e gestite autonomamente Servizio Red Hat OpenShift su AWSKubernetes cluster su EC2 istanze Amazon. Pertanto, IRSA è stato creato utilizzando AWS servizi di base come IAM e non ha assunto alcuna dipendenza diretta dal EKS servizio Amazon e dal. EKS API Per ulteriori informazioni, consulta Ruoli IAM per gli account di servizio.

EKSIdentità Pod

EKSPod Identity offre agli amministratori dei cluster un flusso di lavoro semplificato per l'autenticazione delle applicazioni per accedere a varie altre AWS risorse come bucket Amazon S3, tabelle Amazon DynamoDB e altro ancora. EKSPod Identity è destinato EKS esclusivamente e, di conseguenza, semplifica il modo in cui gli amministratori del cluster possono configurare le applicazioni Kubernetes per ottenere le autorizzazioni. IAM Queste autorizzazioni possono ora essere facilmente configurate direttamente con meno passaggi e AWS CLI non è necessario intraprendere alcuna azione all'interno del cluster AWS Management Console EKS API Kubernetes oggetti. Gli amministratori del cluster non devono passare da un IAM servizio all'EKSaltro o utilizzare IAM operazioni privilegiate per configurare le autorizzazioni richieste dalle applicazioni. IAMi ruoli possono ora essere utilizzati su più cluster senza la necessità di aggiornare la policy di fiducia dei ruoli durante la creazione di nuovi cluster. IAMle credenziali fornite da EKS Pod Identity includono tag di sessione del ruolo, con attributi come nome del cluster, namespace, nome dell'account del servizio. I tag di sessione di ruolo consentono agli amministratori di creare un singolo ruolo che può funzionare su più account di servizio, consentendo l'accesso alle AWS risorse in base ai tag corrispondenti. Per ulteriori informazioni, consulta Scopri come EKS Pod Identity concede ai pod l'accesso ai servizi AWS.

Confronto tra EKS Pod Identity e IRSA

Ad alto livello, sia EKS Pod Identity che IRSA consentono di concedere IAM autorizzazioni alle applicazioni in esecuzione su cluster Kubernetes. Ma sono fondamentalmente diversi nel modo in cui vengono configurati, nei limiti supportati e nelle funzionalità abilitate. Di seguito, confrontiamo alcuni degli aspetti chiave di entrambe le soluzioni.

Attributo EKSPod Identity IRSA

Estensibilità dei ruoli

È necessario configurare ogni ruolo una volta per stabilire un rapporto di fiducia con il nuovo responsabile del EKS servizio Amazon. pods.eks.amazonaws.com Dopo questo passaggio una tantum, non è necessario aggiornare la policy di attendibilità del ruolo ogni volta che viene utilizzato in un nuovo cluster.

È necessario aggiornare la politica di fiducia del IAM ruolo con il nuovo cluster EKS OIDC provider endpoint ogni volta che desideri utilizzare il ruolo in un nuovo cluster.

Scalabilità del cluster

EKSPod Identity non richiede agli utenti di configurare il IAM OIDC provider, quindi questo limite non si applica.

Ogni EKS cluster ha un OpenID Connect (OIDC) emittente URL ad esso associato. Da usareIRSA, un unico OpenID Connect è necessario creare un provider per ogni EKS cluster inIAM. IAMha un limite globale predefinito di 100 OIDC fornitori per ciascuno Account AWS. Se prevedi di avere più di 100 EKS cluster per ciascuno Account AWS di essiIRSA, otterrai il IAM OIDC limite del fornitore.

Scalabilità dei ruoli

EKSPod Identity non richiede agli utenti di definire una relazione di fiducia tra IAM ruolo e account di servizio nella politica di fiducia, quindi questo limite non si applica.

InIRSA, definisci la relazione di fiducia tra un IAM ruolo e un account di servizio nella politica di fiducia del ruolo. Per impostazione predefinita, la lunghezza della dimensione della policy di attendibilità è 2048. Ciò significa che in genere è possibile definire 4 relazioni di attendibilità in un'unica policy di attendibilità. Sebbene sia possibile aumentare il limite di lunghezza della policy di attendibilità, in genere si è limitati a un massimo di 8 relazioni di attendibilità all'interno di una singola policy di attendibilità.

Riutilizzabilità dei ruoli

AWS STS le credenziali temporanee fornite da EKS Pod Identity includono tag di sessione del ruolo, come il nome del cluster, lo spazio dei nomi, il nome dell'account di servizio. I tag di sessione di ruolo consentono agli amministratori di creare un singolo IAM ruolo che può essere utilizzato con più account di servizio, con autorizzazioni effettive diverse, consentendo l'accesso alle AWS risorse in base ai tag ad esse allegati. Questo metodo è anche chiamato controllo degli accessi basato sugli attributi (). ABAC Per ulteriori informazioni, consulta Grant pods accesso alle AWS risorse in base ai tag.

AWS STS i tag di sessione non sono supportati. È possibile riutilizzare un ruolo tra i cluster, ma ogni pod riceve tutte le autorizzazioni del ruolo.

Ambienti supportati

EKSPod Identity è disponibile solo su AmazonEKS.

IRSApuò essere utilizzato come AmazonEKS, Amazon EKS Anywhere e gestito autonomamente Servizio Red Hat OpenShift su AWSKubernetes cluster su EC2 istanze Amazon.

EKSversioni supportate

EKS Kubernetes versioni 1.24 o successive. Per le versioni delle piattaforme specifiche, consulta EKSVersioni del cluster Pod Identity.

Tutte le versioni del EKS cluster supportate.