S'authentifier auprès de GKE sur AWS avec des identités externes

La fédération d'identité du personnel accorde aux identités autres que Google un accès aux servicesGoogle Cloud . Dans le contexte de GKE sur AWS, cela signifie que vous pouvez utiliser des identités externes préexistantes pour créer ou accéder à un cluster GKE sans vous appuyer sur des identifiants Google.

Voici les avantages de la fédération des identités des employés:

  • Vous n'avez plus besoin de comptes en double sur différentes plates-formes ou auprès de différents fournisseurs.
  • Vous ne définissez les autorisations qu'une seule fois, évitant ainsi le besoin de configurations sur plusieurs plates-formes.
  • Vous simplifiez l'accès des utilisateurs, car moins de connexions et de mots de passe sont nécessaires.

Avant de commencer

Avant de pouvoir autoriser des utilisateurs ou des groupes externes à accéder aux clusters GKE, vous devez suivre les étapes ci-dessous:

  1. Pour que les utilisateurs ou les groupes externes puissent utiliser l'API GKE sur AWS, configurez la fédération des identités des employés :

  2. Attribuez le rôle gkemulticloud.viewer à vos utilisateurs ou groupes externes pour qu'ils puissent accéder aux clusters. Attribuez le rôle container.clusterViewer pour afficher les clusters dans la console Google Cloud .

    Notez que les rôles sont des ensembles d'autorisations. Lorsque vous attribuez un rôle à une entité (utilisateur, groupe ou compte de service), vous donnez à cette entité toutes les autorisations contenues dans ce rôle.

    Utilisateurs

    Pour les utilisateurs individuels, vous devez attribuer le rôle gkemulticloud.viewer:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Google Cloud .
    • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les instructions recommandées dans la documentation IAM sous Paramètres de requête.
    • SUBJECT_VALUE : ID qui identifie de manière unique un utilisateur externe. Par exemple, l'ID peut être une adresse e-mail telle que alex@cymbalgroup.com.

    Groupes

    Pour les groupes, vous devez attribuer le rôle gkemulticloud.viewer :

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.viewer" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Google Cloud .
    • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les consignes recommandées dans la documentation IAM sous Paramètres de requête.
    • GROUP_ID: ID qui identifie de manière unique un groupe externe.
  3. Facultatif : Attribuez à vos utilisateurs ou groupes externes les de gestion de l'authentification et des accès (IAM). Cette étape n'est nécessaire que si vous souhaitez permettre à des utilisateurs ou à des groupes de créer ou de mettre à jour des clusters ; Elle n'est pas nécessaire pour accéder simplement à un cluster.

    Utilisateurs

    Pour les utilisateurs individuels, vous devez attribuer le rôle gkemulticloud.admin:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE"
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Google Cloud .
    • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les instructions recommandées dans la documentation IAM sous Paramètres de requête.
    • SUBJECT_VALUE : ID qui identifie de manière unique un utilisateur externe. Par exemple, l'ID peut être une adresse e-mail telle que alex@cymbalgroup.com.

    Groupes

    Pour les groupes, vous devez attribuer le rôle gkemulticloud.admin :

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role="roles/gkemulticloud.admin" \
      --member="principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    Remplacez les éléments suivants :

    • PROJECT_ID: ID de votre projet Google Cloud .
    • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les consignes recommandées dans la documentation IAM sous Paramètres de requête.
    • GROUP_ID: ID qui identifie de manière unique un groupe externe.

Pour en savoir plus sur les rôles et les autorisations d'API requis pour GKE sur AWS, consultez Rôles et autorisations d'API.

Accorder un accès externe aux clusters GKE

Il existe deux méthodes pour configurer la fédération des identités des employés afin que les utilisateurs ou les groupes externes puissent accéder à vos clusters GKE.

La méthode n° 1 nécessite de définir un fichier RBAC et à l'appliquer au cluster. Cette méthode offre un contrôle précis des autorisations, comme permettre aux utilisateurs d'avoir un accès en lecture seule aux ressources sans leur accorder un accès plus large.

La méthode 2 vous oblige à spécifier l'accès pour les identités externes lorsque vous créez ou mettez à jour un cluster. Cette méthode octroie des droits d'administrateur complets au utilisateurs ou aux groupes spécifiés.

Choisissez la méthode qui correspond le mieux au niveau de contrôle des accès souhaité : la méthode 1 pour des autorisations plus précises ou la méthode 2 pour accorder des droits d'administrateur de cluster complets.

Méthode 1: utiliser un fichier RBAC

La première méthode d'octroi d'un accès externe aux clusters GKE implique l'utilisation d'un fichier RBAC. Procédez comme suit :

  1. Définissez un fichier YAML RBAC qui inclut les sujets (utilisateurs ou groupes) et les autorisations que vous souhaitez leur accorder dans le cluster GKE. Voici des Exemples de configurations YAML RBAC pour des utilisateurs individuels et des groupes:

    Utilisateurs

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-user
    subjects:
    - kind: User
      name: principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject/SUBJECT_VALUE
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Remplacez les éléments suivants :

    • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les consignes recommandées dans la documentation IAM sous Paramètres de requête.
    • SUBJECT_VALUE : ID qui identifie de manière unique un utilisateur externe. Par exemple, l'ID peut être une adresse e-mail telle que alex@cymbalgroup.com.

    Groupes

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: gateway-cluster-admin-group
    subjects:
    - kind: Group
      name: principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID
    roleRef:
      kind: ClusterRole
      name: cluster-admin
      apiGroup: rbac.authorization.k8s.io
    

    Remplacez les éléments suivants :

    • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les consignes recommandées dans la documentation IAM sous Paramètres de requête.
    • GROUP_ID: ID qui identifie de manière unique un groupe externe.
  2. Identifiez le cluster GKE que vous souhaitez configurer et définissez-le comme le contexte actif à l'aide de la commande suivante:

      kubectl config use-context CLUSTER_CONTEXT
    

    Remplacez CLUSTER_CONTEXT par le nom de contexte approprié pour votre cluster.

  3. Avec le cluster GKE souhaité défini comme contexte actif, appliquez la configuration RBAC au cluster à l'aide de la commande suivante:

    kubectl apply -f RBAC_PATH
    

    Remplacez RBAC_PATH par le chemin d'accès au fichier RBAC que vous avez créé ou modifié.

    Lorsque vous exécutez cette commande, les utilisateurs ou les groupes spécifiés dans la configuration RBAC disposent désormais des autorisations nécessaires pour accéder au cluster GKE ciblé, tel que défini dans les règles RBAC.

  4. Si vous devez apporter des modifications ultérieures aux autorisations, modifiez le fichier RBAC et réappliquez-le au cluster en répétant les étapes précédentes.

Méthode  2 : accorder l'accès aux identités externes lors de la création ou de la mise à jour du cluster

La méthode n° 2 accorde l'accès aux identités externes lors de la création ou de la mise à jour du cluster.

Pour créer un cluster, suivez la procédure décrite dans Créer un cluster. Pour mettre à jour un cluster, suivez la procédure décrite dans Mettre à jour un cluster.

Lorsque vous exécutez la commande gcloud pour créer ou mettre à jour un cluster, spécifiez le paramètres admin-users et/ou admin-groups comme suit:

gcloud container aws clusters [create|update] CLUSTER_NAME \
    --location=LOCATION
    --admin-users=principal://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/subject SUBJECT_VALUE \
    --admin-groups=principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom du cluster
  • LOCATION: région Google Cloud dans laquelle votre cluster est géré.
  • WORKFORCE_POOL_ID: ID qui identifie de façon unique votre pool d'identités des employés dans Google Cloud. Lorsque vous mettez en forme l'ID, assurez-vous de suivre les consignes recommandées dans la documentation IAM sous Paramètres de requête.
  • SUBJECT_VALUE : ID qui identifie de manière unique un utilisateur externe. Par exemple, l'ID peut être une adresse e-mail telle que alex@cymbalgroup.com.
  • GROUP_ID: ID qui identifie de manière unique un groupe externe.

Résumé de l'octroi d'un accès aux ID externes aux clusters GKE

Après avoir exécuté la méthode 1 ou 2, les utilisateurs externes ou les groupes spécifiés peuvent utiliser la console Google Cloud pour se connecter et afficher les détails du cluster. Ils peuvent également utiliser kubectl avec l'identité de la gcloud CLI pour gérer, manipuler et communiquer avec le cluster.

Pour exécuter des commandes kubectl sur des clusters GKE, voyez comment générer une entrée kubeconfig.