Connect-Gateway mit Google Groups einrichten

Dieser Leitfaden richtet sich an Plattformadministratoren, die das Connect-Gateway einrichten müssen, damit Nutzerkonten ihres Projekts Google Groups zur Autorisierung verwenden können. Machen Sie sich vor dem Lesen dieser Seite mit den Konzepten in unserer Übersicht vertraut. Informationen zum Autorisieren einzelner Konten finden Sie unter der Standardeinrichtung.

Bei dieser Konfiguration können sich Nutzer mit der Google Cloud CLI, dem Connect-Gateway und der Google Cloud Console in konfigurierten Flottenclustern anmelden.

Hierbei wird die Google Groups-Funktion verwendet, die mit Google Workspace oder einer beliebigen Version von Cloud Identity verknüpft ist.

Unterstützte Clustertypen

Sie können die Zugriffssteuerung mit Google Groups über das Connect-Gateway für die folgenden Clustertypen einrichten:

Wenn Sie diese Funktion in Umgebungen verwenden möchten, die nicht in der vorherigen Liste enthalten sind, wenden Sie sich an Cloud Customer Care oder das Connect-Gateway-Team.

Funktionsweise

Wie in der Übersicht beschrieben, ist es oft nützlich, Nutzern Zugriff auf Cluster basierend auf ihrer Mitgliedschaft in Google Groups zu gewähren, d. h. Gruppen, die in Google Workspace erstellt wurden. Bei einer Autorisierung, die auf der Gruppenmitgliedschaft basiert, müssen Sie nicht für jedes Konto eine separate Autorisierung einrichten. Dies erleichtert die Verwaltung und Überprüfung von Richtlinien. So können Sie beispielsweise ganz einfach den Clusterzugriff für ein Team freigeben. Es ist nicht mehr erforderlich, einzelne Nutzer manuell zu Clustern hinzuzufügen oder daraus zu entfernen, wenn diese dem Team beitreten oder es verlassen möchten. Sie können das Connect-Gateway so konfigurieren, dass die Google Groups-Mitgliedschaftsinformationen für jeden Nutzer abgerufen werden, der sich im Cluster anmeldet. Diese Informationen können Sie dann in Ihren Richtlinien für die Zugriffssteuerung verwenden.

Im Folgenden wird der typische Ablauf für einen Nutzer dargestellt, der sich bei einem Cluster authentifiziert und Befehle für den Cluster ausführt, wobei dieser Dienst aktiviert ist. Damit dieser Ablauf erfolgreich ist, muss im Cluster eine RBAC-Richtlinie für eine Gruppe vorhanden sein, die:

  1. den Nutzer alice@example.com als Mitglied enthält.

  2. eine verschachtelte Gruppe von gke-security-groups@example.com ist.

Diagramm zum Ablauf im Google Groups-Gateway

  1. Der Nutzer alice@example.com meldet sich mit seiner Google-Identität an und erhält, wenn er den Cluster über die Befehlszeile verwenden möchte, die Gateway kubeconfig des Clusters, wie unter Connect-Gateway verwenden beschrieben.
  2. Der Nutzer sendet eine Anfrage, indem er einen kubectl Befehl ausführt oder die Google Kubernetes Engine Arbeitslasten oder Objektbrowser Seiten in der Google Cloud Console öffnet.
  3. Die Anfrage wird vom Connect-Dienst empfangen, der eine Autorisierungsprüfung mit IAM durchführt.
  4. Der Connect-Dienst leitet die Anfrage an den auf dem Cluster ausgeführten Connect Agent weiter. Die Anfrage wird zusammen mit den Anmeldedaten des Nutzers zur Authentifizierung und Autorisierung im Cluster bereitgestellt.
  5. Der Connect Agent leitet die Anfrage an den Kubernetes API-Server weiter.
  6. Der Kubernetes API-Server leitet die Anfrage an den anthos-identity-service-Pod im Cluster weiter, der die Anfrage validiert.
  7. Der anthos-identity-service-Pod gibt die Nutzer- und Gruppeninformationen an den Kubernetes API-Server zurück. Der Kubernetes API-Server kann diese Informationen dann dazu verwenden, die Anfrage basierend auf den konfigurierten RBAC-Richtlinien des Clusters zu autorisieren.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Konto haben, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Google CloudNeukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Prüfen Sie, ob Sie die Berechtigungen haben, die für diese Anleitung erforderlich sind.

  6. Aktivieren Sie die Connect Gateway-, GKE Connect-, GKE Hub-, Anthos Identity Service- und Cloud Resource Manager APIs:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen.

    gcloud services enable connectgateway.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com
  7. Installieren Sie die Google Cloud CLI.

  8. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  9. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  10. Prüfen Sie, ob Sie die Berechtigungen haben, die für diese Anleitung erforderlich sind.

  11. Aktivieren Sie die Connect Gateway-, GKE Connect-, GKE Hub-, Anthos Identity Service- und Cloud Resource Manager APIs:

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Weitere Informationen zum Zuweisen von Rollen.

    gcloud services enable connectgateway.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com anthosidentityservice.googleapis.com cloudresourcemanager.googleapis.com
  12. Bei Clustern außerhalb von Google Cloud, müssen die Authentifizierungskomponenten in Ihrem Cluster die Cloud Identity API aufrufen. Prüfen Sie, ob Sie Netzwerkrichtlinien haben, die erfordern, dass ausgehender Traffic von Ihrem Cluster über einen Proxy geleitet wird.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die Editor (roles/editor) IAM-Rolle für das Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Konfigurieren des Connect-Gateways und Ihrer Cluster benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Nutzer und Gruppen einrichten

Die Gruppen, die Sie mit dieser Funktion verwenden möchten, müssen so eingerichtet sein:

  1. Im Google Workspace Ihrer Organisation muss eine Gruppe mit dem Format gke-security-groups@YOUR-DOMAIN vorhanden sein. Wenn Sie keine solche Gruppe haben, folgen Sie der Anleitung unter Gruppe in Ihrer Organisation erstellen, um die Gruppe mit der Google Admin-Konsole zu erstellen.
  2. Folgen Sie der Anleitung unter Einer Gruppe eine andere Gruppe, um die Gruppen, die Sie für die Zugriffssteuerung verwenden möchten, als verschachtelte Gruppen von gke-security-groups hinzuzufügen. Fügen Sie keine einzelnen Nutzer als Mitglieder von gke-security-groups hinzu.

Nutzerkonten, die Sie mit dieser Funktion verwenden möchten, sollten denselben Domainnamen wie die zugehörigen Gruppen haben.

Unterstützung für Gruppen konfigurieren

Das Connect-Gateway verwendet Authentifizierungskomponenten in Ihrem Cluster, um Informationen zur Gruppenmitgliedschaft abzurufen. Informationen zum Aktivieren der erforderlichen Komponenten finden Sie in einem der folgenden Dokumente, je nach Clustertyp:

In den folgenden Abschnitten wird beschrieben, wie Sie die benutzerdefinierte Ressource ClientConfig aktualisieren, um die Gruppenunterstützung zu aktivieren. Diese Abschnitte gelten nur für Google Distributed Cloud-Cluster. Für andere Clustertypen wie GKE on Google CloudGKE on AWS und GKE on Azure fahren Sie mit dem Abschnitt IAM-Rollen für Gruppen zuweisen fort.

Für Distributed Cloud können Sie die Unterstützung für Gruppen für einzelne Cluster oder für eine Flotte konfigurieren. Der verwendete Clustertyp bestimmt, wie Sie die Gruppenunterstützung konfigurieren:

  • Distributed Cloud Connected: nur einzelne Cluster. Die Konfiguration auf Flottenebene wird nicht unterstützt.
  • Google Distributed Cloud (nur Software) auf VMware und Bare Metal: einzelne Cluster oder Flotten.

Gruppenunterstützung mit der GKE Fleet API konfigurieren

Für Google Distributed Cloud (nur Software) auf VMware und Bare Metal können Sie die Gruppenunterstützung auf Flottenebene konfigurieren. Wenn Sie die Authentifizierung auf Flottenebene bereits konfiguriert haben, z. B. für einen anderen Identitätsanbieter, ist die Gruppenauthentifizierung bereits aktiviert. Wenn Ihre Netzwerkrichtlinie jedoch erfordert, dass ausgehender Traffic über einen Proxy geleitet wird, müssen Sie die vorhandene Konfiguration mit Informationen zu diesem Proxy aktualisieren.

Wählen Sie eine der folgenden Optionen aus, um die Gruppenunterstützung auf Flottenebene zu konfigurieren:

Console

  1. Rufen Sie in der Google Cloud Console die Seite GKE Identity Service auf.

    Zu GKE Identity Service

  2. Klicken Sie auf Identity Service aktivieren.

  3. Wählen Sie die Google Distributed Cloud-Cluster (nur Software) auf VMware und Bare Metal aus, die Sie konfigurieren möchten.

  4. Klicken Sie auf Konfiguration aktualisieren. Der Bereich Clusterkonfiguration für Identity Service bearbeiten wird geöffnet.

  5. Im Abschnitt Identitätsanbieter konfigurieren können Sie einen Identitätsanbieter beibehalten, hinzufügen, aktualisieren oder entfernen.

  6. Klicken Sie auf Weiter , um mit dem nächsten Konfigurationsschritt fortzufahren. Wenn Sie mindestens einen geeigneten Cluster für diese Einrichtung ausgewählt haben, wird der Bereich Google-Authentifizierung angezeigt.

  7. Wählen Sie Aktivieren aus, um die Google-Authentifizierung für die ausgewählten Cluster zu aktivieren. Wenn Sie über einen Proxy auf den Google-Identitätsanbieter zugreifen müssen, geben Sie die Proxy -Details ein.

  8. Klicken Sie auf Konfiguration aktualisieren. Dadurch wird die Identitätskonfiguration auf die ausgewählten Cluster angewendet.

gcloud

  1. Aktivieren Sie die Funktion für den Identitätsdienst auf Flottenebene und konfigurieren Sie die Cluster, wie unter Authentifizierungsverwaltung auf Flottenebene einrichtenbeschrieben.
  2. Fügen Sie der Datei auth-config.yaml, die Ihre ClientConfig-Spezifikation enthält, das folgende Feld hinzu:

    spec:
      authentication:
      - name: google-authentication-method
        google:
          disable: false
    

    Der Wert false im Feld google.disable aktiviert die Gruppenunterstützung. Wenn Sie die Gruppenunterstützung deaktivieren möchten, ändern Sie diesen Wert in true.

  3. Optional: Wenn Sie über einen Proxy auf den Google-Identitätsanbieter zugreifen müssen, fügen Sie der vorherigen Konfiguration das Feld proxy hinzu:

    spec:
      authentication:
      - name: google-authentication-method
        google:
          disable: false
        proxy: PROXY_URL
    

    Ersetzen Sie PROXY_URL durch die Proxyserveradresse, um eine Verbindung zur Google-Identität herzustellen. Beispiel: http://user:password@10.10.10.10:8888

  4. Wenden Sie die Konfiguration auf einen Cluster in Ihrer Flotte an:

    gcloud container fleet identity-service apply \
    --membership=CLUSTER_NAME \
    --config=/path/to/auth-config.yaml

    Ersetzen Sie CLUSTER_NAME durch den eindeutigen Mitgliedschaftsnamen Ihres Clusters innerhalb der Flotte.

Nachdem Sie die Gruppenunterstützung auf Flottenebene eingerichtet haben, verwaltet der Flottencontroller die Konfiguration. Die Konfiguration auf Flottenebene überschreibt alle lokalen Änderungen, die Sie an der Konfiguration in einem bestimmten Cluster vornehmen.

Gruppenunterstützung für einzelne Cluster konfigurieren

Aktivieren Sie für alle Distributed Cloud-Cluster, einschließlich Distributed Cloud Connected, die Gruppenunterstützung, indem Sie die default-ClientConfig in jedem Cluster aktualisieren:

  1. Rufen Sie die Mitgliedschaftsdetails Ihres Clusters ab:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get memberships membership -o yaml
    

    Ersetzen Sie USER_CLUSTER_KUBECONFIG durch den Pfad der kubeconfig-Datei für den Cluster. Wenn die kubeconfig mehrere Kontexte enthält, wird der aktuelle Kontext verwendet. Möglicherweise müssen Sie den aktuellen Kontext auf den richtigen Cluster zurücksetzen, bevor Sie den Befehl ausführen.

    In der Antwort finden Sie im Feld spec.owner.id die Mitgliedschaftsdetails des Clusters. Die Mitgliedschafts-ID hat das Format //gkehub.googleapis.com/projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP.

    Die Ausgabe sieht etwa so aus:

    id: //gkehub.googleapis.com/projects/123456789/locations/global/memberships/xy-ab12cd34ef
    
  2. Öffnen Sie die default-ClientConfig in Ihrem Cluster zur Bearbeitung:

    kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default
    
  3. Fügen Sie das Feld google dem Feld spec.authentication hinzu, um die Gruppenunterstützung zu aktivieren:

    spec:
      internalServer: https://kubernetes.default.svc
      authentication:
      - google:
          audiences:
          - "CLUSTER_IDENTIFIER"
        name: google-authentication-method
    

    Ersetzen Sie CLUSTER_IDENTIFIER durch die Mitgliedschaftsdetails Ihres Clusters.

    Prüfen Sie, ob das Feld internalServer den Wert https://kubernetes.default.svc hat.

  4. Optional: Wenn Sie über einen Proxy auf den Google-Identitätsanbieter zugreifen müssen, fügen Sie der vorherigen Konfiguration das Feld proxy hinzu:

    spec:
      internalServer: https://kubernetes.default.svc
      authentication:
      - google:
          audiences:
          - "CLUSTER_IDENTIFIER"
        name: google-authentication-method
        proxy: PROXY_URL
    

    Ersetzen Sie PROXY_URL durch die Proxyserveradresse, um eine Verbindung zur Google-Identität herzustellen. Beispiel: http://user:password@10.10.10.10:8888

IAM-Rollen für Google Groups zuweisen

Gruppen benötigen die folgenden zusätzlichen Google Cloud Rollen, um über das Gateway mit verbundenen Clustern zu interagieren:

  • roles/gkehub.gatewayAdmin: Mit dieser Rolle können Gruppenmitglieder auf die Connect Gateway API zugreifen.
    • Wenn Gruppenmitglieder nur Lesezugriff auf verbundenen Clustern benötigen, kann stattdessen roles/gkehub.gatewayReader verwendet werden.
    • Wenn Gruppenmitglieder Lese-/Schreibzugriff auf verbundenen Clustern benötigen, kann stattdessen roles/gkehub.gatewayEditor verwendet werden.
  • roles/gkehub.viewer: Mit dieser Rolle können Gruppenmitglieder registrierte Clustermitgliedschaften ansehen.

Sie weisen diese Rollen mit dem Befehl gcloud projects add-iam-policy-binding so zu:

gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=GATEWAY_ROLE PROJECT_ID
gcloud projects add-iam-policy-binding --member=group:GROUP_NAME@DOMAIN --role=roles/gkehub.viewer PROJECT_ID

Dabei gilt:

  • GROUP_NAME ist die Google-Gruppe, der Sie die Rolle zuweisen möchten.
  • DOMAIN ist Ihre Google Workspace-Domain.
  • GROUP_NAME@DOMAIN ist eine verschachtelte Gruppe unter gke-security-groups@DOMAIN
  • GATEWAY_ROLE ist wahlweise roles/gkehub.gatewayAdmin, roles/gkehub.gatewayReader oder gkehub.gatewayEditor.
  • PROJECT_ID ist Ihr Projekt.

Weitere Informationen zum Erteilen von IAM-Berechtigungen und -Rollen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Richtlinien für die rollenbasierte Zugriffssteuerung (RBAC) konfigurieren

Schließlich muss der Kubernetes API-Server jedes Clusters in der Lage sein, kubectl-Befehle zu autorisieren, die über das Gateway Ihrer angegebenen Gruppen eingehen. Für jeden Cluster müssen Sie eine RBAC-Berechtigungsrichtlinie hinzufügen, die angibt, welche Berechtigungen die Gruppe für den Cluster hat.

Im folgenden Beispiel wird gezeigt, wie Sie den Mitgliedern der Gruppe cluster-admin-team die Berechtigungen cluster-admin für den Cluster erteilen, die Richtliniendatei unter /tmp/admin-permission.yaml speichern und auf den Cluster anwenden, der dem aktuellen Kontext zugeordnet ist. Achten Sie darauf, auch die Gruppe cluster-admin-team in die Gruppe gke-security-groups aufzunehmen.

cat <<EOF > /tmp/admin-permission.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: gateway-cluster-admin-group
subjects:
- kind: Group
  name: cluster-admin-team@example.com
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
EOF
# Apply permission policy to the cluster.
kubectl apply --kubeconfig=KUBECONFIG_PATH -f /tmp/admin-permission.yaml

Weitere Informationen zum Angeben von RBAC-Berechtigungen finden Sie unter RBAC-Autorisierung verwenden.

Nächste Schritte

  • Erfahren Sie, wie Sie das Connect-Gateway verwenden, um über die Befehlszeile eine Verbindung zu Clustern herzustellen.
  • Ein Beispiel für die Verwendung des Connect-Gateways als Teil Ihrer DevOps-Automatisierung finden Sie in unserer Anleitung In Cloud Build einbinden.