Questa pagina spiega come gestire gli utenti in Distributed Cloud connected.
Quando crei un cluster connesso Distributed Cloud, solo l'account utente che hai utilizzato per creare il cluster ha accesso a quest'ultimo. Per concedere l'accesso al cluster a più utenti, puoi eseguire una delle seguenti operazioni:
- Concedi le autorizzazioni richieste utilizzando Kubernetes RBAC
- Utilizzare 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 all'account dell'utente utilizzando il controllo dell'accesso basato su ruoli (RBAC) di Kubernetes. Queste autorizzazioni sono incapsulate in diversi ruoli. Dopo aver concesso il ruolo appropriato a un account utente, puoi aggiungere l'account al cluster connesso Distributed Cloud di destinazione.
Distributed Cloud connesso non supporta i gruppi Identity and Access Management o i provider di identità di terze parti per l'utilizzo con Kubernetes RBAC sui cluster Distributed Cloud connesso.
Per concedere ruoli agli utenti, devi utilizzare le seguenti risorse Kubernetes:
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 connesso Distributed Cloud, l'account utente
che utilizzi per farlo 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 applicandola 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 questo binding del ruolo.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 questo binding del ruolo.ACCOUNT_NAME: il nome dell'account utente di destinazione.
Concedere le autorizzazioni per uno sviluppatore di applicazioni
Per concedere a uno sviluppatore di applicazioni le autorizzazioni necessarie per eseguire il deployment dei workload sul cluster di destinazione, procedi nel seguente modo:
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 associa gli account utente di destinazione al ruolo creato nel passaggio precedente e applicalo 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 questo binding del ruolo.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.
Concedere le autorizzazioni per un service agent Cloud Build
Per concedere a un service agent 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 associa l'account agente del servizio Cloud Build di destinazione al ruolo che hai creato nel passaggio precedente e applicalo 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 questo binding del ruolo.NAMESPACE: il nome dello spazio dei nomi di destinazione.PROJECT_ID: l'ID del progetto Google Cloud di destinazione.ROLE_NAME: il nome del ruolo di destinazione.
Se devi concedere le autorizzazioni dell'agente di servizio Cloud Build per eseguire il deployment e gestire il workload in tutti gli spazi dei nomi del cluster di destinazione, crea una risorsa 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 console Google Cloud , segui questi passaggi:
Crea una risorsa
ClusterRoleche consenta all'agente di connessione di rappresentare l'utente che deve visualizzare le informazioni sul cluster nella console Google Cloud :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 associa l'account di servizio dell'agente di connessione al ruolo creato nel passaggio precedente e applicalo 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 questo binding del ruolo.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 come segue:
Crea una risorsa
ClusterRoleche consenta all'agente di connessione di rappresentare l'utente che deve visualizzare le informazioni sul cluster nella console Google Cloud :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 associa l'account di servizio dell'agente di connessione al ruolo creato nel passaggio precedente e applicalo 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 questo binding del ruolo.ACCOUNT_NAME: il nome dell'account utente del servizio di destinazione.ROLE_NAME: il nome del ruolo di destinazione.
Utilizza il gateway di connessione per accedere ai cluster Distributed Cloud connessi
Hai la possibilità di utilizzare il gateway di connessione per accedere ai cluster Distributed Cloud connessi. Un utente del gateway di connessione deve disporre di uno o più dei seguenti ruoli a seconda dei requisiti aziendali:
- Connect Gateway Admin (
roles/gkehub.gatewayAdmin): concede l'accesso all'API connect gateway. In questo modo è possibile utilizzare lo strumento a riga di comandokubectlper gestire il cluster. - Gateway Gateway Editor (
roles/gkehub.gatewayEditor): concede l'accesso in lettura e scrittura al cluster. - Connect Gateway Reader (
roles/gkehub.gatewayReader): concede l'accesso di sola lettura al cluster. - Visualizzatore GKE Hub (
roles/gkehub.viewer): concede la possibilità di recuperare i filekubeconfigdal cluster.
Per saperne di più sull'utilizzo del gateway di connessione, consulta le seguenti risorse: