Gestire gli utenti di Distributed Cloud connesso

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

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 risorsa ClusterRole a un account utente.
  • Role: consente di applicare un insieme di autorizzazioni a uno spazio dei nomi specifico.
  • RoleBinding: associa una risorsa Role o ClusterRole a 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:

  1. Crea una risorsa Role che 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.
  2. Crea una risorsa RoleBinding che 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:

  1. Crea una risorsa Role che 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.
  2. Crea una risorsa RoleBinding che 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 Cloud
    • ROLE_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:

  1. Crea una risorsa ClusterRole che 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.
  2. Crea una risorsa ClusterRoleBinding che 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:

  1. Crea una risorsa ClusterRole che 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.
  2. Crea una risorsa ClusterRoleBinding che 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 comando kubectl per 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: