GKE-Anwendungen und -Ressourcen mit IAP sichern.

Auf dieser Seite wird erläutert, wie eine Google Kubernetes Engine-Instanz (GKE) mit Identity-Aware Proxy (IAP) geschützt wird.

Informationen zum Sichern von Ressourcen, die sich nicht in Google Cloudbefinden, finden Sie unter Lokale Anwendungen und Ressourcen sichern.

Übersicht

IAP wird über Ingress für GKE eingebunden. Mit dieser Integration können Sie den Zugriff auf Ressourcenebene für Mitarbeiter steuern, anstatt ein VPN zu verwenden.

In einem GKE-Cluster wird eingehender Traffic vom HTTP(S)-Load-Balancing verarbeitet, einer Komponente von Cloud Load Balancing. Der HTTP(S)-Load-Balancer wird in der Regel vom Kubernetes-Ingress-Controller konfiguriert. Der Ingress-Controller ruft Konfigurationsinformationen von einem Kubernetes-Ingress-Objekt ab, das mit einem oder mehreren Service-Objekten verknüpft ist. Jedes Serviceobjekt enthält Routinginformationen, mit denen eingehende Anfragen an einen bestimmten Pod und Port weitergeleitet werden können.

Ab Kubernetes Version 1.10.5-gke.3 können Sie eine Konfiguration für den Load-Balancer hinzufügen. Ordnen Sie dazu einem BackendConfig-Objekt einen Dienst zu. BackendConfig ist eine benutzerdefinierte Ressourcendefinition, die im Repository kubernetes/ingress-gce definiert ist.

Der Kubernetes-Ingress-Controller liest Konfigurationsinformationen aus der BackendConfig und richtet den Load Balancer entsprechend ein. Eine BackendConfig enthält Konfigurationsinformationen, die für Cloud Load Balancing spezifisch sind, und ermöglicht es Ihnen, für jeden HTTP(S)-Load-Balancing-Backend-Dienst eine separate Konfiguration zu definieren.

Hinweis

Zum Aktivieren von IAP für GKE benötigen Sie Folgendes:

  • Ein Google Cloud Console-Projekt mit aktivierter Abrechnung.
  • Eine Gruppe mit einer oder mehreren GKE-Instanzen, die von einem HTTPS-Load-Balancer bereitgestellt werden. Der Load Balancer sollte automatisch erstellt werden, wenn Sie in einem GKE-Cluster ein Ingress-Objekt anlegen.
  • Einen Domainnamen, der für die Adresse des Load-Balancers registriert ist.
  • Anwendungscode, der überprüft, ob alle Anfragen eine Identität haben.
IAP verwendet einen von Google verwalteten OAuth-Client, um Nutzer zu authentifizieren. Nur Nutzer innerhalb der Organisation können auf die IAP-fähige Anwendung zugreifen. Wenn Sie Nutzern außerhalb Ihrer Organisation Zugriff gewähren möchten, lesen Sie den Hilfeartikel IAP für externe Anwendungen aktivieren.

IAP aktivieren

Wenn Sie den OAuth-Zustimmungsbildschirm Ihres Projekts nicht konfiguriert haben, werden Sie dazu aufgefordert. Informationen zum Konfigurieren des OAuth-Zustimmungsbildschirms finden Sie unter OAuth-Zustimmungsbildschirm einrichten.

Wenn Sie GKE-Version 1.24 oder höher verwenden, können Sie IAP und GKE mithilfe der Kubernetes Gateway API konfigurieren. Führen Sie dazu die folgenden Schritte aus und folgen Sie dann der Anleitung unter IAP konfigurieren. Konfigurieren Sie BackendConfig nicht.

IAP-Zugriff einrichten

  1. Rufen Sie die Seite Identity-Aware Proxy auf.
    Zur Seite "Identity-Aware Proxy"
  2. Wählen Sie das Projekt aus, das Sie mit IAP sichern möchten.
  3. Klicken Sie das Kästchen neben der Ressource an, für die Sie Zugriff gewähren möchten.

    Wenn Sie keine Ressource sehen, prüfen Sie, ob die Ressource erstellt wurde und ob die BackendConfig und der Compute Engine-Ingress-Controller synchronisiert sind.

    Führen Sie den folgenden gcloud-Befehl aus, um zu prüfen, ob der Backend-Dienst verfügbar ist:

    gcloud compute backend-services list
  4. Klicken Sie auf der rechten Seite auf Hauptkonto hinzufügen.
  5. Fügen Sie im angezeigten Dialogfeld Hauptkonten hinzufügen die E-Mail-Adressen von Nutzergruppen oder einzelnen Nutzern hinzu, denen Sie für das Projekt die Rolle Nutzer von IAP-gesicherten Web-Apps zuweisen möchten.

    Folgende Arten von Hauptkonten können diese Rolle haben:

    • Google-Konto: nutzer@gmail.com
    • Google Group: admins@googlegroups.com
    • Dienstkonto: server@example.gserviceaccount.com
    • Google Workspace-Domain: beispiel.de

    Fügen Sie unbedingt ein Google-Konto hinzu, auf das Sie zugreifen können.

  6. Wählen Sie in der Drop-down-Liste Rollen den Eintrag Cloud IAP > Nutzer von IAP-gesicherten Web-Apps aus.
  7. Klicken Sie auf Speichern.

BackendConfig konfigurieren

Sie können eine BackendConfig für IAP konfigurieren, indem Sie einen iap-Block hinzufügen.

Einen iap-Block zu BackendConfig hinzufügen

Zum Konfigurieren der BackendConfig für IAP müssen Sie den Wert enabled angeben. Sie benötigen die Berechtigung compute.backendServices.update. Fügen Sie den Block iap zu BackendConfig hinzu.

Verwenden Sie für GKE-Versionen ab 1.16.8-gke.3 die API-Version cloud.google.com/v1. Wenn Sie eine frühere GKE-Version verwenden, verwenden Sie cloud.google.com/v1beta1.

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: CONFIG_DEFAULT
  namespace: my-namespace
spec:
  iap:
    enabled: true

Dienstport mit einer BackendConfig verknüpfen

Zum Aktivieren von IAP müssen Sie noch Dienstports mit Ihrer BackendConfig verknüpfen. Sie können diese Verknüpfung dadurch herstellen, dass Sie Ihre BackendConfig als Standardeinstellung für alle Ports angeben. Fügen Sie Ihrer Dienstressource hierfür folgende Annotation hinzu:

metadata:
  annotations:
    cloud.google.com/backend-config: '{"default": "CONFIG_DEFAULT"}'

BackendConfig prüfen

Führen Sie kubectl get event aus, um die Konfiguration zu testen. Wird die Meldung "no BackendConfig for service port exists" angezeigt, haben Sie den Dienstport erfolgreich mit Ihrer BackendConfig verknüpft, die BackendConfig-Ressource wurde jedoch nicht gefunden. Dieser Fehler kann auftreten, wenn Sie die BackendConfig-Ressource gar nicht oder im falschen Namespace erstellt haben oder den Verweis in der Dienstannotation falsch geschrieben haben.

IAP deaktivieren

Zum Deaktivieren von IAP müssen Sie für enabled in BackendConfig den Wert false festlegen. Wenn Sie den IAP-Block aus BackendConfig löschen, bleiben die Einstellungen erhalten. Wenn beispielsweise IAP aktiviert ist und Sie den Block löschen, bleibt IAP aktiviert.

Nächste Schritte