Associer un rôle IAM à un module complémentaire Amazon EKS à l'aide de Pod Identity - Amazon EKS

Aidez à améliorer cette page

Vous souhaitez contribuer à ce guide de l'utilisateur ? Faites défiler cette page vers le bas et sélectionnez Modifier cette page sur GitHub. Vos contributions aideront à améliorer notre guide de l'utilisateur pour tout le monde.

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.

Associer un rôle IAM à un module complémentaire Amazon EKS à l'aide de Pod Identity

Certains modules complémentaires Amazon EKS nécessitent des autorisations de rôle IAM pour appeler des AWS API. Par exemple, le module complémentaire Amazon VPC CNI appelle certaines AWS API pour configurer les ressources réseau de votre compte. Ces modules complémentaires doivent être autorisés à l'aide d' AWS IAM. Plus précisément, le compte de service du pod exécutant le module complémentaire doit être associé à un rôle IAM doté d'une politique IAM suffisante.

La méthode recommandée pour accorder des AWS autorisations aux charges de travail de cluster est d'utiliser la fonctionnalité Pod Identities d'Amazon EKS. Vous pouvez utiliser une association d'identité Pod pour associer le compte de service d'un module complémentaire à un rôle IAM. 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 AWS SDK, y compris la AWS CLI, pour utiliser les informations d'identification EKS Pod Identity. En savoir plus sur EKS Pod Identities.

Les modules complémentaires Amazon EKS peuvent aider à gérer le cycle de vie des associations d'identité des pods correspondant au module complémentaire. Par exemple, vous pouvez créer ou mettre à jour un module complémentaire Amazon EKS et l'association d'identité de pod nécessaire en un seul appel d'API. Amazon EKS fournit également une API permettant de récupérer les politiques IAM suggérées.

Utilisation suggérée :
  1. Vérifiez que l'agent d'identité du pod Amazon EKS est configuré sur votre cluster.

  2. Déterminez si le module complémentaire que vous souhaitez installer nécessite des autorisations IAM à l'aide de l'describe-addon-versions AWS CLI opération. Si l'requiresIamPermissionsindicateur l'esttrue, vous devez utiliser l'describe-addon-configurationsopération pour déterminer les autorisations requises par l'addon. La réponse inclut une liste de stratégies IAM gérées suggérées.

  3. Récupérez le nom du compte de service Kubernetes et la politique IAM suggérée à l'aide de l'opération CLI. describe-addon-configuration Évaluez la portée de la politique suggérée par rapport à vos exigences de sécurité.

  4. Créez un rôle IAM en utilisant la politique d'autorisation suggérée et la politique de confiance requise par Pod Identity. Pour plus d’informations, consultez Création de l’association d’identité du pod EKS.

  5. Créez ou mettez à jour un module complémentaire Amazon EKS à l'aide de la CLI. Spécifiez au moins une association d'identité de pod. Une association d'identité de pod est (1) le nom d'un compte de service Kubernetes et (2) l'ARN d'un rôle IAM.

Considérations :
  • Les associations d'identité de pod créées à l'aide des API du module complémentaire appartiennent au module complémentaire correspondant. Si vous supprimez le module complémentaire, l'association d'identité du module est également supprimée. Vous pouvez empêcher cette suppression en cascade en utilisant l'preserveoption lors de la suppression d'un addon à l'aide de l' AWS CLI API or. Vous pouvez également mettre à jour ou supprimer directement l'association d'identité du module si nécessaire. Les modules complémentaires ne peuvent pas assumer la propriété des associations d'identité de pods existantes. Vous devez supprimer l'association existante et la recréer à l'aide d'une opération de création ou de mise à jour d'un module complémentaire.

  • Amazon EKS recommande d'utiliser les associations d'identité des pods pour gérer les autorisations IAM pour les modules complémentaires. La méthode précédente, les rôles IAM pour les comptes de service (IRSA), est toujours prise en charge. Vous pouvez spécifier à la fois une association d'identité IRSA serviceAccountRoleArn et une association d'identité de pod pour un module complémentaire. Si l'agent d'identité du pod EKS est installé sur le cluster, il serviceAccountRoleArn sera ignoré et EKS utilisera l'association d'identité du pod fournie. Si Pod Identity n'est pas activé, il serviceAccountRoleArn sera utilisé.

  • Si vous mettez à jour les associations d'identité des modules pour un module complémentaire existant, Amazon EKS lance un redémarrage progressif des modules complémentaires.

Récupérer les informations IAM relatives à un module complémentaire

Vous pouvez utiliser le AWS CLI pour déterminer (1) si un module complémentaire nécessite des autorisations IAM, et (2) une stratégie IAM suggérée pour ce module complémentaire.

Récupérer les informations IAM relatives à un module complémentaire Amazon EKS ()AWS CLI
  1. Déterminez le nom du module complémentaire que vous souhaitez installer et la version Kubernetes de votre cluster. En savoir plus sur les modules complémentaires Amazon EKS disponibles.

  2. Utilisez le AWS CLI pour déterminer si le module complémentaire nécessite des autorisations IAM.

    aws eks describe-addon-versions \ --addon-name <addon-name> \ --kubernetes-version <kubernetes-version>

    Par exemple :

    aws eks describe-addon-versions \ --addon-name aws-ebs-csi-driver \ --kubernetes-version 1.30

    Passez en revue l'exemple de sortie suivant. Notez que requiresIamPermissions c'est true la version du module complémentaire par défaut. Vous devez spécifier la version du module complémentaire lors de la récupération de la politique IAM recommandée.

    { "addons": [ { "addonName": "aws-ebs-csi-driver", "type": "storage", "addonVersions": [ { "addonVersion": "v1.31.0-eksbuild.1", "architecture": [ "amd64", "arm64" ], "compatibilities": [ { "clusterVersion": "1.30", "platformVersions": [ "*" ], "defaultVersion": true } ], "requiresConfiguration": false, "requiresIamPermissions": true }, [...]
  3. Si le module complémentaire nécessite des autorisations IAM, utilisez le AWS CLI pour récupérer une politique IAM recommandée.

    aws eks describe-addon-configuration \ --query podIdentityConfiguration \ --addon-name <addon-name> \ --addon-version <addon-version>

    Par exemple :

    aws eks describe-addon-configuration \ --query podIdentityConfiguration \ --addon-name aws-ebs-csi-driver \ --addon-version v1.31.0-eksbuild.1

    Passez en revue le résultat suivant. Notez le recommendedManagedPolicies.

    [ { "serviceAccount": "ebs-csi-controller-sa", "recommendedManagedPolicies": [ "arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy" ] } ]
  4. Créez un rôle IAM et associez la politique gérée recommandée. Vous pouvez également passer en revue la politique gérée et limiter les autorisations le cas échéant. Consultez les instructions relatives à la création d'un rôle IAM à utiliser avec EKS Pod Identities.

Mettre à jour le module complémentaire avec le rôle IAM

Mettre à jour un module complémentaire Amazon EKS pour utiliser une association d'identité Pod (AWS CLI)
  1. Déterminez :

    • cluster-name— Le nom du cluster EKS sur lequel installer le module complémentaire.

    • addon-name— Le nom du module complémentaire Amazon EKS à installer.

    • service-account-name— Le nom du compte de service Kubernetes utilisé par le module complémentaire.

    • iam-role-arn— L'ARN d'un rôle IAM doté d'autorisations suffisantes pour le module complémentaire. Le rôle IAM doit disposer de la politique de confiance requise pour EKS Pod Identity.

  2. Mettez à jour le module complémentaire à l'aide de la AWS CLI. Vous pouvez également spécifier les associations d'identité des pods lors de la création d'un module complémentaire, en utilisant la même --pod-identity-assocations syntaxe. Notez que lorsque vous spécifiez des associations d'identité d'espace lors de la mise à jour d'un module complémentaire, toutes les associations d'identité d'espace précédentes sont remplacées.

    aws eks update-addon --cluster-name <cluster-name> \ --addon-name <addon-name> \ --pod-identity-associations 'serviceAccount=<service-account-name>,roleArn=<role-arn>'

    Par exemple :

    aws eks update-addon --cluster-name mycluster \ --addon-name aws-ebs-csi-driver \ --pod-identity-associations 'serviceAccount=ebs-csi-controller-sa,roleArn=arn:aws:iam::123456789012:role/StorageDriver'
  3. Vérifiez que l'association d'identité du pod a été créée :

    aws eks list-pod-identity-associations --cluster-name <cluster-name>

    Si la commande aboutit, vous devriez obtenir une sortie similaire à ce qui suit. Notez le OwnerArn du module complémentaire EKS.

    { "associations": [ { "clusterName": "mycluster", "namespace": "kube-system", "serviceAccount": "ebs-csi-controller-sa", "associationArn": "arn:aws:eks:us-west-2:123456789012:podidentityassociation/mycluster/a-4wvljrezsukshq1bv", "associationId": "a-4wvljrezsukshq1bv", "ownerArn": "arn:aws:eks:us-west-2:123456789012:addon/mycluster/aws-ebs-csi-driver/9cc7ce8c-2e15-b0a7-f311-426691cd8546" } ] }

Supprimer les associations du module complémentaire

Supprimer toutes les associations d'identité des pods d'un module complémentaire Amazon EKS (AWS CLI)
  1. Déterminez :

    • cluster-name— Le nom du cluster EKS sur lequel installer le module complémentaire.

    • addon-name— Le nom du module complémentaire Amazon EKS à installer.

  2. Mettez à jour l'addon pour spécifier un tableau vide d'associations d'identité de pod.

    aws eks update-addon --cluster-name <cluster-name> \ --addon-name <addon-name> \ --pod-identity-associations "[]"

Résoudre les problèmes liés aux identités des modules pour les modules complémentaires EKS

Si vos modules complémentaires rencontrent des erreurs lors de leurs tentatives d' AWS utilisation de l'API, du SDK ou de la CLI, vérifiez les points suivants :

  • L'agent Pod Identity est installé dans votre cluster.

  • Le module complémentaire possède une association d'identité de pod valide.

    • Utilisez le AWS CLI pour récupérer les associations pour le nom du compte de service utilisé par le module complémentaire.

      aws eks list-pod-identity-associations --cluster-name <cluster-name>
  • Le rôle IAM prévu possède la politique de confiance requise pour EKS Pod Identities.

    • Utilisez le AWS CLI pour récupérer la politique de confiance d'un module complémentaire.

      aws iam get-role --role-name <role-name> --query Role.AssumeRolePolicyDocument
  • Le rôle IAM prévu dispose des autorisations nécessaires pour le module complémentaire.

    • AWS CloudTrail À utiliser pour passer en revue AccessDenied des UnauthorizedOperation événements.

  • Le nom du compte de service indiqué dans l'association d'identité du module correspond au nom du compte de service utilisé par le module complémentaire.