Comment résoudre l'erreur « Vous devez être connecté au serveur (non autorisé) » lorsque je me connecte au serveur d'API Amazon EKS ?
J'utilise les commandes kubectl pour me connecter au serveur d'interface de programmation d'application (API) Amazon Elastic Kubernetes Service (Amazon EKS). J'ai reçu le message « erreur : vous devez être connecté au serveur (non autorisé) ».
Brève description
Cette erreur s'affiche lorsque l'entité AWS Identity and Access Management (IAM) configurée dans kubectl n'est pas authentifiée par Amazon EKS.
Vous êtes authentifié et autorisé à accéder à votre cluster Amazon EKS en fonction de l'entité IAM (utilisateur ou rôle) que vous utilisez. Par conséquent, vérifiez les points suivants :
- Vous avez configuré l'outil kubectl pour utiliser votre utilisateur ou votre rôle IAM.
- Votre entité IAM est mappée au ConfigMap aws-auth.
Pour résoudre ce problème, vous devez suivre les étapes décrites dans l'une des sections suivantes en fonction de votre cas d'utilisation :
- Vous êtes le créateur du cluster
- Vous n'êtes pas le créateur du cluster
Résolution
Si vous recevez des erreurs lors de l'exécution des commandes de l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'exécuter une version récente d'AWS CLI.
Vous êtes le créateur du cluster
Vous êtes le créateur du cluster si votre entité IAM a été utilisée pour créer le cluster Amazon EKS.
1. Exécutez la requête suivante dans Amazon CloudWatch Log Insights pour identifier l'ARN du créateur du cluster :
Tout d'abord, sélectionnez le groupe de journaux pour votre cluster Amazon EKS (exemple : /aws/eks/my-cluster/cluster). Ensuite, exécutez la requête suivante :
fields @logstream, @timestamp, @message | sort @timestamp desc | filter @logStream like /authenticator/ | filter @message like "username=kubernetes-admin" | limit 50
Remarque : assurez-vous d'avoir activé les journaux d'authentification Amazon EKS.
Cette requête renvoie l'entité IAM mappée comme créateur du cluster :
@message time="2022-05-26T18:55:30Z" level=info msg="access granted" arn="arn:aws:iam::123456789000:user/testuser" client="127.0.0.1:57586" groups="[system:masters]" method=POST path=/authenticate uid="aws-iam-authenticator:123456789000:AROAFFXXXXXXXXXX" username=kubernetes-admin
2. Assurez-vous d'avoir configuré l'AWS CLI avec l'entité IAM créatrice du cluster. Pour voir si l'entité IAM est configurée pour l'AWS CLI dans votre environnement shell, exécutez la commande suivante :
$ aws sts get-caller-identity
Vous pouvez également exécuter cette commande à l'aide d'un profil spécifique :
$ aws sts get-caller-identity --profile MY-PROFILE
La sortie renvoie l'Amazon Resource Name (ARN) de l'entité IAM configurée pour l'AWS CLI.
Exemple :
{ "UserId": "XXXXXXXXXXXXXXXXXXXXX", "Account": "XXXXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser" }
Vérifiez que l'entité IAM renvoyée correspond à l'entité IAM du créateur du cluster. Si l'entité IAM renvoyée n'est pas le créateur du cluster, mettez à jour la configuration de l'AWS CLI pour utiliser l'entité IAM créatrice du cluster.
3. Mettez à jour ou générez le fichier kubeconfig à l'aide de la commande suivante :
$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region
Remarque :
- Remplacez eks-cluster-name par le nom de votre cluster.
- Remplacez aws-region par le nom de votre Région AWS.
Pour spécifier un profil d'interface de ligne de commande AWS, exécutez la commande suivante :
$ aws eks update-kubeconfig --name eks-cluster-name —region aws-region —profile my-profile
Remarque :
- Remplacez eks-cluster-name par le nom de votre cluster.
- Remplacez aws-region par le nom de votre Région.
- Remplacez my-profile par le nom de votre profil.
4. Pour confirmer la mise à jour du fichier kubeconfig, exécutez la commande suivante :
$ kubectl config view --minify
5. Pour confirmer que votre entité IAM est authentifiée et que vous pouvez accéder à votre cluster EKS, exécutez la commande suivante :
$ kubectl get svc
Exemple de sortie :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 77d
Vous n'êtes pas le créateur du cluster
Vous n'êtes pas le créateur du cluster si votre entité IAM n'a pas été utilisée pour créer le cluster. Dans ce cas, vous devez mapper votre entité IAM au ConfigMap aws-auth pour autoriser l'accès au cluster.
1. Assurez-vous d'avoir configuré l'AWS CLI avec votre entité IAM. Pour voir l'entité IAM configurée pour AWS CLI dans votre environnement shell, exécutez la commande suivante :
$ aws sts get-caller-identity
Vous pouvez également exécuter cette commande à l'aide d'un profil spécifique :
$ aws sts get-caller-identity --profile my-profile
La sortie renvoie l'ARN de l'entité IAM configurée pour l'AWS CLI.
Exemple :
{ "UserId": "XXXXXXXXXXXXXXXXXXXXX", "Account": "XXXXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXXXX:user/testuser" }
Vérifiez que l'entité IAM renvoyée est votre entité IAM. Si l'entité IAM renvoyée n'est pas celle utilisée pour interagir avec votre cluster, mettez d'abord à jour la configuration de l'AWS CLI pour utiliser l'entité IAM appropriée. Réessayez ensuite d'accéder à votre cluster à l'aide de kubectl. Si le problème persiste, passez à l'étape 2.
2. Si l'entité IAM renvoyée n'est pas le créateur du cluster, ajoutez votre entité IAM au ConfigMap aws-auth. Cela permet à l'entité IAM d'accéder au cluster.
Seul l'administrateur du cluster peut modifier ConfigMap aws-auth. Par conséquent, effectuez l'une des opérations suivantes :
- Suivez les instructions de la section Vous êtes le créateur du cluster pour accéder au cluster à l'aide de l'entité IAM du créateur du cluster.
- Demandez à l'administrateur du cluster d'effectuer cette action.
Vérifiez si votre entité IAM figure dans ConfigMap aws-auth en exécutant la commande suivante :
eksctl get iamidentitymapping --cluster cluster-name
-ou-
kubectl describe configmap aws-auth -n kube-system
Si votre entité IAM figure dans ConfigMap aws-auth, vous pouvez passer à l'étape 3.
Mappez automatiquement votre entité IAM en exécutant la commande suivante :
eksctl create iamidentitymapping \ --cluster $CLUSTER-NAME \ --region $REGION \ --arn arn:aws:iam::XXXXXXXXXXXX:user/testuser \ --group system:masters \ --no-duplicate-arns \ --username admin-user1
Vous pouvez également mapper votre entité IAM manuellement en modifiant ConfigMap aws-auth :
$ kubectl edit configmap aws-auth --namespace kube-system
Pour ajouter un utilisateur IAM, ajoutez l'ARN de l'utilisateur IAM à mapUsers.
Exemple :
mapUsers: | - userarn: arn:aws:iam::XXXXXXXXXXXX:user/testuser username: testuser groups: - system:masters
Pour ajouter un rôle IAM, ajoutez l'ARN du rôle IAM à mapRoles.
Exemple :
mapRoles: | - rolearn: arn:aws:iam::XXXXXXXXXXXX:role/testrole username: testrole groups: - system:masters
Important :
- Le rôle IAM doit être mappé sans le chemin. Pour en savoir plus sur les exigences en matière de rôle et de chemin d'accès, développez la section ConfigMap aws-auth does not grant access to the cluster (aws-auth ConfigMap n'accorde pas l'accès au cluster) dans Troubleshooting IAM (Dépannage IAM).
- Pour spécifier rolearn pour un rôle IAM AWS IAM Identity Center (successeur d'AWS Single Sign-On), supprimez le chemin « /aws-reserved/sso.amazonaws.com/region » de l'ARN du rôle. Sinon, l'entrée de ConfigMap ne peut pas vous autoriser en tant qu'utilisateur valide.
- Le groupe system:masters autorise l'accès super-utilisateur pour effectuer n'importe quelle action sur n'importe quelle ressource. Pour plus d'informations, consultez la section Default roles and role bindings (Rôles par défaut et liaisons de rôles). Pour restreindre l'accès de cet utilisateur, vous pouvez créer un rôle Amazon EKS et une ressource de liaison de rôle. Pour obtenir un exemple d'accès restreint pour les utilisateurs qui consultent des ressources dans la console Amazon EKS, suivez les étapes 2 et 3 de la section Autorisations requises.
3. Mettez à jour ou générez le fichier kubeconfig en exécutant la commande suivante. Assurez-vous que l'AWS CLI est configurée avec votre entité IAM renvoyée à l'étape 1.
$ aws eks update-kubeconfig --name eks-cluster-name --region aws-region
Remarque :
- Remplacez eks-cluster-name par le nom de votre cluster.
- Remplacez aws-region par le nom de votre Région AWS.
Vous pouvez également exécuter cette commande à l'aide d'un profil spécifique :
$ aws eks update-kubeconfig --name eks-cluster-name —region aws-region —profile my-profile
Remarque :
- Remplacez eks-cluster-name par le nom de votre cluster.
- Remplacez aws-region par le nom de votre Région AWS.
- Remplacez my-profile par le nom de votre profil.
4. Pour confirmer la mise à jour du fichier kubeconfig, exécutez la commande suivante :
$ kubectl config view --minify
5. Pour vérifier que votre utilisateur ou votre rôle IAM est authentifié, essayez à nouveau d'accéder au cluster. Par exemple, vous pouvez exécuter la commande suivante pour confirmer que l'erreur est résolue :
$ kubectl get svc
Exemple de sortie :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.100.0.1 <none> 443/TCP 77d
Conseils de dépannage supplémentaires
Si l'erreur persiste, utilisez les conseils de dépannage suivants pour identifier le problème.
Lorsque vous exécutez une commande kubectl, une demande est envoyée au serveur d'API du cluster Amazon EKS. L'authentificateur Amazon EKS essaie ensuite d'authentifier cette demande. Consultez donc les journaux de l'authentificateur EKS dans CloudWatch pour identifier le problème.
1. Assurez-vous d'avoir activé la journalisation pour votre cluster Amazon EKS.
2. Ouvrez CloudWatch Log Insights.
3. Sélectionnez le groupe de journaux pour votre cluster. Exemple : « /aws/eks/example-cluster/cluster ».
4. Exécutez la requête suivante :
fields @timestamp, @message | filter @logStream like /authenticator/ | sort @timestamp desc | limit 1000
Identifiez les lignes de journal correspondant au même intervalle de temps que celui où vous avez reçu l'erreur en exécutant les commandes kubectl. Vous pouvez trouver plus d'informations sur la cause de l'erreur dans les journaux d'authentification Amazon EKS.
- Si le problème est dû à l'utilisation d'une entité IAM incorrecte pour kubectl, consultez la configuration kubectl kubeconfig et AWS CLI. Assurez-vous que vous utilisez l'entité IAM correcte. Par exemple, supposons que les journaux ressemblent à ce qui suit. Cette sortie signifie que l'entité IAM utilisée par kubectl ne peut pas être validée. Assurez-vous que l'entité IAM utilisée par kubectl existe dans IAM et que l'accès programmatique de l'entité est activé.
time="2022-12-26T20:46:48Z" level=warning msg="access denied" client="127.0.0.1:43440" error="sts getCallerIdentity failed: error from AWS (expected 200, got 403). Body: {\"Error\":{\"Code\":\"InvalidClientTokenId\",\"Message\":\"The security token included in the request is invalid.\",\"Type\":\"Sender\"},\"RequestId\":\"a9068247-f1ab-47ef-b1b1-cda46a27be0e\"}" method=POST path=/authenticate
- Si le problème est dû au fait que votre entité IAM n'est pas mappée dans ConfigMap aws-auth, ou qu'elle est mal mappée, consultez ConfigMap aws-auth. Assurez-vous que l'entité IAM est correctement mappée et répond aux exigences répertoriées dans la section Vous n'êtes pas le créateur du cluster. Dans ce cas, les journaux d'authentification EKS ressemblent à ce qui suit :
time="2022-12-28T15:37:19Z" level=warning msg="access denied" arn="arn:aws:iam::XXXXXXXXXX:role/admin-test-role" client="127.0.0.1:33384" error="ARN is not mapped" method=POST path=/authenticate
- Si ConfigMap aws-auth a été mis à jour et que vous avez perdu l'accès au cluster, vous pouvez accéder au cluster à l'aide de l'entité IAM du créateur du cluster. Cela est dû au fait que le créateur du cluster n'a pas besoin d'être mappé dans ConfigMap aws-auth.
- Si l'entité IAM créatrice du cluster a été supprimée, créez d'abord à nouveau le même utilisateur ou le même rôle IAM. Accédez ensuite au cluster à l'aide de cette entité IAM en suivant les étapes décrites dans la section Vous êtes le créateur du cluster.
- Si le créateur du cluster est un rôle IAM créé pour un utilisateur SSO qui a été supprimé, vous ne pouvez pas recréer ce rôle IAM. Dans ce cas, contactez AWS Support pour obtenir de l'aide.
Informations connexes
Activation de l'accès des utilisateurs et des rôles IAM à votre cluster
Documentation Kubernetes sur l'utilisation de l'autorisation RBAC
Vidéos associées

Contenus pertinents
- demandé il y a un moislg...
- demandé il y a 6 jourslg...
- demandé il y a 2 moislg...
- demandé il y a un moislg...
- Réponse acceptéedemandé il y a 4 moislg...
- AWS OFFICIELA mis à jour il y a un mois
- AWS OFFICIELA mis à jour il y a 7 mois