Aidez à améliorer cette page
Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.
Découvrir comment l’identité du pod Amazon EKS accorde aux pods l’accès aux services AWS
Les applications dans les conteneurs d’un Pod peuvent utiliser un SDK AWS ou l’interface CLI AWS pour envoyer des requêtes API aux services AWS à l’aide des autorisations de la gestion des identités et des accès AWS (IAM). Les applications doivent signer leurs demandes d’API AWS avec les informations d’identification AWS.
Les identités du pod EKS permettent de gérer les informations d’identification de vos applications, de la même manière que les profils d’instance Amazon EC2 fournissent des informations d’identification aux instances Amazon EC2. Au lieu de créer et distribuer vos informations d’identification AWS aux conteneurs ou d’utiliser le rôle de l’instance Amazon EC2, vous associez un rôle IAM à un compte de service Kubernetes et vous configurez vos pods pour qu’ils utilisent le compte de service.
Chaque identité du pod EKS mappe un rôle à un compte de service dans un espace de noms dans le cluster spécifié. Si vous avez la même application dans plusieurs clusters, vous pouvez faire des associations identiques dans chaque cluster sans modifier la politique d’approbation du rôle.
Si un pod utilise un compte de service qui a une association, Amazon EKS définit des variables d’environnement dans les conteneurs du pod. Les variables d’environnement configurent les kits SDK AWS, y compris l’AWS CLI, pour utiliser les informations d’identification d’identité du pod EKS.
Avantages des identités du pod EKS
Les identités du pod EKS offrent les avantages suivants :
-
Moindre privilège : vous pouvez définir les autorisations IAM sur un compte de service et seuls les pods qui utilisent ce compte de service ont accès à ces autorisations. Cette fonctionnalité élimine également le besoin de solutions tierces telles que
kiamoukube2iam. -
Isolation des informations d’identification : lorsque l’accès au service de métadonnées d’instance (IMDS) Amazon EC2 est restreint, les conteneurs d’un pod ne peuvent récupérer que les informations d’identification du rôle IAM associé au compte de service utilisé par le conteneur. Un conteneur n’a jamais accès aux informations d’identification qui sont utilisées par d’autres conteneurs dans d’autres pods. Si IMDS n’est pas restreint, les conteneurs du Pod ont également accès au rôle IAM du nœud Amazon EKS et les conteneurs peuvent être en mesure d’accéder aux informations d’identification des rôles IAM d’autres Pods sur le même nœud. Pour plus d'informations, consultez Restreindre l'accès au profil d'instance affecté au composant master.
Note
Les pods configurés avec hostNetwork: true auront toujours accès à IMDS, mais les kits SDK et l’AWS CLI utiliseront les informations d’identification du pod lorsque celles-ci seront activées.
-
Auditabilité : l’accès et la journalisation des événements sont disponibles via AWS CloudTrail afin de faciliter l’audit rétrospectif.
Important
Les conteneurs ne constituent pas une frontière de sécurité, et l’utilisation de l’identité du pod ne change rien à cela. Les pods attribués au même nœud partageront un noyau et éventuellement d’autres ressources en fonction de la configuration de votre pod. Bien que les pods s’exécutant sur des nœuds distincts soient isolés au niveau de la couche de calcul, certaines applications de nœuds disposent d’autorisations supplémentaires dans l’API Kubernetes qui dépassent le champ d’application d’une instance individuelle. Quelques exemples : kubelet, kube-proxy, les pilotes de stockage CSI ou vos propres applications Kubernetes.
L’identité du pod EKS est une méthode plus simple que Rôles IAM pour les comptes de service, car elle n’utilise pas de fournisseurs d’identité OIDC. L’identité du pod EKS présente les améliorations suivantes :
-
Opérations indépendantes : dans de nombreuses organisations, la création de fournisseurs d’identité OIDC relève de la responsabilité d’équipes différentes de celles qui administrent les clusters Kubernetes. L’identité du pod EKS présente une séparation nette des tâches, où toute la configuration des associations de l’identité du pod EKS est effectuée dans Amazon EKS et toute la configuration des autorisations IAM est effectuée dans IAM.
-
Réutilisabilité : l’identité du pod EKS utilise un seul principal IAM au lieu des principaux distincts pour chaque cluster que les rôles IAM des comptes de service utilisent. Votre administrateur IAM ajoute le principal suivant à la politique d’approbation de n’importe quel rôle pour le rendre utilisable par les identités du pod EKS.
"Principal": { "Service": "pods.eks.amazonaws.com" } -
Capacité de mise à l’échelle : chaque ensemble d’informations d’identification temporaires est pris en charge par le service d’authentification EKS dans l’identité du pod EKS, au lieu de chaque kit SDK AWS que vous exécutez dans chaque pod. Ensuite, l’agent de l’identité du pod Amazon EKS qui s’exécute sur chaque nœud émet les informations d’identification aux kits SDK. La charge est ainsi réduite à une seule fois pour chaque nœud et n’est pas dupliquée dans chaque pod. Pour plus de détails sur le processus, consultez Comprendre le fonctionnement de l’identité du pod Amazon EKS.
Pour plus d’informations sur la comparaison des deux solutions, consultez Accorder aux charges de travail Kubernetes l’accès à AWS à l’aide des comptes de service Kubernetes.
Présentation de la configuration des identités du pod EKS
Activez les identités du pod EKS en effectuant les procédures suivantes :
-
Configurer l’agent de l’identité du pod Amazon EKS : vous n’effectuez cette procédure qu’une seule fois pour chaque cluster. Vous n’avez pas besoin d’effectuer cette étape si le mode automatique EKS est activé sur votre cluster.
-
Attribuer un rôle IAM à un compte de service Kubernetes : effectuez cette procédure pour chaque ensemble unique d’autorisations que vous voulez attribuer à une application.
-
Configurer les pods pour accéder aux services AWS avec des comptes de service : effectuez cette procédure pour chaque pod qui doit accéder aux services AWS.
-
Utiliser l’identité du pod avec le SDK AWS : vérifiez que la charge de travail utilise un kit SDK AWS d’une version prise en charge et qu’elle utilise la chaîne d’informations d’identification par défaut.
Limites
-
Jusqu’à 5 000 associations d’identité du pod EKS par cluster sont prises en charge pour mapper les rôles IAM aux comptes de service Kubernetes.
Considérations
-
Association de rôles IAM : chaque compte de service Kubernetes d’un cluster peut être associé à un rôle IAM du même compte AWS que le cluster. Pour modifier le rôle, modifiez l’association d’identité du pod EKS. Pour l’accès intercompte, déléguez l’accès au rôle à l’aide des rôles IAM. Pour en savoir plus, consultez Déléguer l’accès entre les comptes AWS à l’aide des rôles IAM dans le Guide de l’utilisateur IAM.
-
Agent d’identité du pod EKS : l’agent d’identité du pod est nécessaire pour utiliser l’identité du pod EKS. L’agent s’exécute en tant que
DaemonSetKubernetes sur les nœuds du cluster, fournissant des informations d’identification uniquement aux pods du même nœud. Il utilise lehostNetworkdu nœud, occupant les ports80et2703sur l’adresse locale de liaison (169.254.170.23pour IPv4,[fd00:ec2::23]pour IPv6). Si IPv6 est désactivé dans votre cluster, désactivez IPv6 pour l’agent d’identité du pod EKS. Pour en savoir plus, consultez Désactiver IPv6 dans l’agent d’identité du pod EKS. -
Cohérence à terme : les associations d’identité du pod EKS sont cohérentes à terme, avec des retards potentiels de plusieurs secondes après les appels d’API. Évitez de créer ou de mettre à jour des associations dans des chemins de code critiques et à haute disponibilité. Effectuez plutôt ces actions dans des routines d’initialisation ou de configuration distinctes et moins fréquentes. Pour en savoir plus, consultez Groupes de sécurité par pod dans le Guide des bonnes pratiques EKS.
-
Considérations relatives au proxy et au groupe de sécurité : pour les pods utilisant un proxy, ajoutez
169.254.170.23(IPv4) et[fd00:ec2::23](IPv6) aux variables d’environnementno_proxy/NO_PROXYafin d’éviter les échecs de demandes vers l’agent d’identité du pod EKS. Si vous utilisez des groupes de sécurité pour les pods avec le CNI VPC AWS, définissez l’indicateurENABLE_POD_ENIsur « true » et l’indicateurPOD_SECURITY_GROUP_ENFORCING_MODEsur « standard ». Pour en savoir plus, consultez Attribuer des groupes de sécurité à des pods individuels.
Versions du cluster de l’identité du pod EKS
Pour utiliser l’identité du pod EKS, le cluster doit disposer d’une version de plateforme identique ou supérieure à celle indiquée dans le tableau suivant, ou d’une version Kubernetes supérieure à celles indiquées dans le tableau. Pour connaître la version recommandée de l’Agent de l’identité du pod Amazon EKS pour une version Kubernetes, consultez Vérification de la compatibilité de la version du module complémentaire Amazon EKS avec un cluster.
| Version de Kubernetes | Version de la plateforme |
|---|---|
|
Versions Kubernetes non répertoriées |
Toutes les versions de plateforme prennent en charge |
|
|
|
Restrictions relatives à l’identité du pod EKS
Les identités du pod EKS sont disponibles sur les éléments suivants :
-
Les versions du cluster Amazon EKS répertoriées dans la rubrique précédente Versions du cluster de l’identité du pod EKS.
-
Les composants master du cluster qui sont des instances Amazon EC2 Linux.
Les identités du pod Amazon EKS ne sont pas disponibles dans les cas suivants :
-
AWS Outposts.
-
Amazon EKS Anywhere.
-
Clusters Kubernetes que vous créez et exécutez sur Amazon EC2. Les composants de l’identité du pod Amazon EKS sont uniquement disponibles sur Amazon EKS.
Vous ne pouvez pas utiliser les identités du pod Amazon EKS avec :
-
Les pods qui s’exécutent n’importe où, à l’exception des instances Amazon EC2 Linux. Les pods Linux et Windows qui s’exécutent sur AWS Fargate (Fargate) ne sont pas pris en charge. Les pods qui s’exécutent sur des instances Amazon EC2 Windows ne sont pas pris en charge.