Accedi alle AWS risorse utilizzando i ruoli IAM di EKS Pod Identity Target - Amazon EKS

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

Accedi alle AWS risorse utilizzando i ruoli IAM di EKS Pod Identity Target

Quando esegui applicazioni su Amazon Elastic Kubernetes Service (Amazon EKS), potresti dover accedere AWS a risorse esistenti in account diversi. AWS Questa guida mostra come configurare l'accesso su più account utilizzando EKS Pod Identity, che consente ai pod Kubernetes di accedere ad altre risorse utilizzando i ruoli di destinazione. AWS

Prerequisiti

Prima di iniziare, assicurati di aver completato i passaggi seguenti:

Come funziona

Pod Identity consente alle applicazioni del cluster EKS di accedere alle AWS risorse tra gli account attraverso un processo chiamato concatenamento dei ruoli.

Quando crei un'associazione Pod Identity, puoi fornire due ruoli IAM: un ruolo EKS Pod Identity nello stesso account del cluster EKS e un ruolo IAM Target dall'account contenente AWS le risorse a cui desideri accedere (come i bucket S3 o i database RDS). Il ruolo EKS Pod Identity deve trovarsi nell'account del cluster EKS a causa PassRole dei requisiti IAM, mentre il ruolo IAM di Target può essere in qualsiasi account. AWS PassRole consente a un' AWS entità di delegare l'assunzione del ruolo a un altro servizio. EKS Pod Identity utilizza PassRole per connettere un ruolo a un account di servizio Kubernetes, richiedendo che sia il ruolo che l'identità che lo trasmette si trovino nello stesso AWS account del cluster EKS. Quando il pod dell'applicazione deve accedere alle AWS risorse, richiede le credenziali a Pod Identity. Quindi, Pod Identity esegue automaticamente due assunzione di ruolo in sequenza: prima assume il ruolo EKS Pod Identity, poi utilizza tali credenziali per assumere il ruolo IAM di destinazione. Questo processo fornisce al pod credenziali temporanee con le autorizzazioni definite nel ruolo di destinazione, consentendo l'accesso sicuro alle risorse di altri account. AWS

Considerazioni sul caching

Per via dei meccanismi del caching, gli aggiornamenti per un ruolo IAM in un’associazione Pod Identity esistente potrebbero non avere effetto immediato nei pod in esecuzione sul cluster EKS. L’agente Pod Identity memorizza nella cache le credenziali IAM in base alla configurazione dell’associazione al momento del recupero delle credenziali. Se l’associazione include solo un ruolo EKS Pod Identity e nessun ruolo IAM di destinazione, le credenziali memorizzate nella cache durano 6 ore. Se l’associazione include sia l’ARN del ruolo EKS Pod Identity che un ruolo IAM di destinazione, le credenziali memorizzate nella cache durano 59 minuti. La modifica di un’associazione esistente, ad esempio l’aggiornamento dell’ARN del ruolo EKS Pod Identity o l’aggiunta di un ruolo IAM di destinazione, non reimposta la cache esistente. Di conseguenza, l’agente non riconoscerà gli aggiornamenti fino all’aggiornamento delle credenziali memorizzate nella cache. Per applicare prima le modifiche, è possibile ricreare i pod esistenti; in caso contrario, sarà necessario attendere la scadenza della cache.

Passaggio 1: creazione e associazione di un ruolo IAM di destinazione

In questo passaggio, stabilirai una catena di affidabilità sicura creando e configurando un ruolo IAM di destinazione. A titolo dimostrativo, creeremo un nuovo ruolo Target IAM per stabilire una catena di fiducia tra due AWS account: il ruolo EKS Pod Identity (ad esempioeks-pod-identity-primary-role) nell' AWS account del cluster EKS ottiene l'autorizzazione ad assumere il ruolo Target IAM (ad esempioeks-pod-identity-aws-resources) nel tuo account di destinazione, abilitando l'accesso a AWS risorse come i bucket Amazon S3.

Creazione del ruolo IAM di destinazione

  1. Apri la console IAM Amazon.

  2. Nella barra di navigazione in alto, verifica di aver effettuato l'accesso all'account contenente AWS le risorse (come i bucket S3 o le tabelle DynamoDB) per il tuo ruolo IAM di Target.

  3. Nel pannello di navigazione a sinistra, seleziona Ruoli.

  4. Scegli il pulsante Crea ruolo, quindi l' AWS account nella sezione «Tipo di entità affidabile».

  5. Scegli Altro AWS account, inserisci il tuo numero di AWS account (l'account in cui esiste il tuo ruolo EKS Pod Identity), quindi scegli Avanti.

  6. Aggiungi le politiche di autorizzazione che desideri associare al ruolo (ad esempio, AmazonS3FullAccess), quindi scegli Avanti.

  7. Immetti un nome ruolo, come MyCustomIAMTargetRole, quindi scegli Crea ruolo.

Aggiorna la policy di affidabilità di un ruolo IAM di destinazione

  1. Dopo aver creato il ruolo, ritornerai all’elenco Ruoli. Trova e seleziona il nuovo ruolo creato nel passaggio precedente (ad esempio, MyCustomIAMTargetRole).

  2. Seleziona la scheda Relazioni di attendibilità.

  3. Fai clic su Modifica policy di affidabilità sul lato destro.

  4. Nell’editor della policy, sostituisci il file JSON predefinito con la tua policy di affidabilità. Sostituisci i valori segnaposto per il nome del ruolo e 111122223333 nell'ARN del ruolo IAM con l'ID dell' AWS account che ospita il tuo cluster EKS. Opzionalmente, puoi anche utilizzare PrincipalTags la policy di fiducia dei ruoli per autorizzare solo account di servizio specifici di un determinato cluster e namespace ad assumere il tuo ruolo di destinazione. Esempio:

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Condition": { "StringEquals": { "aws:RequestTag/eks-cluster-arn": "arn:aws:eks:us-east-1:111122223333:cluster/example-cluster", "aws:RequestTag/kubernetes-namespace": "ExampleNameSpace", "aws:RequestTag/kubernetes-service-account": "ExampleServiceAccountName" }, "ArnEquals": { "aws:PrincipalARN": "arn:aws:iam::111122223333:role/eks-pod-identity-primary-role" } } } ] }

La politica di cui sopra consente al ruolo eks-pod-identeity-primary-role dell' AWS account 111122223333 con i relativi EKS Pod Identity Session Tag di assumere questo ruolo.

Se hai Disabilitato i tag di sessione nella tua EKS Pod Identity, EKS Pod Identity imposta anche sts:ExternalId con le informazioni sul cluster, sul namespace e sull’account di servizio di un pod quando assume un ruolo di destinazione.

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "region/111122223333/cluster-name/namespace/service-account-name" }, "ArnEquals": { "aws:PrincipalARN": "arn:aws:iam::111122223333:role/eks-pod-identity-primary-role" } } }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "sts:TagSession" } ] }

La policy di cui sopra aiuta a garantire che solo il cluster, il namespace e l’account di servizio previsti possano assumere il ruolo di destinazione.

Aggiorna la policy di autorizzazione per il ruolo EKS Pod Identity

In questo passaggio, aggiornerai la policy di autorizzazione del ruolo EKS Pod Identity associato al tuo cluster Amazon EKS aggiungendo l’ARN del ruolo IAM di destinazione come risorsa.

  1. Aprire la Console Amazon EKS.

  2. Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster EKS.

  3. Scegliere la scheda Accesso.

  4. In Associazioni Pod Identity, seleziona il tuo ruolo EKS Pod Identity.

  5. Scegli Autorizzazioni, scegli Aggiungi autorizzazioni, quindi Crea policy in linea.

  6. Scegli JSON sul lato destro.

  7. Nell’editor della policy, sostituisci il file JSON predefinito con la tua policy di autorizzazione. Sostituisci il valore segnaposto per il nome del ruolo e 222233334444 nell’ARN del ruolo IAM con il tuo ruolo IAM di destinazione. Esempio:

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole", "sts:TagSession" ], "Resource": "arn:aws:iam::222233334444:role/eks-pod-identity-aws-resources" } ] }

Passaggio 2: associazione del ruolo IAM di destinazione a un account di servizio Kubernetes

In questo passaggio, creerai un’associazione tra il ruolo IAM di destinazione e l’account del servizio Kubernetes nel tuo cluster EKS.

  1. Aprire la Console Amazon EKS.

  2. Nel riquadro di navigazione a sinistra, seleziona Cluster, quindi seleziona il nome del cluster a cui aggiungere l’associazione.

  3. Scegli la scheda Accesso.

  4. In Associazioni Pod Identity, scegli Crea.

  5. Scegli il ruolo EKS Pod Identity nel ruolo IAM per i tuoi carichi di lavoro da assumere.

  6. Scegli il ruolo IAM di destinazione nel ruolo IAM di destinazione che sarà assunto dal ruolo EKS Pod Identity.

  7. Nel campo del namespace Kubernetes, inserisci il nome del namespace in cui desideri creare l’associazione (ad esempio, my-app-namespace). Ciò definisce dove risiede l’account del servizio.

  8. Nel campo dell’account del servizio Kubernetes, inserisci il nome dell’account di servizio (ad esempio, my-service-account) che utilizzerà le credenziali IAM. Ciò collega il ruolo IAM all’account del servizio.

  9. Scegli Crea per creare l’associazione.