Cette page explique comment gérer les utilisateurs dans un environnement Distributed Cloud connecté.
Lorsque vous créez un cluster connecté 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
- Utiliser la passerelle Connect pour accéder au cluster
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 ajouter ce compte au cluster connecté Distributed Cloud cible.
Distributed Cloud connecté 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 connecté.
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 ressourceClusterRoleà un compte utilisateur.Role: vous permet d'appliquer un ensemble d'autorisations à un espace de noms spécifique.RoleBinding: associe une ressourceRoleouClusterRoleà un compte utilisateur dans un espace de noms spécifique.
Accorder des autorisations à un administrateur de cluster
Lorsque vous créez un cluster connecté 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 :
Créez une ressource
Rolequi 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.
Créez une ressource
RoleBindingqui 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 :
Créez une ressource
Rolequi 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.
Créez une ressource
RoleBindingqui 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 :
Créez une ressource
ClusterRolequi 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.
Créez une ressource
ClusterRoleBindingqui 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 :
Créez une ressource
ClusterRolequi 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.
Créez une ressource
ClusterRoleBindingqui 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 connecté
Vous pouvez utiliser la passerelle Connect pour accéder à vos clusters connectés 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 commandekubectlpour 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 fichierskubeconfigdu cluster.
Pour en savoir plus sur l'utilisation de la passerelle Connect, consultez les pages suivantes :