Gestisci gli utenti di Distributed Cloud

Questa pagina spiega come gestire gli utenti in un cloud distribuito.

Quando crei un cluster Distributed Cloud, 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 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 Distributed Cloud di destinazione.

Distributed Cloud 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.

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 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, 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:

  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 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:

  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 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:

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

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

Hai la possibilità di utilizzare il gateway di connessione per accedere ai cluster Distributed Cloud. 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 comando kubectl per 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 file kubeconfig dal cluster.

Per saperne di più sull'utilizzo del gateway di connessione, consulta le seguenti risorse: