Passer au contenu

Comment résoudre les problèmes d'accès dans mes clusters Amazon EKS ?

Lecture de 5 minute(s)
0

Je rencontre des problèmes lorsque j'essaie d'accorder l'accès à mes clusters Amazon Elastic Kubernetes Service (Amazon EKS).

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.

Utilisez les entrées d'accès Amazon EKS pour accorder l'accès à l'API Kubernetes aux utilisateurs et aux rôles AWS Identity and Access Management (IAM).

Configurer les autorisations du principal IAM

Le principal IAM doit disposer des autorisations suivantes pour votre cluster :

  • CreateAccessEntry
  • ListAccessEntries
  • DescribeAccessEntry
  • DeleteAccessEntry
  • UpdateAccessEntry
  • ListAccessPolicies
  • AssociateAccessPolicy
  • DisassociateAccessPolicy

Pour plus d'informations sur les autorisations Amazon EKS, consultez la section Actions définies par Amazon Elastic Kubernetes Service.

Configurer les autorisations relatives à la politique d'accès

La politique d'accès définit le niveau d'accès qui permet à un utilisateur d'accéder à l'API Kubernetes. Utilisez les politiques suivantes pour créer des entrées d'accès :

Lorsque vous créez des entrées d'accès avec les politiques précédentes, vous accordez l'accès à un espace de noms pour les autorisations au niveau du cluster Kubernetes.

Remarque : Vous ne pouvez pas modifier le contenu d'une politique d'accès ni créer vos propres politiques d'accès.

Autoriser les utilisateurs IAM à accéder à votre cluster Amazon EKS

Modifier le mode d'authentification

Important : Une fois que vous avez activé la méthode de saisie d'accès, vous ne pouvez plus la désactiver à nouveau.

Pour utiliser les entrées d'accès, mettez à jour le mode d'authentification du cluster Amazon EKS sur API ou API_AND_CONFIG_MAP. Exécutez la commande update-cluster-config de l'AWS CLI suivante :

aws eks update-cluster-config \
   --name my-cluster \
   --access-config authenticationMode=API_AND_CONFIG_MAP

Remarque : Remplacez my-cluster par le nom de votre cluster. Pour désactiver définitivement la méthode ConfigMap, remplacez API_AND_CONFIG_MAP par API.

Créer une entrée d'accès pour l'entité IAM et associer la politique d'accès

Fournissez un accès administrateur de cluster à votre cluster Amazon EKS. Tout d'abord, exécutez la commande create-access-entry suivante pour créer une entrée d'accès pour votre utilisateur ou votre rôle IAM :

aws eks create-access-entry --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:user/example-user

Remarque : Remplacez my-cluster par le nom de votre cluster et arn:aws:iam::111122223333:user/example-user par votre rôle IAM ou l'ARN de votre utilisateur.

Puis, exécutez la commande associate-access-policy suivante pour associer AmazonEKSClusterAdminPolicy à l’utilisateur ou au rôle IAM :

aws eks associate-access-policy --cluster-name my-cluster\
  --principal-arn arn:aws:iam::111122223333:user/example-user \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster

Remarque : Remplacez my-cluster par le nom de votre cluster et arn:aws:iam::111122223333:user/example-user par votre rôle IAM ou l'ARN de votre utilisateur.

Pour fournir à l'utilisateur ou au rôle IAM un accès administrateur à un espace de noms spécifique, exécutez la commande associate-access-policy suivante :

aws eks associate-access-policy --cluster-name my-cluster\
  --principal-arn arn:aws:iam::111122223333:role/example-role \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy \
  --access-scope type=namespace,namespaces=test*

Remarque : Remplacez my-cluster par le nom de votre cluster et arn:aws:iam::111122223333:role/example-role par votre rôle IAM ou l'ARN de l'utilisateur. Remplacez également test par le nom de votre espace de noms.

Pour utiliser les entrées d'accès avec contrôle d'accès basé sur les rôles (RBAC) Kubernetes, exécutez la commande create-access-entry :

aws eks create-access-entry --cluster-name my-cluster \
  --principal-arn arn:aws:iam::111122223333:role/example-role-2 \
  --kubernetes-groups viewers

Remarque : Remplacez my-cluster par le nom de votre cluster et arn:aws:iam::111122223333:user/example-role-2 par votre rôle IAM ou l'ARN de l'utilisateur. Remplacez viewers par le nom du groupe spécifié dans l'objet Kubernetes RoleBinding ou ClusterRoleBinding de votre cluster.

Confirmer les informations d'identification de votre entité IAM

Pour vérifier les informations d'identification de l'utilisateur ou du rôle IAM utilisées sur l'AWS CLI, exécutez la commande get-caller-identity suivante :

aws sts get-caller-identity

La sortie de commande doit renvoyer l'utilisateur ou le rôle IAM pour lequel vous avez créé une entrée d'accès. Si vous recevez un rôle ou un utilisateur IAM différent, assurez-vous d'avoir correctement configuré le rôle ou les informations d'identification de l'utilisateur.

Créer Kubeconfig pour votre entité IAM

Pour créer le Kubeconfig pour votre rôle ou utilisateur IAM, exécutez la commande update-kubeconfig suivante :

aws eks update-kubeconfig --name my-cluster --region aws-region

Remarque : Remplacez my-cluster par le nom de votre cluster et aws-region par votre région AWS.

Vérifier votre accès à Kubernetes

Vérifiez que votre entité IAM est authentifiée et que vous pouvez accéder aux ressources de votre cluster Amazon EKS.

Pour vérifier si vous pouvez créer des pods dans n'importe quel espace de noms, exécutez la commande suivante :

kubectl auth can-i create pods --all-namespaces

Pour vérifier si vous pouvez répertorier les déploiements dans un espace de noms spécifique, exécutez la commande suivante :

kubectl auth can-i list deployments.apps -n test

Remarque : Remplacez test par le nom de votre espace de noms.

AWS OFFICIELA mis à jour il y a un an