Auf dieser Seite erfahren Sie, wie Sie Identity-Aware Proxy (IAP) für die Verwendung der Workforce Identity-Föderation konfigurieren.
Wenn Sie die Workforce Identity-Föderation mit IAP konfigurieren, können Sie einen externen Identitätsanbieter (IdP) verwenden, um eine Gruppe von Nutzern, z. B. Mitarbeiter, Partner und Auftragnehmer, mithilfe von Identity and Access Management (IAM) zu authentifizieren und zu autorisieren, damit die Nutzer sicher auf Dienste zugreifen können, die inGoogle Cloud oder lokalbereitgestellt werden.
Wenn Sie IAP mit der Workforce Identity-Föderation konfigurieren, können Sie für Ihre mit IAP gesicherten Anwendungen Folgendes tun:
- Endnutzer zur Anmeldung an einen externen IdP wie Okta weiterleiten.
- Konfigurieren Sie eine Anmeldesitzung zwischen 15 Minuten und 12 Stunden.
- Nur bestimmten Endnutzern oder Endnutzergruppen in einem IdP den Zugriff auf Ihre Anwendung erlauben.
- Geben Sie den Kontext an, in dem ein Endnutzer auf eine Anwendung zugreifen kann. Beispielsweise können Sie den Zugriff nur zu einer bestimmten Tageszeit zulassen.
IAP mit Workforce Identity-Föderation für eine Anwendung konfigurieren
Die Konfiguration von IAP mit der Workforce Identity-Föderation umfasst die folgenden Hauptaufgaben:
- Personalpool und Anbieter einrichten
- Erstellen Sie eine OAuth-Client-ID und einen Clientschlüssel.
- Aktivieren Sie IAP und konfigurieren Sie es für die Verwendung der Workforce Identity-Föderation.
Personalpool und Anbieter einrichten
Folgen Sie der Anleitung für einen der folgenden Anbieter, um einen Personalpool und einen Anbieter einzurichten:
Informationen zum Festlegen der Sitzungsdauer finden Sie unter IAP mit Workforce Identity-Föderationssitzungen verwalten.
Wenn Sie eine E-Mail-Adresse von einem Drittanbieter-IdP zu Google Cloudzuordnen möchten, müssen Sie in Ihrem Personalpoolanbieter eine Attributzuordnung für google.email hinzufügen.
Beispiel: google.email=assertion.email.
OAuth-Client-ID und -Secret erstellen
Wichtig: Die OAuth-Client-ID und der Clientschlüssel, die Sie in den folgenden Schritten erstellen, werden für die Workforce Identity-Föderation-Infrastruktur erstellt. Diese unterscheiden sich von der Client-ID und dem Clientschlüssel, die erforderlich sind, wenn Sie die benutzerdefinierte OAuth-Konfiguration verwenden, um IAP mit Google-Identitäten zu aktivieren.Folgen Sie der Anleitung zum Erstellen einer OAuth-Client-ID und eines Secrets in einem Projekt in derselben Organisation wie der Personalpool, den Sie für diese Konfiguration verwenden. Das Projekt muss nicht dasselbe Projekt sein, in dem sich die IAP-gesicherte Ressource befindet. Gehen Sie beim Erstellen der OAuth-Client-ID und des Secrets so vor:
Verwenden Sie beim Erstellen der Client-ID einen Platzhalter für den Weiterleitungs-URI. Nachdem Sie die Client-ID erstellt haben, führen Sie
describefür einen OAuth-Client aus, um die generierteclientIDabzurufen.Wenn Sie die
clientIDhaben, führen Sieupdateeinen OAuth-Client aus, umallowed-redirect-urisauf Folgendes zu aktualisieren:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect.Dabei ist
CLIENT_IDdie im vorherigen Schritt abgerufeneclientID.Nachdem Sie den Clientschlüssel erstellt haben, führen Sie
describeOAuth-Client-Anmeldedaten aus, um die generierteclientSecretabzurufen.
Speichern Sie die
clientIdund dieclientSecret, da Sie sie in späteren Schritten benötigen.
IAP für die Verwendung der Mitarbeiteridentitätsföderation aktivieren
Führen Sie die folgenden Schritte aus, um IAP mit Workforce Identity-Föderation zu aktivieren.
IAP aktivieren
Aktivieren Sie IAP für die Ressource.
Console
- Öffnen Sie in der Google Cloud Console die IAP-Seite.
Zur Seite „IAP“ - Wählen Sie ein Projekt aus. Das Projekt muss sich in derselben Organisation wie der zuvor erstellte Mitarbeiterpool befinden. Das Projekt muss nicht das Projekt sein, in dem Sie die OAuth-Client-ID und das Secret erstellt haben.
- Klicken Sie auf den Tab Anwendungen und suchen Sie die Anwendung, für die Sie den Zugriff mithilfe von IAP einschränken möchten.
- Stellen Sie den Schieberegler in der Spalte "IAP" auf Ein.
gcloud
Wenn Sie IAP mit der gcloud CLI aktivieren möchten, folgen Sie der Anleitung für den entsprechenden Dienst:
API
Erstellen Sie eine
settings.json-Datei.cat << EOF > settings.json { "iap": { "enabled":true, } } EOFIAP in App Engine aktivieren.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @settings.json \ "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap.enabled"Verwenden Sie die folgende URL, um IAP in Compute Engine zu aktivieren:
https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME?updateMask=iap.enabled.
IAP-Einstellungen aktualisieren
Wenn Sie IAP für die Verwendung der Workforce Identity-Föderation konfigurieren möchten, müssen Sie die folgenden Einstellungen konfigurieren:
WorkforceIdentitySettings: Die zuvor erstellte OAuth-Client-ID und der Clientschlüssel.IdentitySources: Die Identitätsquelle.
Weitere Informationen finden Sie unter IAP APIs.
gcloud
Erstellen Sie eine
iap_settings.yaml-Datei. Verwenden Sie dazu das folgende Beispiel als Referenz.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.yaml access_settings: identity_sources: ["WORKFORCE_IDENTITY_FEDERATION"] workforce_identity_settings: workforce_pools: ["$WORKFORCE_POOL_NAME"] oauth2: client_id: "$CLIENT_ID" client_secret: "$CLIENT_SECRET" EOFFühren Sie den folgenden Befehl aus, um die IAP-Einstellungen für Ihre Ressource zu aktualisieren.
gcloud iap settings set iap_settings.yaml --project=PROJECT --resource-type=RESOURCE_TYPE --service=SERVICEErsetzen Sie Folgendes:
- PROJECT: die Projekt-ID
- RESOURCE_TYPE: Der IAP-Ressourcentyp. Der Ressourcentyp muss
cloud-run(Vorschau),app-engine,iap_web,compute,organizationoderfoldersein. Verwenden Sie für den Ressourcentypcloud-rundas Flag--region, um die Region anzugeben, in der Ihr Cloud Run-Dienst bereitgestellt wird. - SERVICE: Der Dienstname. Dies ist sowohl für
app-engineals auch fürcomputeoptional.
Weitere Informationen zum Befehl finden Sie unter gcloud iap settings set.
API
Erstellen Sie eine
iap_settings.json-Einstellungsdatei. Verwenden Sie dazu das folgende Beispiel als Referenz.CLIENT_ID=clientId CLIENT_SECRET=clientSecret WORKFORCE_POOL_NAME=locations/global/workforcePools/test-pool cat <<EOF > iap_settings.json { "access_settings": { "identity_sources": ["WORKFORCE_IDENTITY_FEDERATION"], "workforce_identity_settings": { "workforce_pools": ["$WORKFORCE_POOL_NAME"], "oauth2": { "client_id": "$CLIENT_ID", "client_secret": "$CLIENT_SECRET", } } } } EOFRufen Sie mit der gcloud CLI den Namen der Ressource ab und kopieren Sie dann den
RESOURCE_NAMEaus der Ausgabe, da Sie ihn im folgenden Schritt benötigen.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICEErsetzen Sie Folgendes:
- PROJECT: die Projekt-ID
- RESOURCE_TYPE: Der IAP-Ressourcentyp. Der Ressourcentyp muss
appengine,iap_web,compute,organization,folderodercloud_run-$REGION(Vorschau) sein, wobei $REGION die Region ist, in der Ihr Cloud Run-Dienst bereitgestellt wird. - SERVICE: Der Dienstname. Dies ist sowohl für
app-engineals auch fürcomputeoptional.
Ersetzen Sie
RESOURCE_NAMEim folgenden Befehl durch denRESOURCE_NAMEaus dem vorherigen Schritt.curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d @iap_settings.json \ "https://iap.googleapis.com/v1/RESOURCE_NAME:iapSettings?updateMask=iapSettings.accessSettings.identitySources,iapSettings.accessSettings.workforceIdentitySettings.workforcePools,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientId,iapSettings.accessSettings.workforceIdentitySettings.oauth2.clientSecret"
Zugriff auf IAP-gesicherte Ressourcen gewähren
Für den Zugriff auf eine IAP-gesicherte Ressource benötigen Endnutzer die Rolle Nutzer von IAP-gesicherten Web-Apps für die Ressource. Sie können die Rolle „Nutzer von IAP-gesicherten Web-Apps“ einem einzelnen Nutzer (Hauptkonto) oder einer Gruppe von Nutzern (Hauptkontosatz, der einer Gruppe, einem bestimmten Attribut oder einem gesamten Nutzerpool zugeordnet ist) zuweisen.
Der uneingeschränkte Zugriff auf mit IAP gesicherte Ressourcen wird nicht unterstützt.
Console
- Öffnen Sie in der Google Cloud Console die IAP-Seite.
Zur Seite „IAP“ - Wählen Sie die Ressource aus, die Sie mit IAP sichern möchten.
- Klicken Sie auf Hauptkonto hinzufügen und fügen Sie dann die Hauptkonto-IDs der Gruppen oder Einzelpersonen hinzu, denen Sie eine IAM-Rolle für die Ressource zuweisen möchten.
- Wählen Sie unter Rollen zuweisen die Option Nutzer von IAP-gesicherten Web-Apps aus.
- Klicken Sie auf Hinzufügen.
gcloud
Führen Sie den folgenden Befehl aus:
gcloud iap web add-iam-policy-binding \
--member=PRINCIPAL_IDENTIFIER \
--role='roles/iap.httpsResourceAccessor' \
--project=PROJECT_ID \
--resource-type=RESOURCE_TYPE \
--service=SERVICE \
--condition=CONDITION
Ersetzen Sie Folgendes:
- PRINCIPAL_IDENTIFIER: Die Hauptkonto-ID.
- PROJECT_ID: Die Projekt-ID.
- RESOURCE_TYPE: Der IAP-Ressourcentyp, der
app-engineoderbackend-servicessein kann. - SERVICE: (Optional) Der Dienstname.
- CONDITION: (Optional) IAM-Bedingungen. Das folgende Beispiel zeigt eine Bedingung, die mit Zugriffsebenen konfiguriert ist:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access on weekdays
API
Diese Methode wird nicht empfohlen, da sie die gesamte IAM-Richtlinie einer Ressource betrifft. Ein Fehler könnte die Richtlinie von einer Ressource entfernen.
Rufen Sie die vorhandenen IAM-Richtlinienbindungen ab.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d {} \ "https://iap.googleapis.com/v1/RESOURCE_NAME:getIamPolicy" -o iam_policy_bindings.jsonErsetzen Sie RESOURCE_NAME durch die RESOURCE_NAME, die Sie in einem früheren Schritt erhalten haben.
Entfernen Sie aus der Datei
iam_policy_bindings.json, die Sie im vorherigen Schritt erhalten haben, die Zeilen „version“ und „etag“ und fügen Sie die Bindung hinzu, die Sie für die Hauptkonto-ID hinzufügen möchten. Weitere Informationen finden Sie unter Zulassungsrichtlinien.{ "bindings": [ { // existing bindings }, { "role": "roles/iap.httpsResourceAccessor", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/iap-test-pool/subject/iap-test-subject" ], "condition": { "expression": "\"accessPolicies/12345678/accessLevels/iap_test_access_level\" in request.auth.access_levels", "title": "iap-test-access-level", "description": "only access on weekdays" } } ] }Aktualisieren Sie die IAM-Richtlinienbindungen.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Accept: application/json" \ -H "Content-Type: application/json" \ -d "{"policy":$(cat iam_policy_bindings.json)}" \ "https://iap.googleapis.com/v1/RESOURCE_NAME:setIamPolicy"Ersetzen Sie RESOURCE_NAME durch die RESOURCE_NAME, die Sie in einem früheren Schritt erhalten haben.
Weitere Informationen finden Sie unter GetIamPolicy und SetIamPolicy.
(Optional) Kontextsensitiven Zugriff einrichten
Optional können Sie kontextsensitive Zugriffsregeln für die erweiterte Autorisierung einrichten.
Informationen zum Einrichten von Zugriffsebenen finden Sie unter Zugriffsebenen erstellen und anwenden. Zugriffsebenen, die auf Geräteinformationen basieren, sind bei Verwendung der Workforce Identity-Föderation nicht verfügbar. Sie können weiterhin Zugriffsebenen basierend auf dem Anfragekontext mit Bedingungen für IP-Adresse, Uhrzeit und Datum verwenden.
Programmatische Authentifizierung
IAP unterstützt die JWT-Authentifizierung von Dienstkonten für Anwendungen, die mit Workforce Identity-Föderation konfiguriert sind. Eine Anleitung finden Sie unter Mit einem Dienstkonto-JWT authentifizieren.
Einschränkungen bei der Arbeit mit Personalpools
* Für jede IAP-fähige Anwendung kann nur ein Workforce-Pool konfiguriert werden und der Workforce-Pool kann nur einen Anbieter enthalten. * Der Workforce-Pool, die OAuth-Client-ID und der Clientschlüssel sowie die IAP-fähigen Anwendungen müssen sich alle in derselben Organisation befinden. * Zugriffsebenen für gerätebezogene Informationen werden nicht unterstützt. * Nur die folgenden IAP-Konfigurationen werden unterstützt: * CorsSettings * CsmSettings * AccessDeniedPageSettings.accessDeniedPageUri * CookieDomain * Der programmatische Zugriff mit Workforce Identity-Föderation wird nur für Google-Dienstkonten unterstützt.Fehlerbehebung
Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung und häufig gestellte Fragen.