Distributed Cloud-Nutzer verwalten

Auf dieser Seite wird beschrieben, wie Sie Nutzer in einer Distributed Cloud verwalten.

Wenn Sie einen Distributed Cloud-Cluster erstellen, erhält nur das Nutzerkonto, mit dem Sie den Cluster erstellt haben, Zugriff auf diesen Cluster. Wenn Sie weiteren Nutzern Zugriff auf den Cluster gewähren möchten, haben Sie folgende Möglichkeiten:

Erforderliche Berechtigungen mit Kubernetes RBAC gewähren

In diesem Abschnitt wird beschrieben, wie Sie dem Konto eines Nutzers die Berechtigungen zuweisen, die für die geschäftlichen Anforderungen des Nutzers erforderlich sind, indem Sie die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) von Kubernetes verwenden. Diese Berechtigungen sind in mehreren Rollen enthalten. Nachdem Sie einem Nutzerkonto die entsprechende Rolle zugewiesen haben, können Sie das Konto dem Zielcluster für Distributed Cloud hinzufügen.

Distributed Cloud unterstützt keine Identity and Access Management-Gruppen oder Identitätsanbieter von Drittanbietern für die Verwendung mit Kubernetes RBAC in Distributed Cloud-Clustern.

Sie müssen die folgenden Kubernetes-Ressourcen verwenden, um Nutzern Rollen zuzuweisen:

  • ClusterRole: Ermöglicht es Ihnen, eine Reihe von Berechtigungen auf einen beliebigen Namespace im Cluster anzuwenden. Außerdem wird der Zugriff auf clusterweite Ressourcen gewährt.
  • ClusterRoleBinding: Bindet eine ClusterRole-Ressource an ein Nutzerkonto.
  • Role: Ermöglicht es Ihnen, eine Reihe von Berechtigungen auf einen bestimmten Namespace anzuwenden.
  • RoleBinding: Bindet eine Role- oder ClusterRole-Ressource an ein Nutzerkonto in einem bestimmten Namespace.

Berechtigungen für einen Clusteradministrator erteilen

Wenn Sie einen Distributed Cloud-Cluster erstellen, wird das dafür verwendete Nutzerkonto automatisch zum Clusteradministrator. Wenn Sie zusätzlichen Nutzern Clusteradministratorberechtigungen erteilen möchten, binden Sie das Zielnutzerkonto an die Rolle cluster-admin, indem Sie eine ClusterRoleBinding-Ressource erstellen und auf den Cluster anwenden:

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    

Ersetzen Sie Folgendes:

  • BINDING_NAME: Ein Name, der diese Rollenbindung eindeutig identifiziert.
  • ACCOUNT_NAME: der Name des Zielnutzerkontos.

Sie können auch den folgenden kubectl-Befehl verwenden:

kubectl create clusterrolebinding "BINDING_NAME" \
  --clusterrole cluster-admin --user "ACCOUNT_NAME"

Ersetzen Sie Folgendes:

  • BINDING_NAME: Ein Name, der diese Rollenbindung eindeutig identifiziert.
  • ACCOUNT_NAME: der Name des Zielnutzerkontos.

Berechtigungen für einen Anwendungsentwickler erteilen

So gewähren Sie einem Anwendungsentwickler die Berechtigungen, die zum Bereitstellen von Arbeitslasten im Zielcluster erforderlich sind:

  1. Erstellen Sie eine Role-Ressource, die die Berechtigungen zum Erstellen und Verwalten von Pods, Diensten und Deployments im Zielnamespace gewährt, und wenden Sie sie auf den Cluster an:

    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"]
    

    Ersetzen Sie Folgendes:

    • NAMESPACE: der Name des Ziel-Namespace.
    • ROLE_NAME: Ein Name, der diese Rolle eindeutig identifiziert.
  2. Erstellen Sie eine RoleBinding-Ressource, die die Zielnutzerkonten an die Rolle bindet, die Sie im vorherigen Schritt erstellt haben, und wenden Sie sie auf den Cluster an:

    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  
    

    Ersetzen Sie Folgendes:

    • BINDING_NAME: Ein Name, der diese Rollenbindung eindeutig identifiziert.
    • NAMESPACE: der Name des Ziel-Namespace.
    • ACCOUNT_NAME: der Name des Zielnutzerkontos.
    • ROLE_NAME: Der Name der Zielrolle.

Berechtigungen für einen Cloud Build-Dienst-Agent erteilen

So gewähren Sie einem Cloud Build-Dienst-Agent die Berechtigungen, die zum Bereitstellen von Arbeitslasten im Zielcluster erforderlich sind:

  1. Erstellen Sie eine Role-Ressource, die die Berechtigungen zum Erstellen und Verwalten von Pods, Diensten und Deployments im Zielnamespace gewährt, und wenden Sie sie auf den Cluster an:

    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"]
    

    Ersetzen Sie Folgendes:

    • NAMESPACE: der Name des Ziel-Namespace.
    • ROLE_NAME: Ein Name, der diese Rolle eindeutig identifiziert.
  2. Erstellen Sie eine RoleBinding-Ressource, mit der das Ziel-Cloud Build-Dienstagentkonto an die Rolle gebunden wird, die Sie im vorherigen Schritt erstellt haben, und wenden Sie sie auf den Cluster an:

    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  
    

    Ersetzen Sie Folgendes:

    • BINDING_NAME: Ein Name, der diese Rollenbindung eindeutig identifiziert.
    • NAMESPACE: der Name des Ziel-Namespace.
    • PROJECT_ID: die ID des Zielprojekts Google Cloud .
    • ROLE_NAME: Der Name der Zielrolle.

Wenn Sie einem Cloud Build-Dienst-Agent Berechtigungen zum Bereitstellen und Verwalten von Arbeitslasten in allen Namespaces im Zielcluster gewähren müssen, erstellen Sie anstelle der Ressourcen Role und RoleBinding eine ClusterRole- und eine ClusterRoleBinding-Ressource.

Berechtigungen zum Aufrufen von Clusterinformationen erteilen

So erteilen Sie die Berechtigungen, die erforderlich sind, um detaillierte Informationen zum Cluster in der Google Cloud -Konsole aufzurufen:

  1. Erstellen Sie eine ClusterRole-Ressource, mit der der Connect-Agent den Nutzer annehmen kann, der die Clusterinformationen in der Google Cloud Console aufrufen muss:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
     name: ROLE_NAME
    rules:
     apiGroups: [""]
     resources: ["users"]
     verbs: ["impersonate"]
     resourceNames: ["ACCOUNT_NAME"]
    

    Ersetzen Sie Folgendes:

    • ROLE_NAME: Der Name der Zielrolle.
    • ACCOUNT_NAME: der Name des Zielnutzerkontos.
  2. Erstellen Sie eine ClusterRoleBinding-Ressource, die das Dienstkonto des Connect Agent Service-Agents an die Rolle bindet, die Sie im vorherigen Schritt erstellt haben, und wenden Sie sie auf den Cluster an:

    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
    

    Ersetzen Sie Folgendes:

    • BINDING_NAME: Ein Name, der diese Rollenbindung eindeutig identifiziert.
    • ACCOUNT_NAME: der Name des Zielnutzerkontos für den Dienst.
    • ROLE_NAME: Der Name der Zielrolle.

Sie müssen für jeden betroffenen Nutzer ein separates Ressourcenpaar aus ClusterRole und ClusterRoleBinding erstellen.

Sie können auch das kubectl-Befehlszeilentool verwenden, um die Berechtigungen zu erteilen, die zum Aufrufen von Clusterinformationen erforderlich sind:

  1. Erstellen Sie eine ClusterRole-Ressource, mit der der Connect-Agent den Nutzer annehmen kann, der die Clusterinformationen in der Google Cloud Console aufrufen muss:

    kubectl create clusterrole "ROLE_NAME" --verb impersonate \
     --resource users --resource-name "ACCOUNT_NAME"
    

    Ersetzen Sie Folgendes:

    • ROLE_NAME: Der Name der Zielrolle.
    • ACCOUNT_NAME: der Name des Zielnutzerkontos für den Dienst.
  2. Erstellen Sie eine ClusterRoleBinding-Ressource, die das Dienstkonto des Connect Agent Service-Agents an die Rolle bindet, die Sie im vorherigen Schritt erstellt haben, und wenden Sie sie auf den Cluster an:

    kubectl create clusterrolebinding "BINDING_NAME" --clusterrole \
     "ROLE_NAME" --serviceaccount "ACCOUNT_NAME"
    

    Ersetzen Sie Folgendes:

    • BINDING_NAME: Ein Name, der diese Rollenbindung eindeutig identifiziert.
    • ACCOUNT_NAME: der Name des Zielnutzerkontos für den Dienst.
    • ROLE_NAME: Der Name der Zielrolle.

Über das Connect-Gateway auf Distributed Cloud-Cluster zugreifen

Sie haben die Möglichkeit, über das Connect Gateway auf Ihre Distributed Cloud-Cluster zuzugreifen. Ein Connect Gateway-Nutzer benötigt je nach seinen geschäftlichen Anforderungen eine oder mehrere der folgenden Rollen:

  • Connect Gateway-Administrator (roles/gkehub.gatewayAdmin): Gewährt Zugriff auf die Connect Gateway API. Dadurch kann das kubectl-Befehlszeilentool zum Verwalten des Clusters verwendet werden.
  • Gateway-Bearbeiter (roles/gkehub.gatewayEditor): Gewährt Lese- und Schreibzugriff auf den Cluster.
  • Connect Gateway-Leser (roles/gkehub.gatewayReader): Gewährt Lesezugriff auf den Cluster.
  • GKE-Hub-Betrachter (roles/gkehub.viewer): Ermöglicht das Abrufen von kubeconfig-Dateien aus dem Cluster.

Weitere Informationen zur Verwendung des Connect-Gateways finden Sie hier: