Gérer les utilisateurs Distributed Cloud

Cette page explique comment gérer les utilisateurs dans un Distributed Cloud.

Lorsque vous créez un cluster Distributed Cloud, seul le compte utilisateur que vous avez utilisé pour créer le cluster y a accès. Pour accorder l'accès au cluster à davantage d'utilisateurs, vous pouvez effectuer l'une des opérations suivantes :

Accorder les autorisations requises à l'aide de Kubernetes RBAC

Cette section explique comment accorder les autorisations requises par les besoins professionnels d'un utilisateur à son compte à l'aide du contrôle des accès basé sur les rôles (RBAC) de Kubernetes. Ces autorisations sont incluses dans plusieurs rôles. Une fois que vous avez attribué le rôle approprié à un compte utilisateur, vous pouvez l'ajouter au cluster Distributed Cloud cible.

Distributed Cloud n'est pas compatible avec les groupes Identity and Access Management ni avec les fournisseurs d'identité tiers pour une utilisation avec Kubernetes RBAC sur les clusters Distributed Cloud.

Vous devez utiliser les ressources Kubernetes suivantes pour attribuer des rôles aux utilisateurs :

  • ClusterRole : vous permet d'appliquer un ensemble d'autorisations à n'importe quel espace de noms du cluster. Il permet également d'accéder aux ressources à l'échelle du cluster.
  • ClusterRoleBinding : associe une ressource ClusterRole à un compte utilisateur.
  • Role : vous permet d'appliquer un ensemble d'autorisations à un espace de noms spécifique.
  • RoleBinding : associe une ressource Role ou ClusterRole à un compte utilisateur dans un espace de noms spécifique.

Accorder des autorisations à un administrateur de cluster

Lorsque vous créez un cluster Distributed Cloud, le compte utilisateur que vous utilisez pour ce faire devient automatiquement l'administrateur du cluster. Pour accorder des autorisations d'administrateur de cluster à d'autres utilisateurs, liez le compte utilisateur cible au rôle cluster-admin en créant une ressource ClusterRoleBinding et appliquez-la au cluster :

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: BINDING_NAME
subjects:
  kind: User
  name: ACCOUNT_NAME
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io    

Remplacez les éléments suivants :

  • BINDING_NAME : nom qui identifie de manière unique cette liaison de rôle.
  • ACCOUNT_NAME : nom du compte utilisateur cible.

Vous pouvez également exécuter la commande kubectl suivante :

kubectl create clusterrolebinding "BINDING_NAME" \
  --clusterrole cluster-admin --user "ACCOUNT_NAME"

Remplacez les éléments suivants :

  • BINDING_NAME : nom qui identifie de manière unique cette liaison de rôle.
  • ACCOUNT_NAME : nom du compte utilisateur cible.

Accorder des autorisations à un développeur d'applications

Pour accorder à un développeur d'applications les autorisations nécessaires pour déployer des charges de travail sur le cluster cible, procédez comme suit :

  1. Créez une ressource Role qui accorde les autorisations permettant de créer et de gérer des pods, des services et des déploiements dans l'espace de noms cible, puis appliquez-la au cluster :

    apiVersion: rbac.authorization.k8s.io/v1
     kind: Role
     metadata:
       namespace: NAMESPACE
       name: ROLE_NAME
     rules:
       apiGroups: ["apps", ""]
       resources: ["pods", "deployments", "services"]
       verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    

    Remplacez les éléments suivants :

    • NAMESPACE : nom de l'espace de noms cible.
    • ROLE_NAME : nom qui identifie de manière unique ce rôle.
  2. Créez une ressource RoleBinding qui lie les comptes utilisateur cibles au rôle que vous avez créé à l'étape précédente et appliquez-la au cluster :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
     namespace: NAMESPACE
     name: BINDING_NAME
    subjects:
     kind: User
     name: ACCOUNT_NAME
     kind: User
     name: ACCOUNT_NAME
    roleRef:
     kind: Role
     name: ROLE_NAME
     apiGroup: rbac.authorization.k8s.io  
    

    Remplacez les éléments suivants :

    • BINDING_NAME : nom qui identifie de manière unique cette liaison de rôle.
    • NAMESPACE : nom de l'espace de noms cible.
    • ACCOUNT_NAME : nom du compte utilisateur cible.
    • ROLE_NAME : nom du rôle cible.

Accorder des autorisations à un agent de service Cloud Build

Pour accorder à un agent de service Cloud Build les autorisations nécessaires pour déployer des charges de travail sur le cluster cible, procédez comme suit :

  1. Créez une ressource Role qui accorde les autorisations permettant de créer et de gérer des pods, des services et des déploiements dans l'espace de noms cible, puis appliquez-la au cluster :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
     namespace: NAMESPACE
     name: ROLE_NAME
    rules:
     apiGroups: ["apps", ""]
     resources: ["pods", "deployments", "services"]
     verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
    

    Remplacez les éléments suivants :

    • NAMESPACE : nom de l'espace de noms cible.
    • ROLE_NAME : nom qui identifie de manière unique ce rôle.
  2. Créez une ressource RoleBinding qui associe le compte de l'agent de service Cloud Build cible au rôle que vous avez créé à l'étape précédente, puis appliquez-la au cluster :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
     namespace: NAMESPACE
     name: BINDING_NAME
    subjects:
     kind: User
     name: PROJECT_ID@cloudbuild.gserviceaccount.com
    roleRef:
     kind: Role
     name: ROLE_NAME
     apiGroup: rbac.authorization.k8s.io  
    

    Remplacez les éléments suivants :

    • BINDING_NAME : nom qui identifie de manière unique cette liaison de rôle.
    • NAMESPACE : nom de l'espace de noms cible.
    • PROJECT_ID : ID du projet Google Cloud cible.
    • ROLE_NAME : nom du rôle cible.

Si vous devez accorder à un agent de service Cloud Build les autorisations nécessaires pour déployer et gérer des charges de travail dans tous les espaces de noms du cluster cible, créez une ressource ClusterRole et une ressource ClusterRoleBinding au lieu des ressources Role et RoleBinding.

Accorder des autorisations pour afficher les informations sur le cluster

Pour accorder les autorisations nécessaires pour afficher des informations détaillées sur le cluster dans la console Google Cloud , procédez comme suit :

  1. Créez une ressource ClusterRole qui permet à l'agent Connect d'usurper l'identité de l'utilisateur qui doit afficher les informations du cluster dans la console Google Cloud  :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
     name: ROLE_NAME
    rules:
     apiGroups: [""]
     resources: ["users"]
     verbs: ["impersonate"]
     resourceNames: ["ACCOUNT_NAME"]
    

    Remplacez les éléments suivants :

    • ROLE_NAME : nom du rôle cible.
    • ACCOUNT_NAME : nom du compte utilisateur cible.
  2. Créez une ressource ClusterRoleBinding qui lie le compte de l'agent de service Connect à celui que vous avez créé à l'étape précédente, puis appliquez-la au cluster :

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
     name: BINDING_NAME
    subjects:
     kind: ServiceAccount
     name: ACCOUNT_NAME
    roleRef:
     kind: ClusterRole
     name: ROLE_NAME
     apiGroup: rbac.authorization.k8s.io
    

    Remplacez les éléments suivants :

    • BINDING_NAME : nom qui identifie de manière unique cette liaison de rôle.
    • ACCOUNT_NAME : nom du compte d'utilisateur de service cible.
    • ROLE_NAME : nom du rôle cible.

Vous devez créer une paire de ressources ClusterRole et ClusterRoleBinding distincte pour chaque utilisateur concerné.

Vous pouvez également utiliser l'outil de ligne de commande kubectl pour accorder les autorisations nécessaires à l'affichage des informations sur le cluster, comme suit :

  1. Créez une ressource ClusterRole qui permet à l'agent Connect d'usurper l'identité de l'utilisateur qui doit afficher les informations du cluster dans la console Google Cloud  :

    kubectl create clusterrole "ROLE_NAME" --verb impersonate \
     --resource users --resource-name "ACCOUNT_NAME"
    

    Remplacez les éléments suivants :

    • ROLE_NAME : nom du rôle cible.
    • ACCOUNT_NAME : nom du compte d'utilisateur de service cible.
  2. Créez une ressource ClusterRoleBinding qui lie le compte de l'agent de service Connect à celui que vous avez créé à l'étape précédente, puis appliquez-la au cluster :

    kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \
     "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
    

    Remplacez les éléments suivants :

    • BINDING_NAME : nom qui identifie de manière unique cette liaison de rôle.
    • ACCOUNT_NAME : nom du compte d'utilisateur de service cible.
    • ROLE_NAME : nom du rôle cible.

Utiliser la passerelle Connect pour accéder aux clusters Distributed Cloud

Vous pouvez utiliser la passerelle Connect pour accéder à vos clusters Distributed Cloud. Un utilisateur de passerelle Connect a besoin d'un ou de plusieurs des rôles suivants, en fonction de ses besoins professionnels :

  • Administrateur Connect Gateway (roles/gkehub.gatewayAdmin) : accorde l'accès à l'API Connect Gateway. Cela permet d'utiliser l'outil de ligne de commande kubectl pour gérer le cluster.
  • Éditeur de passerelle Gateway (roles/gkehub.gatewayEditor) : accorde un accès en lecture et en écriture au cluster.
  • Lecteur Connect Gateway (roles/gkehub.gatewayReader) : accorde un accès en lecture seule au cluster.
  • Lecteur GKE Hub (roles/gkehub.viewer) : permet de récupérer les fichiers kubeconfig du cluster.

Pour en savoir plus sur l'utilisation de la passerelle Connect, consultez les pages suivantes :