Comment puis-je fournir un accès au cluster à d'autres utilisateurs et rôles IAM après avoir créé un cluster dans Amazon EKS ?
Lorsque j'utilise les commandes kubectl pour accéder à un cluster Amazon Elastic Kubernetes Service (Amazon EKS), j'obtiens le message d’erreur : « You must be logged in to the server (Unauthorized) ».
Brève description
Si l'utilisateur ou le rôle AWS Identity and Access Management (IAM) crée un cluster Amazon EKS différent de celui qui est utilisé par aws-iam-authenticator, le message d'erreur Non autorisé s'affiche. Pour résoudre ce problème, configurez le contrôle d'accès basé sur les rôles (RBAC) de votre cluster Amazon EKS pour autoriser l'entité IAM. Pour plus d’informations sur RBAC, consultez la page Utilisation de l’autorisation RBAC sur le site Web de Kubernetes.
Seul le créateur du cluster Amazon EKS dispose d’autorisations system:masters pour configurer le cluster. Il existe deux manières d'étendre les autorisations system:masters à d'autres utilisateurs et rôles IAM :
- Supposez les informations d'identification du créateur du cluster. Puis, ajoutez le rôle IAM dans la section mapRoles de aws-auth ConfigMap.
- Utilisez les entrées d'accès EKS.
Important : Il est recommandé de ne pas ajouter cluster_creator à ConfigMap. Si vous ne configurez pas correctement votre ConfigMap, tous les utilisateurs et rôles IAM, y compris cluster_creator, peuvent perdre définitivement l'accès au cluster Amazon EKS. Par défaut, cluster_creator dispose d'un accès administrateur au cluster qu'il a créé. Vous n'avez donc pas besoin d'ajouter cluster_creator à aws-auth ConfigMap.
Remarque : Dans la résolution suivante, cluster_creator est l'entité IAM qui crée le cluster dans Amazon EKS. L'utilisateur auquel vous accordez l'accès est designated_user.
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), reportez-vous à 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'AWS CLI.
Identifier l'utilisateur ou le rôle IAM du créateur du cluster
Identifiez l'entité IAM du créateur du cluster qui dispose d'un accès principal pour configurer votre cluster Amazon EKS. Pour identifier le créateur du cluster, recherchez l'appel d'API CreateCluster dans AWS CloudTrail, puis consultez la section userIdentity de l'appel d'API.
Puis, identifiez l'entité IAM à laquelle vous accordez une autorisation après avoir créé le cluster.
Utilisez aws-auth ConfigMap pour accorder l'accès au cluster lorsque cluster_creator est un utilisateur IAM
Procédez comme suit :
-
Installez kubectl sur votre machine hôte locale. Ou, si vous disposez d’une instance Amazon Elastic Compute Cloud (Amazon EC2) dédiée avec un package kubectl installé, utilisez SSH pour vous connecter à l'instance.
-
Sur la machine hôte sur laquelle kubectl est installé, configurez l'AWS CLI avec les informations d'identification de designated_user :
aws configure
-
Exécutez la commande de l'interface de ligne de commande AWS get-caller-identity :
aws sts get-caller-identity
La sortie renvoie les détails de l'utilisateur IAM pour designated_user :
{ "UserId": "#####################", "Account": "############", "Arn": "arn:aws:iam::############:user/designated_user" }
-
Répertoriez les pods qui s'exécutent dans le cluster de l'espace de noms par défaut :
kubectl get pods --namespace default
La sortie affiche le message d’erreur Non autorisé car designated_user n'est pas autorisé à accéder au cluster Amazon EKS.
-
Configurez l'ID de clé d'accès AWS et la clé d'accès secrète AWS de cluster_creator.
Si vous avez utilisé la console Amazon EKS pour créer le cluster, configurez l'utilisateur ou le rôle IAM de cluster_creator sur votre machine hôte locale dans l'interface de ligne de commande AWS :aws configure
Si vous avez utilisé eksctl pour créer le cluster, utilisez les informations d'identification de profil AWS CLI spécifiées pour configurer l'AWS CLI afin d'exécuter les commandes kubectl.
-
Vérifiez que cluster_creator a accès au cluster :
kubectl get pods
Le message d’erreur Non autorisé ne s’affiche pas et la sortie répertorie tous les pods qui s'exécutent dans l'espace de noms par défaut. Si la sortie n'affiche aucune ressource, aucun pod n'est en cours d'exécution dans l'espace de noms par défaut.
-
Pour accorder à designated_user l'accès au cluster, ajoutez la section mapUsers à votre fichier aws-auth.yaml. Pour plus d'informations, consultez la section Ajouter des principes IAM à votre cluster Amazon EKS.
-
Ajoutez designated_user à la section mapUsers du fichier aws-auth.yaml, puis enregistrez le fichier.
-
Appliquez le nouveau ConfigMap à la configuration RBAC du cluster :
kubectl apply -f aws-auth.yaml
-
Modifiez à nouveau la configuration de l'AWS CLI pour utiliser les informations d'identification de designated_user :
aws configure
- Vérifiez que designated_user a accès au cluster :
kubectl get pods
Le message d’erreur Non autorisé ne s’affiche pas et la sortie répertorie tous les pods qui s'exécutent dans l'espace de noms par défaut. Si la sortie n'affiche aucune ressource, aucun pod n'est en cours d'exécution dans l'espace de noms par défaut.
Utilisez aws-auth ConfigMap pour accorder l'accès au cluster lorsque cluster_creator est un rôle IAM
Si un rôle IAM a créé le cluster à la place d'un utilisateur IAM, vous ne pouvez pas utiliser d'informations d'identification. Vous devez plutôt endosser le rôle IAM qui a créé le cluster pour fournir un accès à designated_user.
Procédez comme suit :
-
Exécutez la commande de l'interface de ligne de commande AWS get-caller-identity pour obtenir les détails de l’utilisateur IAM de assume_role_user :
aws sts get-caller-identity
-
Vérifiez que assume_role_user a accès au cluster :
kubectl get pods
La sortie affiche le message d’erreur Non autorisé car designated_user n'est pas autorisé à accéder au cluster Amazon EKS.
-
Autorisez assume_role_user à endosser le rôle de cluster_creator :
aws sts assume-role --role-arn arn:aws:iam:11122223333:role/cluster_creator --role-session-name test
La sortie affiche les informations d'identification IAM temporaires pour assume_role_user.
-
Utilisez les informations d'identification IAM temporaires pour définir les variables d'environnement AWS_ACCESS_KEY_ID, AWS_SESSION_TOKEN et AWS_SECRET_ACCESS_KEY :
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SESSION_TOKEN=EXAMPLETOKEN export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
L'AWS CLI classe les informations d'identification définies dans les variables d'environnement et les utilise pour appeler les services AWS.
-
Vérifiez que l'AWS CLI utilise le rôle endossé pour cluster_creator :
aws sts get-caller-identity
-
Pour accorder à designated_user l'accès au cluster, ajoutez la section mapUsers au fichier aws-auth.yaml.
-
Ajoutez designated_user à la section mapUsers du fichier aws-auth.yaml, puis enregistrez le fichier.
-
Appliquez la nouvelle configuration à la configuration RBAC du cluster Amazon EKS :
kubectl apply -f aws-auth.yaml
-
Supprimez les variables d'environnement suivantes :
unset AWS_ACCESS_KEY_ID unset AWS_SESSION_TOKEN unset AWS_SECRET_ACCESS_KEY
-
Exécutez la commande de l'interface de ligne de commande AWS get-caller-identity pour obtenir les informations utilisateur IAM de designated_user :
aws sts get-caller-identity
- Vérifiez que designated_user a accès au cluster :
kubectl get pods
Le message d’erreur Non autorisé ne s’affiche pas et la sortie répertorie tous les pods qui s'exécutent dans l'espace de noms par défaut. Si la sortie n'affiche aucune ressource, aucun pod n'est en cours d'exécution dans l'espace de noms par défaut.
Remarque : Si vous utilisez eksctl, consultez la page Gérer les utilisateurs et les rôles IAM sur le site Web d'eksctl pour plus d'informations.
Utiliser les entrées d'accès EKS pour accorder l'accès au cluster aux utilisateurs et aux rôles IAM
Amazon EKS prend en charge trois modes d'authentification pour les entrées d'accès :
- CONFIG_MAP pour utiliser uniquement aws-auth ConfigMap.
- API_AND_CONFIG_MAP pour utiliser à la fois les API d'entrée d'accès EKS et aws-auth ConfigMap. Ce mode privilégie l'authentification via les entrées d'accès EKS et est utile lorsque vous devez migrer les autorisations aws-auth existantes vers des entrées d'accès EKS.
- API pour utiliser uniquement les API d'entrée d'accès EKS.
Pour plus d'informations, consultez la section Autoriser les utilisateurs et les rôles IAM à accéder aux API Kubernetes.
Pour configurer votre cluster avec des entrées d'accès, définissez le mode d'authentification du cluster sur API EKS ou API EKS et ConfigMap.
Pour vérifier le mode d'authentification actuel du cluster, procédez comme suit :
- Ouvrez la console Amazon EKS.
- Sélectionnez l’onglet Accès.
- Sous Configuration de l'accès, vérifiez l'étiquette Mode d’authentification.
Vous pouvez également exécuter la commande describe-cluster :
aws eks describe-cluster --name example-cluster --query 'cluster.accessConfig.authenticationMode' --region exampleRegion
Si le mode d'authentification du cluster est API EKS ou API EKS et ConfigMap, vous pouvez configurer le cluster afin d’utiliser des entrées d'accès. Sinon, consultez la section Modifier le mode d'authentification pour utiliser les entrées d'accès.
Remarque : Vous pouvez passer du mode d’authentification CONFIG_MAP au mode API, mais vous ne pouvez pas passer du mode API ou API_AND_CONFIG_MAP au mode CONFIG_MAP. Pour plus d'informations, consultez la page Gestionnaire d'accès au cluster sur le site Web de GitHub.
Informations connexes
Utilisation d’un rôle IAM dans l’AWS CLI
Autoriser les utilisateurs IAM à accéder à Kubernetes avec des entrées d'accès EKS
Migration des entrées aws-auth ConfigMap existantes vers des entrées d'accès
Comment puis-je utiliser l'API d'entrée d'accès Amazon EKS pour récupérer l'accès à un cluster EKS ?
- Sujets
- Conteneurs
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a 2 ans
- demandé il y a un an
- demandé il y a un an
- demandé il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a un mois