Accédez aux AWS ressources à l'aide des rôles IAM EKS Pod Identity Target - Amazon EKS

Aidez à améliorer cette page

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Accédez aux AWS ressources à l'aide des rôles IAM EKS Pod Identity Target

Lorsque vous exécutez des applications sur Amazon Elastic Kubernetes Service (Amazon EKS), il se peut que vous deviez accéder AWS à des ressources qui existent dans différents comptes. AWS Ce guide explique comment configurer l'accès entre comptes à l'aide d'EKS Pod Identity, qui permet à vos pods Kubernetes d'accéder à d'autres AWS ressources à l'aide de rôles cibles.

Prérequis

Avant de commencer, assurez-vous d'avoir effectué les étapes suivantes :

Comment ça marche

Pod Identity permet aux applications de votre cluster EKS d'accéder aux AWS ressources de différents comptes par le biais d'un processus appelé chaînage des rôles.

Lorsque vous créez une association Pod Identity, vous pouvez fournir deux rôles IAM : un rôle EKS Pod Identity dans le même compte que votre cluster EKS et un rôle IAM cible provenant du compte contenant les AWS ressources auxquelles vous souhaitez accéder (comme les compartiments S3 ou les bases de données RDS). Le rôle EKS Pod Identity doit figurer dans le compte de votre cluster EKS en raison des PassRole exigences IAM, tandis que le rôle IAM cible peut se trouver dans n'importe quel AWS compte. PassRole permet à une AWS entité de déléguer l'attribution de rôles à un autre service. EKS Pod Identity PassRole permet de connecter un rôle à un compte de service Kubernetes, ce qui nécessite que le rôle et l'identité qui le transmettent se trouvent dans le même AWS compte que le cluster EKS. Lorsque votre pod d'application a besoin d'accéder à AWS des ressources, il demande des informations d'identification à Pod Identity. Pod Identity exécute ensuite automatiquement deux hypothèses de rôle en séquence : d'abord en assumant le rôle EKS Pod Identity, puis en utilisant ces informations d'identification pour assumer le rôle IAM cible. Ce processus fournit à votre pod des informations d'identification temporaires dotées des autorisations définies dans le rôle cible, ce qui permet un accès sécurisé aux ressources d'autres AWS comptes.

Considérations concernant la mise en cache

En raison des mécanismes de mise en cache, les mises à jour d'un rôle IAM dans une association Pod Identity existante peuvent ne pas prendre effet immédiatement dans les pods exécutés sur votre cluster EKS. L'agent Pod Identity met en cache les informations d'identification IAM en fonction de la configuration de l'association au moment où les informations d'identification sont récupérées. Si l'association inclut uniquement un rôle EKS Pod Identity et aucun rôle IAM cible, les informations d'identification mises en cache durent 6 heures. Si l'association inclut à la fois l'ARN du rôle EKS Pod Identity et un rôle Target IAM, les informations d'identification mises en cache durent 59 minutes. La modification d'une association existante, telle que la mise à jour de l'ARN du rôle EKS Pod Identity ou l'ajout d'un rôle IAM cible, ne réinitialise pas le cache existant. Par conséquent, l'agent ne reconnaîtra pas les mises à jour tant que les informations d'identification mises en cache ne seront pas actualisées. Pour appliquer les modifications plus rapidement, vous pouvez recréer les modules existants ; sinon, vous devrez attendre que le cache expire.

Étape 1 : créer et associer un rôle IAM cible

Au cours de cette étape, vous allez établir une chaîne de confiance sécurisée en créant et en configurant un rôle IAM cible. À titre de démonstration, nous allons créer un nouveau rôle IAM cible pour établir une chaîne de confiance entre deux AWS comptes : le rôle EKS Pod Identity (par exempleeks-pod-identity-primary-role) du AWS compte du cluster EKS est autorisé à assumer le rôle IAM cible (par exempleeks-pod-identity-aws-resources) sur votre compte cible, ce qui permet d'accéder à des AWS ressources telles que les compartiments Amazon S3.

Création du rôle IAM cible

  1. Ouvrez la console Amazon IAM.

  2. Dans la barre de navigation supérieure, vérifiez que vous êtes connecté au compte contenant les AWS ressources (telles que des compartiments S3 ou des tables DynamoDB) pour votre rôle IAM cible.

  3. Dans le volet de navigation de gauche, choisissez Rôles.

  4. Cliquez sur le bouton Créer un rôle, puis sur le AWS compte sous « Type d'entité de confiance ».

  5. Choisissez Un autre AWS compte, entrez votre numéro de AWS compte (le compte sur lequel se trouve votre rôle EKS Pod Identity), puis choisissez Next.

  6. Ajoutez les politiques d'autorisation que vous souhaitez associer au rôle (par exemple, AmazonS3FullAccess), puis choisissez Next.

  7. Entrez un nom de rôle, par exempleMyCustomIAMTargetRole, puis choisissez Créer un rôle.

Mettre à jour la politique de confiance du rôle IAM cible

  1. Après avoir créé le rôle, vous serez renvoyé à la liste des rôles. Recherchez et sélectionnez le nouveau rôle que vous avez créé à l'étape précédente (par exemple,MyCustomIAMTargetRole).

  2. Sélectionnez l’onglet Trust Relationships (Relations d’approbation).

  3. Cliquez sur Modifier la politique de confiance sur le côté droit.

  4. Dans l'éditeur de stratégie, remplacez le JSON par défaut par votre politique de confiance. Remplacez les valeurs d'espace réservé pour le nom du rôle et 111122223333 dans l'ARN du rôle IAM par l'ID du AWS compte hébergeant votre cluster EKS. Vous pouvez également éventuellement utiliser la politique de confiance PrincipalTags dans les rôles pour autoriser uniquement des comptes de service spécifiques d'un cluster et d'un espace de noms donnés à assumer votre rôle cible. Par exemple :

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

La politique ci-dessus permet au rôle eks-pod-identeity-primary-role du AWS compte 111122223333 doté des tags de session EKS Pod Identity appropriés d'assumer ce rôle.

Si vous avez désactivé les balises de session dans votre EKS Pod Identity, EKS Pod Identity définit également les sts:ExternalId informations relatives au cluster, à l'espace de noms et au compte de service d'un pod lorsqu'il assume un rôle cible.

{ "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 politique ci-dessus permet de garantir que seuls le cluster, l'espace de noms et le compte de service attendus peuvent assumer le rôle cible.

Mettre à jour la politique d'autorisation pour le rôle EKS Pod Identity

Au cours de cette étape, vous allez mettre à jour la politique d'autorisation du rôle EKS Pod Identity associé à votre cluster Amazon EKS en ajoutant l'ARN du rôle IAM cible en tant que ressource.

  1. Ouvrez la console Amazon EKS.

  2. Dans le volet de navigation de gauche, sélectionnez Clusters, puis sélectionnez le nom de votre cluster EKS.

  3. Choisissez l'onglet Access.

  4. Sous Associations Pod Identity, sélectionnez votre rôle EKS Pod Identity.

  5. Choisissez Autorisations, Ajouter des autorisations, puis Créer une politique intégrée.

  6. Choisissez JSON sur le côté droit.

  7. Dans l'éditeur de politique, remplacez le JSON par défaut par votre politique d'autorisation. Remplacez la valeur de l'espace réservé pour le nom du rôle et 222233334444 dans l'ARN du rôle IAM par votre rôle IAM cible. Par exemple :

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

Étape 2 : associer le rôle IAM cible à un compte de service Kubernetes

Au cours de cette étape, vous allez créer une association entre le rôle Target IAM et le compte de service Kubernetes dans votre cluster EKS.

  1. Ouvrez la console Amazon EKS.

  2. Dans le volet de navigation de gauche, sélectionnez Clusters, puis sélectionnez le nom du cluster auquel vous souhaitez ajouter l'association.

  3. Choisissez l’onglet Access.

  4. Dans Associations d’identité du pod, sélectionnez Créer.

  5. Choisissez le rôle EKS Pod Identity dans le rôle IAM que vos charges de travail devront assumer.

  6. Choisissez le rôle Target IAM dans le rôle Target IAM qui sera assumé par le rôle EKS Pod Identity.

  7. Dans le champ espace de noms Kubernetes, entrez le nom de l'espace de noms dans lequel vous souhaitez créer l'association (par exemple,). my-app-namespace Cela définit l'emplacement du compte de service.

  8. Dans le champ Compte de service Kubernetes, entrez le nom du compte de service (par exemple,my-service-account) qui utilisera les informations d'identification IAM. Cela lie le rôle IAM au compte de service.

  9. Choisissez Create pour créer l'association.