Auf dieser Seite wird erläutert, wie eine Google Kubernetes Engine-Instanz (GKE) mit Identity-Aware Proxy (IAP) geschützt wird.
Übersicht
IAP wird über Ingress für GKE eingebunden. Damit können Sie den Zugriff für Mitarbeiter auf Ressourcenebene steuern, anstatt ein VPN zu verwenden.
In einem GKE-Cluster wird eingehender Traffic von HTTP(S)-Load-Balancing verarbeitet, einer Komponente von Cloud Load Balancing. Der HTTP(S)-Load-Balancer wird normalerweise vom Kubernetes Ingress-Controller konfiguriert. Der Ingress-Controller ruft Konfigurationsinformationen von einem Kubernetes-Ingress-Objekt ab, das einem oder mehreren Dienstobjekten zugeordnet 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 festgelegt wird.
Der Kubernetes Ingress-Controller liest die Konfigurationsinformationen aus BackendConfig und richtet den Load-Balancer entsprechend ein. BackendConfig enthält für Cloud Load Balancing spezifische Konfigurationsinformationen, mit denen Sie eine separate Konfiguration für jeden Back-End-Dienst des HTTP(S)-Load-Balancing definieren können.
Vorbereitung
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 erstellen.
- Weitere Informationen dazu finden Sie unter HTTPS-Load-Balancing mit Ingress einrichten.
- Einen Domainnamen, der für die Adresse des Load-Balancers registriert ist.
- Anwendungscode, der überprüft, ob alle Anfragen eine Identität haben.
- Weitere Informationen dazu finden Sie unter Identität des Nutzers abrufen.
IAP verwendet einen von Google verwalteten OAuth-Client, um Nutzer zu authentifizieren. Nur Nutzer innerhalb der Organisation können auf die IAP-kompatible App 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 noch nicht konfiguriert haben, werden Sie dazu aufgefordert. Eine Anleitung dazu finden Sie unter OAuth-Zustimmungsbildschirm einrichten.
Wenn Sie GKE-Cluster der Version 1.24 oder höher verwenden, können Sie IAP und GKE mit 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
-
Rufen Sie die Seite Identity-Aware Proxy auf.
Zur Seite "Identity-Aware Proxy" - Wählen Sie das Projekt aus, das Sie mit IAP sichern möchten.
-
Klicken Sie das Kästchen neben der Ressource an, für die Sie Zugriff gewähren möchten.
Wenn keine Ressource angezeigt wird, prüfen Sie, ob die Ressource erstellt wurde und der BackendConfig-Compute Engine-Ingress-Controller synchronisiert ist.
Führen Sie den folgenden gcloud-Befehl aus, um zu prüfen, ob der Backend-Dienst verfügbar ist:
gcloud compute backend-services list
- Klicken Sie im rechten Bereich auf Hauptkonto hinzufügen.
-
Fügen Sie im daraufhin 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 Hauptkonten können diese Rolle haben:
- Google-Konto: [email protected]
- Google Group: [email protected]
- Dienstkonto: [email protected]
- Google Workspace-Domain: beispiel.de
Fügen Sie unbedingt ein Google-Konto hinzu, auf das Sie zugreifen können.
- Wählen Sie in der Drop-down-Liste Rollen den Eintrag Cloud IAP > Nutzer von IAP-gesicherten Web-Apps aus.
- 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 von BackendConfig für IAP müssen Sie den Wert enabled
angeben. Achten Sie darauf, dass Sie die Berechtigung compute.backendServices.update
haben, und fügen Sie BackendConfig den iap
-Block hinzu.
Verwenden Sie für die GKE-Versionen 1.16.8-gke.3 und höher die API-Version cloud.google.com/v1
.
Wenn Sie eine ältere 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 einem BackendConfig-Objekt zuordnen
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: beta.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. Beispiel: Wenn IAP aktiviert ist und Sie den Block löschen, bleibt IAP aktiviert.