Association des stratégies d’accès aux entrées d’accès - Amazon EKS

Aidez à améliorer cette page

Pour contribuer à ce guide de l’utilisateur, cliquez sur le lien Modifier cette page sur GitHub qui se trouve dans le volet droit de chaque page.

Association des stratégies d’accès aux entrées d’accès

Vous pouvez attribuer une ou plusieurs stratégies d'accès à des entrées d'accès de type STANDARD. Amazon EKS accorde automatiquement aux autres types d'entrées d'accès les autorisations nécessaires pour fonctionner correctement dans votre cluster. Les stratégies d’accès Amazon EKS contiennent des autorisations Kubernetes et non des autorisations IAM. Avant d’associer une stratégie d’accès à une entrée d’accès, assurez-vous de bien comprendre les autorisations Kubernetes incluses dans chaque stratégie d’accès. Pour de plus amples informations, consultez Vérification des autorisations des stratégies d’accès. Si aucune stratégie d’accès ne correspond à vos besoins, n’associez pas de stratégie d’accès à l’entrée d’accès. À la place, indiquez un ou plusieurs noms de groupes pour l’entrée d’accès, puis créez et gérez les objets Kubernetes de contrôle d’accès basé sur les rôles. Pour de plus amples informations, consultez Créer des entrées d’accès.

  • Une entrée d'accès existante. Pour en créer un, consultez Créer des entrées d’accès.

  • Un rôle ou un utilisateur de gestion des identités et des accès AWS disposant des autorisations suivantes : ListAccessEntries, DescribeAccessEntry, UpdateAccessEntry, ListAccessPolicies, AssociateAccessPolicy et DisassociateAccessPolicy. Pour plus d’informations, consultez Actions définies par Amazon Elastic Kubernetes Service dans la Référence des autorisations de service.

Avant d'associer des stratégies d'accès à des entrées d'accès, tenez compte des exigences suivantes :

  • Vous pouvez associer plusieurs stratégies d'accès à chaque entrée d'accès, mais vous ne pouvez associer chaque politique à une entrée d'accès qu'une seule fois. Si vous associez plusieurs stratégies d’accès, le principal IAM lié à l’entrée d’accès dispose de toutes les autorisations incluses dans ces stratégies d’accès.

  • Vous pouvez étendre une stratégie d’accès à toutes les ressources d’un cluster ou en spécifiant le nom d’un ou de plusieurs espaces de noms Kubernetes. Vous pouvez utiliser des caractères génériques pour le nom d'un espace de noms. Par exemple, si vous souhaitez étendre une stratégie d'accès à tous les espaces de noms commençant par dev-, vous pouvez spécifier dev-* sous forme de nom d'espace de noms. Assurez-vous que les espaces de noms existent sur votre cluster et que votre orthographe correspond au nom réel de l'espace de noms du cluster. Amazon EKS ne vérifie ni l’orthographe, ni l’existence des espaces de noms indiqués dans votre cluster.

  • Vous pouvez modifier la portée d'accès d'une stratégie d'accès après l'avoir associée à une entrée d'accès. Si vous avez limité la stratégie d’accès aux espaces de noms Kubernetes, vous pouvez ajouter ou supprimer des espaces de noms de l’association selon les besoins.

  • Si vous associez une stratégie d'accès à une entrée d'accès dont les noms de groupe sont également spécifiés, le principal IAM dispose alors de toutes les autorisations dans toutes les stratégies d'accès associées. Il dispose également de toutes les autorisations dans n’importe quel objet Kubernetes Role ou ClusterRole spécifié dans n’importe quels objets Kubernetes Role et RoleBinding qui spécifient les noms de groupes.

  • Si vous exécutez la commande kubectl auth can-i --list, les autorisations accordées par les stratégies d’accès associées à une entrée d’accès n’apparaîtront pas pour le principal IAM utilisé lors de l’exécution de la commande. La commande n’affiche les autorisations Kubernetes que si vous les avez accordées dans des objets Kubernetes Role ou ClusterRole que vous avez liés aux noms de groupes ou au nom d’utilisateur spécifiés pour une entrée d’accès.

  • Si vous usurpez l’identité d’un utilisateur ou groupe Kubernetes lorsque vous interagissez avec les objets Kubernetes de votre cluster, par exemple en utilisant la commande kubectl avec --as username ou --as-group group-name , vous forcez l’utilisation du mécanisme d’autorisation RBAC Kubernetes. Par conséquent, le principal IAM ne dispose d'aucune autorisation attribuée par les stratégies d'accès associées à l'entrée d'accès. Les seules autorisations Kubernetes dont dispose l’utilisateur ou le groupe dont l’identité est usurpée par le principal IAM sont celles que vous lui avez accordées dans les objets Kubernetes Role ou ClusterRole liés aux noms de groupes ou au nom d’utilisateur. Pour que votre principal IAM bénéficie des autorisations définies dans les stratégies d’accès associées à l’entrée d’accès, n’usurpez pas l’identité d’un utilisateur ou d’un groupe Kubernetes. Le principal IAM conserve également toute autorisation que vous lui avez accordée via des objets Kubernetes Role ou ClusterRole liés aux noms de groupes ou au nom d’utilisateur que vous avez définis pour l’entrée d’accès. Pour plus d’informations, consultez Usurpation d’identité d’utilisateur dans la documentation Kubernetes.

Vous pouvez associer une stratégie d’accès à une entrée d’accès à l’aide de la AWS Management Console ou de la CLI AWS.

AWS Management Console

  1. Ouvrez la console Amazon EKS.

  2. Choisissez le nom du cluster qui possède une entrée d'accès à laquelle associer une stratégie d'accès.

  3. Choisissez l'onglet Access.

  4. Si le type d'entrée d'accès est Standard, vous pouvez associer ou dissocier les stratégies d'accès Amazon EKS. Si le type de votre entrée d’accès est différent de Standard, cette option n’est pas disponible.

  5. Choisissez Associer la stratégie d'accès.

  6. Dans Nom de la stratégie, sélectionnez la stratégie avec les autorisations que vous souhaitez attribuer au principal IAM. Pour consulter les autorisations incluses dans chaque stratégie, consultez Vérification des autorisations des stratégies d’accès.

  7. Pour Portée d'accès, choisissez une portée d'accès. Si vous choisissez Cluster, les autorisations de la stratégie d’accès sont accordées au principal IAM pour tous les espaces de noms Kubernetes. Si vous choisissez Espace de noms Kubernetes, vous pouvez ensuite sélectionner Ajouter un nouvel espace de noms. Dans le champ Espace de noms qui s’affiche, saisissez le nom d’un espace de noms Kubernetes de votre cluster. Si vous souhaitez que le principal IAM dispose d'autorisations sur plusieurs espaces de noms, vous pouvez saisir plusieurs espaces de noms.

  8. Choisissez Ajouter une stratégie d'accès.

AWS CLI

  1. Version 2.12.3 ou ultérieure ou version 1.27.160 ou ultérieure de l’interface de la ligne de commande AWS (AWS CLI) installée et configurée sur votre appareil ou dans AWS CloudShell. Pour vérifier votre version actuelle, utilisez aws --version | cut -d / -f2 | cut -d ' ' -f1. Les gestionnaires de package tels que yum, apt-get ou Homebrew pour macOS ont souvent plusieurs versions de retard par rapport à la dernière version de l’AWS CLI. Pour installer la dernière version, consultez les sections Installation et Configuration rapide avec aws configure du Guide de l’utilisateur de l’interface de la ligne de commande AWS. La version de l’AWS CLI installée dans AWS CloudShell peut également être plusieurs versions derrière la dernière version. Pour la mettre à jour, consultez la section Installation de l’AWS CLI dans votre répertoire personnel dans le Guide de l’utilisateur AWS CloudShell.

  2. Affichez les stratégies d'accès disponibles.

    aws eks list-access-policies --output table

    L'exemple qui suit illustre un résultat.

    --------------------------------------------------------------------------------------------------------- | ListAccessPolicies | +-------------------------------------------------------------------------------------------------------+ || accessPolicies || |+---------------------------------------------------------------------+-------------------------------+| || arn | name || |+---------------------------------------------------------------------+-------------------------------+| || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSAdminPolicy | AmazonEKSAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy | AmazonEKSClusterAdminPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSEditPolicy | AmazonEKSEditPolicy || || {arn-aws}eks::aws:cluster-access-policy/AmazonEKSViewPolicy | AmazonEKSViewPolicy || |+---------------------------------------------------------------------+-------------------------------+|

    Pour consulter les autorisations incluses dans chaque stratégie, consultez Vérification des autorisations des stratégies d’accès.

  3. Consultez vos entrées d'accès existantes. Remplacez my-cluster par le nom de votre cluster.

    aws eks list-access-entries --cluster-name my-cluster

    L'exemple qui suit illustre un résultat.

    { "accessEntries": [ "arn:aws:iam::111122223333:role/my-role", "arn:aws:iam::111122223333:user/my-user" ] }
  4. Associez une stratégie d'accès à une entrée d'accès. L'exemple suivant associe la stratégie d'accès AmazonEKSViewPolicy à une entrée d'accès. Chaque fois que le rôle IAM my-role tente d’accéder aux objets Kubernetes du cluster, Amazon EKS autorise ce rôle à utiliser les autorisations définies dans la stratégie d’accès uniquement pour les objets Kubernetes situés dans les espaces de noms my-namespace1 et my-namespace2. Remplacez my-cluster par le nom de votre cluster, 111122223333 par l’ID de votre compte AWS et my-role par le nom du rôle IAM pour lequel vous souhaitez qu’Amazon EKS autorise l’accès aux objets du cluster Kubernetes.

    aws eks associate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --access-scope type=namespace,namespaces=my-namespace1,my-namespace2 --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy

    Si vous souhaitez que le principal IAM dispose des autorisations à l'échelle du cluster, remplacez type=namespace,namespaces=my-namespace1,my-namespace2 par type=cluster. Si vous souhaitez associer plusieurs stratégies d'accès à l'entrée d'accès, exécutez la commande plusieurs fois, chaque fois avec une stratégie d'accès unique. Chaque stratégie d'accès associée possède sa propre portée.

    Note

    Si vous souhaitez ultérieurement modifier la portée d'une stratégie d'accès associée, réexécutez la commande précédente avec la nouvelle portée. Par exemple, si vous souhaitez supprimer my-namespace2, vous devez réexécuter la commande en utilisant uniquement type=namespace,namespaces=my-namespace1 . Si vous souhaitez modifier la portée de namespace à cluster, vous devez exécuter à nouveau la commande en utilisant type=cluster, ce qui supprime type=namespace,namespaces=my-namespace1,my-namespace2 .

  5. Déterminez les stratégies d'accès associées à une entrée d'accès.

    aws eks list-associated-access-policies --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role

    L'exemple qui suit illustre un résultat.

    { "clusterName": "my-cluster", "principalArn": "arn:aws:iam::111122223333", "associatedAccessPolicies": [ { "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSViewPolicy", "accessScope": { "type": "cluster", "namespaces": [] }, "associatedAt": "2023-04-17T15:25:21.675000-04:00", "modifiedAt": "2023-04-17T15:25:21.675000-04:00" }, { "policyArn": "arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy", "accessScope": { "type": "namespace", "namespaces": [ "my-namespace1", "my-namespace2" ] }, "associatedAt": "2023-04-17T15:02:06.511000-04:00", "modifiedAt": "2023-04-17T15:02:06.511000-04:00" } ] }

    Dans l’exemple précédent, le principal IAM associé à cette entrée d’accès dispose d’autorisations de lecture sur tous les espaces de noms du cluster et d’autorisations administrateur sur deux espaces de noms Kubernetes.

  6. Dissociez une stratégie d'accès d'une entrée d'accès. Dans cet exemple, la stratégie AmazonEKSAdminPolicy est dissociée d'une entrée d'accès. Le principal IAM conserve toutefois les autorisations définies dans la stratégie d'accès AmazonEKSViewPolicy pour les objets des espaces de noms my-namespace1 et my-namespace2, car cette stratégie d'accès n'est pas dissociée de l'entrée d'accès.

    aws eks disassociate-access-policy --cluster-name my-cluster --principal-arn arn:aws:iam::111122223333:role/my-role \ --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSAdminPolicy

Pour répertorier toutes les stratégies d’accès disponibles, consultez Vérification des autorisations des stratégies d’accès.