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

La fédération d'identité du personnel accorde l'accès aux services Google Cloud aux identités autres que Google. Dans le contexte de GKE sur Azure, cela signifie que vous pouvez utiliser des identités externes préexistantes pour créer ou accéder à un cluster GKE sans avoir recours aux 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 d'identifiants et de mots de passe sont requis.

Avant de commencer

Avant de pouvoir autoriser des utilisateurs ou des groupes externes à accéder aux clusters GKE, vous devez effectuer les étapes suivantes :

  1. Pour que les utilisateurs ou les groupes externes puissent utiliser l'API GKE sur Azure, configurez la fédération d'identité du personnel :

  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 l'affichage 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 lui accordez toutes les autorisations qu'il contient.

    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 manière unique votre pool d'identités de personnel 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

    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 manière unique votre pool d'identités de personnel 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 aux utilisateurs ou aux groupes externes les rôles Identity and Access Management (IAM) appropriés. Cette étape n'est nécessaire que si vous souhaitez autoriser des utilisateurs ou des groupes à créer ou à mettre à jour des clusters. Elle n'est pas requise 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 manière unique votre pool d'identités de personnel 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

    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: l'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 autorisations d'API requis pour GKE sur Azure, consultez la page Rôles et autorisations des 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 nécessite que vous spécifiiez l'accès pour les identités externes lors de la création ou la mise à jour d'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 obtenir des autorisations plus précises ou la méthode 2 pour accorder des autorisations de cluster complètes des droits d'administrateur.

Méthode n° 1: Utiliser un fichier RBAC

La première méthode pour accorder 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 manière unique votre pool d'identités de personnel 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: l'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 appliquez-le à nouveau au cluster en répétant les étapes précédentes.

Méthode n° 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 les étapes décrites dans Créer un cluster. Pour mettre à jour un cluster, suivez les étapes décrites 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 azure 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 de l'accès aux ID externes aux clusters GKE

Après avoir exécuté la méthode n°1 ou n°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.