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.
Configurer un compte Kubernetes de service pour qu'il assume un rôle IAM
Cette rubrique explique comment configurer un compte de Kubernetes service pour qu'il assume un rôle AWS Identity and Access Management (IAM). Tous les Pods configurés pour utiliser le compte de service peuvent ensuite accéder à n'importe quel Service AWS auxquels le rôle est autorisé à accéder.
Prérequis
-
Un cluster existant. Si vous n'en avez pas, vous pouvez en créer un en suivant l'un des guides Démarrer avec Amazon EKS.
-
Un fournisseur IAM OpenID Connect (OIDC) existant pour votre cluster. Pour déterminer si vous en avez déjà un ou comment en créer un, consultez Créez un OIDC fournisseur IAM pour votre cluster.
-
Version
2.12.3
ou ultérieure ou version1.27.160
ou ultérieure du AWS Command Line Interface (AWS CLI) installé et configuré sur votre appareil ou AWS CloudShell. Pour vérifier votre version actuelle, utilisez
. Les gestionnaires de package, par exempleaws --version | cut -d / -f2 | cut -d ' ' -f1
yum
,apt-get
, Homebrew ou macOS, sont souvent antérieurs de plusieurs versions à la AWS CLI. Pour installer la dernière version, consultez Installation, mise à jour et désinstallation de l’ AWS CLI et Configuration rapide avec aws configure dans le Guide de l’utilisateur AWS Command Line Interface . La AWS CLI version installée AWS CloudShell peut également avoir plusieurs versions de retard par rapport à la dernière version. Pour le mettre à jour, consultez la section Installation AWS CLI dans votre répertoire personnel dans le guide de AWS CloudShell l'utilisateur. -
L'outil de ligne de commande
kubectl
est installé sur votre appareil ou AWS CloudShell. La version peut être identique à la version Kubernetes de votre cluster ou être maximum une version mineure antérieure ou ultérieure. Par exemple, si la version de votre cluster est1.29
, vous pouvez utiliser la versionkubectl
1.28
,1.29
ou1.30
. Pour installer ou mettre à niveaukubectl
, veuillez consulter Installation ou mise à jour de kubectl. -
Un fichier existant
kubectl
config
qui contient la configuration de votre cluster. Pour créer un fichierkubectl
config
, consultez Création ou mise à jour d'un fichier kubeconfig pour un cluster Amazon EKS.
Pour associer un rôle IAM à un compte de service Kubernetes
-
Si vous souhaitez associer une politique IAM existante à votre rôle IAM, passez à l'étape suivante.
Créez une politique IAM. Vous pouvez créer votre propre politique ou copier une politique AWS gérée qui accorde déjà certaines des autorisations dont vous avez besoin et la personnaliser en fonction de vos besoins spécifiques. Pour plus d’informations, consultez Création de politiques IAM dans le Guide de l’utilisateur IAM.
-
Créez un fichier qui inclut les autorisations pour le fichier Services AWS auquel vous Pods souhaitez accéder. Pour obtenir la liste de toutes les actions pour tous Services AWS, consultez la référence d'autorisation de service.
Vous pouvez exécuter la commande suivante pour créer un exemple de fichier de politique autorisant l'accès en lecture seule à un compartiment Amazon S3. Vous pouvez choisir de stocker les informations de configuration ou un script d'amorçage dans ce compartiment, et les conteneurs de votre Podpeuvent lire le fichier à partir du compartiment et le charger dans votre application. Si vous souhaitez créer cet exemple de politique, copiez le contenu suivant sur votre appareil. Remplacez
my-pod-secrets-bucket
par le nom de votre compartiment et exécutez la commande.cat >
my-policy.json
<<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-pod-secrets-bucket
" } ] } EOF -
Créez la politique IAM.
aws iam create-policy --policy-name
my-policy
--policy-document file://my-policy.json
-
-
Créez un rôle IAM et associez-le à un compte de service Kubernetes. Sinon, vous pouvez utiliser
eksctl
ou AWS CLI. -
Vérifiez que le rôle et le compte de service sont correctement configurés.
-
Vérifiez que la stratégie d'approbation du rôle IAM est correctement configurée.
aws iam get-role --role-name
my-role
--query Role.AssumeRolePolicyDocumentL'exemple qui suit illustre un résultat.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::
111122223333
:oidc-provider/oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:sub": "system:serviceaccount:default:my-service-account
", "oidc.eks.region-code
.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
:aud": "sts.amazonaws.com" } } } ] } -
Vérifiez que la stratégie que vous avez associée à votre rôle lors d'une étape précédente est associée au rôle.
aws iam list-attached-role-policies --role-name
my-role
--query AttachedPolicies[].PolicyArn --output textL'exemple qui suit illustre un résultat.
arn:aws:iam::
111122223333
:policy/my-policy
-
Définissez une variable pour stocker l'Amazon Resource Name (ARN) de la stratégie que vous souhaitez utiliser. Remplacez
my-policy
par le nom de la stratégie pour laquelle vous voulez confirmer les autorisations.export policy_arn=arn:aws:iam::
111122223333
:policy/my-policy
-
Affichez la version par défaut de la stratégie.
aws iam get-policy --policy-arn $policy_arn
L'exemple qui suit illustre un résultat.
{ "Policy": { "PolicyName": "
my-policy
", "PolicyId": "EXAMPLEBIOWGLDEXAMPLE
", "Arn": "arn:aws:iam::111122223333
:policy/my-policy
", "Path": "/", "DefaultVersionId": "v1
", [...] } } -
Consultez le contenu de la stratégie pour vous assurer que la stratégie inclut toutes les autorisations que nécessite votre Pod. Si nécessaire, remplacez
1
dans la commande suivante par la version indiquée dans la sortie précédente.aws iam get-policy-version --policy-arn $policy_arn --version-id v
1
L'exemple qui suit illustre un résultat.
{ "Version": "2012-10-17", "Statement": [
{ "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-pod-secrets-bucket" }
] }Si vous avez créé l'exemple de stratégie lors d'une étape précédente, le résultat est le même. Si vous avez créé une stratégie différente, alors le contenu
example
(exemple) est différent. -
Confirmez que le compte de service Kubernetes est annoté avec le rôle.
kubectl describe serviceaccount
my-service-account
-ndefault
L'exemple qui suit illustre un résultat.
Name:
my-service-account
Namespace:default
Annotations: eks.amazonaws.com/role-arn: arn:aws:iam::111122223333
:role/my-role
Image pull secrets: <none> Mountable secrets:my-service-account
-token-qqjfl
Tokens:my-service-account
-token-qqjfl
[...]
-
-
(Facultatif)Configuration du AWS Security Token Service point de terminaison pour un compte de service. AWS recommande d'utiliser un point de AWS STS terminaison régional plutôt que le point de terminaison global. Cela réduit la latence, fournit une redondance intégrée et augmente la validité des jetons de session.
Étape suivante
Configurer Pods pour utiliser un compte Kubernetes de service