GCP-Zugriff mit Keycloak: Eine Schritt-für-Schritt-Anleitung

Einleitung

Die Integration eines externen Identity Providers ist ein essenzieller Schritt zur Verbesserung der Sicherheit und Effizienz moderner IT-Umgebungen. In diesem Beitrag erkläre ich dir, wie du Keycloak, ein leistungsstarkes Open-Source-Identity-Management-Tool, als Identity Provider in der Google Cloud Platform (GCP) einrichtest. Diese Integration nutzt die Workforce Identity Federation von Google, um Mitarbeitern sicheren Zugriff auf Cloud-Ressourcen zu gewähren.

Erfahre in dieser Anleitung Schritt für Schritt, wie du diese Konfiguration umsetzt und welche Best Practices du beachten solltest.


Hinweis: Abgrenzung zu Google Workspace SSO

Diese Anleitung behandelt nicht die Integration eines externen Identity Providers für Single Sign-On (SSO) in Google Workspace, wie sie für Anwendungen wie Gmail oder Google Drive genutzt werden kann. Stattdessen fokussieren wir uns auf die Workforce Identity Federation, die speziell auf den Zugriff auf Google Cloud Platform (GCP)-Ressourcen abzielt.


Voraussetzungen

Bevor du beginnst, stelle sicher, dass folgende Punkte erfüllt sind:

  • Verifizierte Domain: Eine Domain, die in der Google Admin-Konsole (admin.google.com) verifiziert wurde, wie folgender Screenshot zeigt:
Abbildung: Verifizierte Domains in GCP
  • Zugang zur GCP: Administrativer Zugang zur Google Cloud Console (https://console.cloud.google.com/).
  • Keycloak-Instanz: Eine konfigurierte Keycloak-Umgebung mit administrativen Zugriff

2. Schritte zur Integration von Keycloak in GCP

2.1 GCP: Organisation anlegen

Um eine Organisation in der GCP zu erstellen, muss eine verifizierte Domain vorhanden sein. Die Einrichtung erfolgt über die Cloud Console.

Abbildung: Einrichtung einer Organisation in der GCP-Konsole

2.2 GCP: Workforce Identity Pool einrichten

Ein Workforce Identity Pool dient als Container für externe Identity Provider. Gehe wie folgt vor:

  1. Öffne die IAM-Konsole in GCP
  2. Navigiere zu „Workforce Identity Pools“ und klicke auf „Erstellen“.
  3. Wähle einen eindeutigen Poolnamen, da dieser später in verschiedenen URIs verwendet wird.
Abbildung: Erstellung eines Workforce Identity Pools in der IAM-Konsole.

2.3 Keycloak als OIDC Pool Provider hinzufügen

Um Keycloak als Identity Provider zu registrieren:

  1. Wähle den zuvor erstellten Identity Pool aus.
  2. Füge einen neuen OIDC-Provider hinzu.
  3. Gib die Issuer URL aus dem OIDC Metadata File deines Keycloak-Realms ein.
  4. Lege die ClientID fest, die für die spätere Keycloak-Konfiguration benötigt wird

2.4 Attribute Mapping konfigurieren

Das Mapping von Attributen oder Rollen aus dem OIDC ID Token auf Attribute und Gruppen in GCP ist ein zentraler Schritt. Hierzu gehst du wie folgt vor:

  • Nutzeridentifikation: Nutze die E-Mail-Adresse aus dem ID Token als „subject“, um den Nutzer eindeutig in GCP zu identifizieren
  • Gruppenzuordnung: Konfiguriere das Multi-Value-Feld „roles“ aus dem ID Token, um Nutzergruppen in GCP zuzuordnen. Dadurch kannst du sicherstellen, dass die Rollen aus Keycloak in GCP korrekt interpretiert werden
Abbildung: Attribut- und Rollen-Mapping in der GCP-Konfiguration.

2.5 GCP-Gruppen erstellen und Rollen zuweisen

Erstelle Gruppen in GCP und ordne ihnen Rollen zu:

  1. Nutze den folgenden Befehl, um einer Gruppe die Rolle „Editor“ für ein Projekt zuzuweisen. Beachte, dass diese Einstellung nicht über die grafische Oberfläche der GCP-Konsole vorgenommen werden darf (z. B. über „Grant Access“ im Menüpunkt IAM), sondern explizit über die Befehlszeile erfolgen muss:
gcloud projects add-iam-policy-binding <PROJECT_ID> 
  --role="roles/editor" 
  --member="principalSet://iam.googleapis.com/locations/global/workforcePools/<POOL_ID>/group/<GROUP_NAME>"

2. Prüfe die aktuellen Bindings mit:

gcloud projects get-iam-policy <PROJECT_ID>
bindings:
- members:
 - principalSet://iam.googleapis.com/locations/global/workforcePools/keycloak02/group/<GROUP_NAME>
   role: roles/editor

2.6 Keycloak: GCP als Client hinzufügen

Füge GCP als neuen Client in Keycloak hinzu:

  • Navigiere in Keycloak zu „Clients“ und klicke auf „Erstellen“
  • Fülle die Client-Einstellungen aus, wie in den Screenshots unten gezeigt. Als ClientID trägst du den Wert ein, den du in Schritt 2.3 als OIDC Pool Provider angegeben hast
Abbildung: Hinzufügen eines neuen Clients in Keycloak – Client ID
Abbildung: Hinzufügen eines neuen Clients in Keycloak – Client Authentication und Flow
  • Setze folgende Redirect URI:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
Abbildung: Hinzufügen eines neuen Clients in Keycloak – Redirect URI
  • Generiere ein neues Client Secret und hinterlege dieses in der GCP OIDC Pool Provider Konfiguration, die du in Schritt 2.3 erstellt hast
Abbildung: Hinzufügen eines neuen Clients in Keycloak – Client Secret

2.7 Client Scope und Rollen konfigurieren

Es gibt verschiedene Möglichkeiten das ID Token mit den Nutzerrollen anzureichern. In unserem Fall entscheiden wir uns ein dedizierten Scope für den GCP Client zu erstellen, der standardgemäß aktiviert ist (der Client muss den Scope nicht anfragen) und der die Rollenzugehörigkeit im ID Token im Attribut roles kodiert.

  • Zunächst navigieren wir zu den Client Scopes und öffnen dort den“dedicated“-Scope:
  • Dort fügen wir einen Mapper vom Typ „User Client Role“ hinzu:
  • Konfiguriere Rollen unter dem Tab „Roles“ im GCP-Client und achte darauf, dass diese den GCP-Gruppen entsprechen

3. Demo: Testbenutzer und Anmeldung

3.1 Testbenutzer anlegen

  • Erstelle in Keycloak einen Testbenutzer mit E-Mail-Adresse
  • Weise ihm die entsprechende Client-Rolle zu (z. B. „grpdevops01“)
Abbildung: Zuweisung einer GCP-Rolle an einen Nutzer in Keycloak

3.2 Anmeldung an der GCP

  • Der Benutzer meldet sich über eine der folgenden URLs an:
Option 1:
https://auth.cloud.google/signin?continueUrl=https://console.cloud.google/

Bei dieser Option muss der Nutzer anschließend den Provider in die Eingabemaske von Google eintragen:

WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID

locations/global/workforcePools/<POOL_ID>/providers/<PROVIDER_ID>
Option 2:

Der Provider kann aber auch der URL mitgegeben werden – somit entfällt die manuelle Eingabe über eine Maske:

https://auth.cloud.google/signin/locations/global/workforcePools/<POOL_ID>/providers/<PROVIDER_ID>?continueUrl=https://console.cloud.google/
  • Nach der Weiterleitung zu Keycloak und erfolgreicher Authentifizierung wird der Nutzer zur GCP Console geleitet
  • Prüfe, ob der Nutzer Zugriff auf die zugewiesenen Projekte hat

Abbildung: Anmeldung an der GCP mit Keycloak-Integration

Fazit

Die Integration von Keycloak als Identity Provider in GCP verbessert die Sicherheit und vereinfacht das Identitätsmanagement. Mit der Workforce Identity Federation von Google lassen sich Zugriffsrechte granular steuern und externe Nutzer nahtlos einbinden. Nutze diese Anleitung, um deine Cloud-Umgebung optimal zu konfigurieren

Für weitere Informationen besuche die offizielle GCP-Dokumentation.

Nach oben scrollen