Entrées EKS Access - Guide de l'utilisateur d'Eksctl

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.

Entrées EKS Access

Vous pouvez utiliser eksctl pour gérer les entrées d'accès EKS. Utilisez les entrées d'accès pour accorder des autorisations Kubernetes à AWS IAM Identities. Par exemple, vous pouvez accorder à un rôle de développeur l'autorisation de lire les ressources Kubernetes dans un cluster.

Cette rubrique explique comment utiliser eksctl pour gérer les entrées d'accès. Pour des informations générales sur les entrées d'accès, voir Accorder aux utilisateurs IAM l'accès à Kubernetes avec des entrées d'accès EKS.

Vous pouvez joindre des politiques d'accès Kubernetes définies par AWS ou associer une identité IAM à un groupe Kubernetes.

Pour plus d'informations sur les politiques prédéfinies disponibles, voir Associer des politiques d'accès aux entrées d'accès.

Si vous devez définir les politiques Kubernetes du client, associez l'identité IAM à un groupe Kubernetes et accordez des autorisations à ce groupe.

Mode d'authentification du cluster

Vous ne pouvez utiliser les entrées d'accès que si le mode d'authentification du cluster le permet.

Pour plus d'informations, voir Définir le mode d'authentification du cluster

Définir le mode d'authentification avec un fichier YAML

eksctla ajouté un nouveau accessConfig.authenticationMode champ sous ClusterConfig, qui peut être défini sur l'une des trois valeurs suivantes :

  • CONFIG_MAP- par défaut dans l'API EKS - seul aws-auth ConfigMap sera utilisé

  • API- seule l'API d'entrées d'accès sera utilisée

  • API_AND_CONFIG_MAP- par défaut dans eksctl - les deux aws-auth ConfigMap et l'API d'entrées d'accès peuvent être utilisées

Définissez le mode d'authentification dans ClusterConfig YAML :

accessConfig: authenticationMode: <>

Mettre à jour le mode d'authentification à l'aide d'une commande

Si vous souhaitez utiliser des entrées d'accès sur un cluster déjà existant, non créé par eksctl, où l'CONFIG_MAPoption est utilisée, l'utilisateur devra d'abord définir sur. authenticationMode API_AND_CONFIG_MAP Pour cela, eksctl a introduit une nouvelle commande pour mettre à jour le mode d'authentification du cluster, qui fonctionne à la fois avec les indicateurs CLI, par exemple

eksctl utils update-authentication-mode --cluster my-cluster --authentication-mode API_AND_CONFIG_MAP

Accédez aux ressources d'entrée

Les entrées d'accès ont un type, tel que STANDARD ouEC2_LINUX. Le type dépend de la manière dont vous utilisez l'entrée d'accès.

  • Le standard type est destiné à accorder des autorisations Kubernetes aux utilisateurs IAM et aux rôles IAM.

    • Par exemple, vous pouvez consulter les ressources Kubernetes dans la console AWS en attachant une politique d'accès au rôle ou à l'utilisateur que vous utilisez pour accéder à la console.

  • Les EC2_WINDOWS types EC2_LINUX et permettent d'accorder des autorisations Kubernetes aux instances. EC2 Les instances utilisent ces autorisations pour rejoindre le cluster.

Pour plus d'informations sur les types d'entrées d'accès, voir Création d'entrées d'accès

IAM entités

Vous pouvez utiliser des entrées d'accès pour accorder des autorisations Kubernetes aux identités IAM telles que les utilisateurs IAM et les rôles IAM.

Utilisez le accessConfig.accessEntries champ pour associer l'ARN d'une ressource IAM à une API EKS Access Entries. Par exemple :

accessConfig: authenticationMode: API_AND_CONFIG_MAP accessEntries: - principalARN: arn:aws:iam::111122223333:user/my-user-name type: STANDARD kubernetesGroups: # optional Kubernetes groups - group1 # groups can used to give permissions via RBAC - group2 - principalARN: arn:aws:iam::111122223333:role/role-name-1 accessPolicies: # optional access polices - policyARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy accessScope: type: namespace namespaces: - default - my-namespace - dev-* - principalARN: arn:aws:iam::111122223333:role/admin-role accessPolicies: # optional access polices - policyARN: arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy accessScope: type: cluster - principalARN: arn:aws:iam::111122223333:role/role-name-2 type: EC2_LINUX

En plus d'associer des politiques EKS, on peut également spécifier les groupes Kubernetes auxquels appartient une entité IAM, octroyant ainsi des autorisations via RBAC.

Groupes de nœuds gérés et Fargate

L'intégration avec les entrées d'accès à ces ressources sera réalisée en coulisse grâce à l'API EKS. Les groupes de nœuds gérés et les pods Fargate nouvellement créés créeront des entrées d'accès à l'API, plutôt que d'utiliser des ressources RBAC préchargées. Les groupes de nœuds et les pods Fargate existants ne seront pas modifiés et continueront de s'appuyer sur les entrées de la carte de configuration aws-auth.

Groupes de nœuds autogérés

Chaque entrée d'accès possède un type. Pour autoriser les groupes de nœuds autogérés, eksctl vous créerez une entrée d'accès unique pour chaque groupe de nœuds, l'ARN principal étant défini sur l'ARN du rôle de nœud et le type défini sur AmiFamily EC2_LINUX ou EC2_WINDOWS en fonction de celui-ci.

Lorsque vous créez vos propres entrées d'accès, vous pouvez également spécifier EC2_LINUX (pour un rôle IAM utilisé avec des nœuds autogérés Linux ou Bottlerocket), EC2_WINDOWS (pour un rôle IAM utilisé avec des nœuds autogérés Windows), FARGATE_LINUX (pour un rôle IAM utilisé avec AWS Fargate (Fargate)) ou en tant que type. STANDARD Si vous ne spécifiez aucun type, le type par défaut est défini surSTANDARD.

Note

Lors de la suppression d'un groupe de nœuds créé avec un groupe préexistantinstanceRoleARN, il est de la responsabilité de l'utilisateur de supprimer l'entrée d'accès correspondante lorsqu'aucun autre groupe de nœuds n'y est associé. Cela est dû au fait que eksctl ne cherche pas à savoir si une entrée d'accès est toujours utilisée par des groupes de nœuds autogérés qui n'ont pas été créés par eksctl, car il s'agit d'un processus compliqué.

Créer une entrée d'accès

Cela peut être fait de deux manières différentes, soit lors de la création du cluster, soit en spécifiant les entrées d'accès souhaitées dans le cadre du fichier de configuration, soit en exécutant :

eksctl create cluster -f config.yaml

OU après la création du cluster, en exécutant :

eksctl create accessentry -f config.yaml

Pour un exemple de fichier de configuration permettant de créer des entrées d'accès, consultez 40-access-entries.yaml dans le dépôt eksctl. GitHub

Obtenir l'entrée d'accès

L'utilisateur peut récupérer toutes les entrées d'accès associées à un certain cluster en exécutant l'une des opérations suivantes :

eksctl get accessentry -f config.yaml

OU

eksctl get accessentry --cluster my-cluster

Sinon, pour récupérer uniquement l'entrée d'accès correspondant à une certaine entité IAM, il faut utiliser le --principal-arn drapeau. Par exemple

eksctl get accessentry --cluster my-cluster --principal-arn arn:aws:iam::111122223333:user/admin

Supprimer l'entrée d'accès

Pour supprimer une seule entrée d'accès à la fois, utilisez :

eksctl delete accessentry --cluster my-cluster --principal-arn arn:aws:iam::111122223333:user/admin

Pour supprimer plusieurs entrées d'accès, utilisez le --config-file drapeau et spécifiez toutes les entrées principalARN’s correspondantes, sous le accessEntry champ de niveau supérieur, par ex.

... accessEntry: - principalARN: arn:aws:iam::111122223333:user/my-user-name - principalARN: arn:aws:iam::111122223333:role/role-name-1 - principalARN: arn:aws:iam::111122223333:role/admin-role
eksctl delete accessentry -f config.yaml

Migrer depuis aws-auth ConfigMap

L'utilisateur peut migrer ses identités IAM existantes de aws-auth configmap vers les entrées d'accès en exécutant ce qui suit :

eksctl utils migrate-to-access-entry --cluster my-cluster --target-authentication-mode <API or API_AND_CONFIG_MAP>

Lorsque l'--target-authentication-modeindicateur est défini surAPI, le mode d'authentification passe en API API mode (ignoré s'il est déjà activé), les mappages d'identité IAM sont migrés vers les entrées d'accès et le aws-auth fichier configmap est supprimé du cluster.

Lorsque l'--target-authentication-modeindicateur est défini surAPI_AND_CONFIG_MAP, le mode d'authentification passe en API_AND_CONFIG_MAP API_AND_CONFIG_MAP mode (ignoré s'il est déjà activé), les mappages d'identité IAM sont migrés vers les entrées d'accès, mais aws-auth le configmap est conservé.

Note

Lorsque l'--target-authentication-modeindicateur est défini surAPI, cette commande ne met pas à jour le mode d'authentification API en mode si aws-auth configmap possède l'une des contraintes ci-dessous.

  • Il existe un mappage d'identité au niveau du compte.

  • Un ou plusieurs Roles/Users sont mappés vers le ou les groupes Kubernetes commençant par un préfixe system: (sauf pour les groupes spécifiques à EKS, c'est-à-diresystem:masters, etc.). system:bootstrappers system:nodes

  • Un ou plusieurs mappages d'identité IAM concernent un [rôle lié au service] (lien : IAM/latest/UserGuide/using - service-linked-roles .html).

Désactiver les autorisations d'administrateur du créateur du cluster

eksctla ajouté un nouveau champ accessConfig.bootstrapClusterCreatorAdminPermissions: boolean qui, lorsqu'il est défini sur false, désactive l'octroi d'autorisations d'administrateur de cluster à l'identité IAM créant le cluster. par exemple

ajoutez l'option au fichier de configuration :

accessConfig:
  bootstrapClusterCreatorAdminPermissions: false

et lancez :

eksctl create cluster -f config.yaml