Questa pagina spiega come gestire gli utenti in Distributed Cloud connesso.
Quando crei un cluster Distributed Cloud connesso, solo l'account utente che hai utilizzato per creare il cluster ha accesso a quel cluster. Per concedere l'accesso al cluster a più utenti, puoi eseguire una delle seguenti operazioni:
- Concedi le autorizzazioni richieste utilizzando Kubernetes RBAC
- Utilizza Connect Gateway per accedere al cluster
Concedi le autorizzazioni richieste utilizzando Kubernetes RBAC
Questa sezione descrive come concedere le autorizzazioni richieste dalle esigenze aziendali di un utente al suo account utilizzando il controllo dell'accesso basato sui ruoli (RBAC, Role-Based Access Control) di Kubernetes. Queste autorizzazioni sono incapsulate da diversi ruoli. Dopo aver concesso il ruolo appropriato a un account utente, puoi aggiungere l'account al cluster Distributed Cloud connesso di destinazione.
Distributed Cloud connesso non supporta i gruppi di Identity and Access Management o i provider di identità di terze parti per l'utilizzo con Kubernetes RBAC sui cluster Distributed Cloud connessi.
Devi utilizzare le seguenti risorse Kubernetes per concedere i ruoli agli utenti:
ClusterRole: consente di applicare un insieme di autorizzazioni a qualsiasi spazio dei nomi nel cluster; concede anche l'accesso alle risorse a livello di cluster.ClusterRoleBinding: associa una risorsaClusterRolea un account utente.Role: consente di applicare un insieme di autorizzazioni a uno spazio dei nomi specifico.RoleBinding: associa una risorsaRoleoClusterRolea un account utente in uno spazio dei nomi specifico.
Concedi le autorizzazioni per un amministratore del cluster
Quando crei un cluster Distributed Cloud connesso, l'account utente che utilizzi diventa automaticamente l'amministratore del cluster. Per concedere le autorizzazioni di amministratore del cluster ad altri utenti, associa l'account utente di destinazione al ruolo cluster-admin creando una risorsa ClusterRoleBinding e applicala al 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
Sostituisci quanto segue:
BINDING_NAME: un nome che identifica in modo univoco questa associazione di ruoli.ACCOUNT_NAME: il nome dell'account utente di destinazione.
Puoi anche utilizzare il seguente comando kubectl:
kubectl create clusterrolebinding "BINDING_NAME" \ --clusterrole cluster-admin --user "ACCOUNT_NAME"
Sostituisci quanto segue:
BINDING_NAME: un nome che identifica in modo univoco questa associazione di ruoli.ACCOUNT_NAME: il nome dell'account utente di destinazione.
Concedi le autorizzazioni per uno sviluppatore di applicazioni
Per concedere a uno sviluppatore di applicazioni le autorizzazioni necessarie per eseguire il deployment dei carichi di lavoro sul cluster di destinazione:
Crea una risorsa
Roleche conceda le autorizzazioni per creare e gestire pod, servizi e deployment nello spazio dei nomi di destinazione e applicala al 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"]
Sostituisci quanto segue:
NAMESPACE: il nome dello spazio dei nomi di destinazione.ROLE_NAME: un nome che identifica in modo univoco questo ruolo.
Crea una risorsa
RoleBindingche associ gli account utente di destinazione al ruolo creato nel passaggio precedente e applicala al 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
Sostituisci quanto segue:
BINDING_NAME: un nome che identifica in modo univoco questa associazione di ruoli.NAMESPACE: il nome dello spazio dei nomi di destinazione.ACCOUNT_NAME: il nome dell'account utente di destinazione.ROLE_NAME: il nome del ruolo di destinazione.
Concedi le autorizzazioni per un service agent di Cloud Build
Per concedere a un service agent di Cloud Build le autorizzazioni necessarie per eseguire il deployment dei carichi di lavoro sul cluster di destinazione:
Crea una risorsa
Roleche conceda le autorizzazioni per creare e gestire pod, servizi e deployment nello spazio dei nomi di destinazione e applicala al 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"]
Sostituisci quanto segue:
NAMESPACE: il nome dello spazio dei nomi di destinazione.ROLE_NAME: un nome che identifica in modo univoco questo ruolo.
Crea una risorsa
RoleBindingche associ l'account del service agent di Cloud Build di destinazione al ruolo creato nel passaggio precedente e applicala al 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
Sostituisci quanto segue:
BINDING_NAME: un nome che identifica in modo univoco questa associazione di ruoli.NAMESPACE: il nome dello spazio dei nomi di destinazione.PROJECT_ID: l'ID del progetto di destinazione. Google CloudROLE_NAME: il nome del ruolo di destinazione.
Se devi concedere a un service agent di Cloud Build le autorizzazioni per eseguire il deployment
e gestire i carichi di lavoro in tutti gli spazi dei nomi del cluster di destinazione, crea una ClusterRole
e una risorsa ClusterRoleBinding anziché le risorse Role e RoleBinding.
Concedi le autorizzazioni per visualizzare le informazioni sul cluster
Per concedere le autorizzazioni necessarie per visualizzare informazioni dettagliate sul cluster nella Google Cloud console, segui questi passaggi:
Crea una risorsa
ClusterRoleche consenta all'agente Connect di rappresentare l'utente che deve visualizzare le informazioni sul cluster nella Google Cloud console:apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: ROLE_NAME rules: apiGroups: [""] resources: ["users"] verbs: ["impersonate"] resourceNames: ["ACCOUNT_NAME"]
Sostituisci quanto segue:
ROLE_NAME: il nome del ruolo di destinazione.ACCOUNT_NAME: il nome dell'account utente di destinazione.
Crea una risorsa
ClusterRoleBindingche associ l'account del service agent dell'agente Connect al ruolo creato nel passaggio precedente e applicala al 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
Sostituisci quanto segue:
BINDING_NAME: un nome che identifica in modo univoco questa associazione di ruoli.ACCOUNT_NAME: il nome dell'account utente del servizio di destinazione.ROLE_NAME: il nome del ruolo di destinazione.
Devi creare una coppia di risorse ClusterRole e ClusterRoleBinding separata per ogni
utente interessato.
Puoi anche utilizzare lo strumento a riga di comando kubectl per concedere le autorizzazioni necessarie per visualizzare le informazioni sul cluster nel seguente modo:
Crea una risorsa
ClusterRoleche consenta all'agente Connect di rappresentare l'utente che deve visualizzare le informazioni sul cluster nella Google Cloud console:kubectl create clusterrole "ROLE_NAME" --verb impersonate \ --resource users --resource-name "ACCOUNT_NAME"
Sostituisci quanto segue:
ROLE_NAME: il nome del ruolo di destinazione.ACCOUNT_NAME: il nome dell'account utente del servizio di destinazione.
Crea una risorsa
ClusterRoleBindingche associ l'account del service agent dell'agente Connect al ruolo creato nel passaggio precedente e applicala al cluster:kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \ "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
Sostituisci quanto segue:
BINDING_NAME: un nome che identifica in modo univoco questa associazione di ruoli.ACCOUNT_NAME: il nome dell'account utente del servizio di destinazione.ROLE_NAME: il nome del ruolo di destinazione.
Utilizza Connect Gateway per accedere ai cluster Distributed Cloud connessi
Puoi utilizzare Connect Gateway per accedere ai cluster Distributed Cloud connessi. Un utente di Connect Gateway ha bisogno di uno o più dei seguenti ruoli a seconda delle sue esigenze aziendali:
- Amministratore di Connect Gateway (
roles/gkehub.gatewayAdmin): concede l'accesso all'API Connect Gateway. Questo ruolo consente di utilizzare lo strumento a riga di comandokubectlper gestire il cluster. - Editor di Connect Gateway (
roles/gkehub.gatewayEditor): concede l'accesso in lettura e scrittura al cluster. - Lettore di Connect Gateway (
roles/gkehub.gatewayReader): concede l'accesso di sola lettura al cluster. - Visualizzatore dell'hub GKE (
roles/gkehub.viewer): concede la possibilità di recuperare i file kubeconfig dal cluster.
Per saperne di più sull'utilizzo di Connect Gateway, consulta le seguenti risorse: