Auf dieser Seite wird gezeigt, wie Sie Identity-Aware Proxy (IAP) für die Verwendung der Mitarbeiteridentitätsföderation konfigurieren.
Wenn Sie die Mitarbeiteridentitätsföderation mit IAP konfigurieren, können Sie einen externen Identitätsanbieter (Identity Provider, IdP) verwenden, um eine Gruppe von Nutzern, z. B. Mitarbeiter, Partner und Auftragnehmer, per Identity and Access Management (IAM) zu authentifizieren und zu autorisieren, damit die Nutzer sicher auf Dienste zugreifen können, die in der CloudGoogle Cloud oder lokal bereitgestellt werden.
Wenn Sie IAP mit der Mitarbeiteridentitätsföderation konfigurieren, haben Sie in Bezug auf Ihre IAP-gesicherten Anwendungen folgende Möglichkeiten:
- Endnutzer zu einem externen IdP wie Okta umleiten, damit sie sich anmelden können.
- Eine Anmeldesitzung zwischen 15 Minuten und 12 Stunden konfigurieren.
- Nur bestimmten Endnutzern oder Endnutzergruppen in einem IdP den Zugriff auf Ihre Anwendung erlauben.
- Den Kontext angeben, in dem ein Endnutzer auf eine Anwendung zugreifen kann. Sie können beispielsweise den Zugriff nur zu einer bestimmten Tageszeit zulassen.
Sie können IAP mit der Mitarbeiteridentitätsföderation für alle vorhandenen Ressourcen und Load-Balancer verwenden, die von IAP unterstützt werden.
IAP mit der Mitarbeiteridentitätsföderation für eine Anwendung konfigurieren
Die Konfiguration von IAP mit der Mitarbeiteridentitätsföderation umfasst die folgenden Hauptaufgaben:
- Einen Personalpool und einen Anbieter einrichten.
- Eine OAuth-Client-ID und ein Secret erstellen.
- IAP aktivieren und für die Verwendung der Mitarbeiteridentitätsföderation konfigurieren.
Einen Personalpool und einen Anbieter einrichten
Richten Sie einen Personalpool und einen Anbieter ein. Folgen Sie dazu der Anleitung für einen der folgenden Anbieter:
Informationen zum Festlegen der Sitzungsdauer finden Sie unter IAP-Sitzungen mit der Mitarbeiteridentitätsföderation verwalten.
Wenn Sie eine E-Mail-Adresse von einem Drittanbieter-IdP zuordnen möchten Google Cloud,
müssen Sie in Ihrem Personalpoolanbieter eine Attributzuordnung für google.email hinzufügen.
Beispiel: google.email=assertion.email.
Eine OAuth-Client-ID und ein Secret erstellen
Folgen Sie der Anleitung, um eine OAuth-Client-ID und ein Secret zu erstellen für ein 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. So erstellen Sie die OAuth-Client-ID und das Secret:
Verwenden Sie beim Erstellen der Client-ID einen Platzhalter für den Umleitungs-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_IDdieclientID, die Sie im vorherigen Schritt abgerufen haben.Nachdem Sie das Client-Secret erstellt haben, führen Sie
describefür OAuth-Client Anmeldedaten aus, um das generierteclientSecretabzurufen.
Speichern Sie die
clientIdund dasclientSecret, 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 der Mitarbeiteridentitätsföderation zu aktivieren.
IAP aktivieren
Aktivieren Sie IAP für die Ressource.
Console
- Öffnen Sie in der Google Cloud Console die Seite „IAP“.
Zur Seite „IAP“ - Wählen Sie ein Projekt aus. Das Projekt muss sich in derselben Organisation wie der zuvor erstellte Personalpool 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 dann die Anwendung, für die Sie den Zugriff mit 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, } } EOFAktivieren Sie IAP in App Engine.
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 Mitarbeiteridentitätsföderation konfigurieren möchten, müssen Sie die folgenden Einstellungen konfigurieren:
WorkforceIdentitySettings: Die zuvor erstellte OAuth-Client-ID und das Secret.IdentitySources: Die Identitätsquelle.
Weitere Informationen finden Sie in den IAP-APIs.
gcloud
Erstellen Sie anhand des folgenden Beispiels eine
iap_settings.yaml-Datei.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,organization, oderfoldersein.Verwenden Sie für den Ressourcentyp
cloud-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 anhand des folgenden Beispiels eine
iap_settings.json-Einstellungsdatei.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
RESOURCE_NAMEaus der Ausgabe, da Sie ihn im nächsten 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
Um auf eine IAP-gesicherte Ressource zuzugreifen, müssen Endnutzer die Rolle Nutzer von IAP-gesicherten Web-Apps für die Ressource haben. Sie können die Rolle Nutzer von IAP-gesicherten Web-Apps einem einzelnen Nutzer (Hauptkonto) oder einer Gruppe von Nutzern (Hauptkontogruppe, die einer Gruppe, einem bestimmten Attribut oder einem gesamten Nutzerpool zugeordnet ist) zuweisen.
Uneingeschränkter Zugriff auf IAP-gesicherte Ressourcen wird nicht unterstützt.
Console
- Öffnen Sie in der Google Cloud Console die Seite „IAP“.
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-IDs.
- PROJECT_ID: Die Projekt-ID.
- RESOURCE_TYPE: Der IAP-Ressourcentyp, der
sein kann
app-engineoderbackend-services. - SERVICE: (Optional) Der Dienstname.
- CONDITION: (Optional) IAM-Bedingungen. Das folgende Beispiel zeigt eine Bedingung, die mit Zugriffsebenen konfiguriert wurde:
expression="accessPolicies/12345678/accessLevels/iap_test_access_level" in request.auth.access_levels,title=iap-test-access-level,description=only access in weekdays
API
Diese Methode wird nicht empfohlen, da sie die gesamte IAM-Richtlinie einer Ressource betrifft. Ein Fehler kann dazu führen, dass die Richtlinie aus einer Ressource entfernt wird.
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 den RESOURCE_NAME, den Sie in einem früheren Schritt abgerufen haben.
Entfernen Sie in der Datei
iam_policy_bindings.json, die Sie im vorherigen Schritt abgerufen haben, die Zeilen für 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 in week days" } } ] }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 den RESOURCE_NAME, den Sie in einem früheren Schritt abgerufen haben.
Weitere Informationen finden Sie unter GetIamPolicy und SetIamPolicy.
(Optional) Kontextsensitiven Zugriff einrichten
Optional können Sie Regeln für den kontextsensitiven Zugriff 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 Mitarbeiteridentitätsföderation nicht verfügbar. Sie können jedoch weiterhin auf Anfragekontext basierende Zugriffsebenen mit Bedingungen für IP-Adresse sowie Datum und Uhrzeit verwenden.
Programmatische Authentifizierung
IAP unterstützt die JWT-Authentifizierung von Dienstkonten für Anwendungen, die mit der Mitarbeiteridentitätsföderation konfiguriert wurden. Eine Anleitung finden Sie unter Mit einem Dienstkonto-JWT authentifizieren.
Einschränkungen bei der Verwendung von Personalpools
- Für jede IAP-aktivierte Anwendung kann nur ein Personalpool konfiguriert werden und der Personalpool kann nur einen Anbieter enthalten.
- Der Personalpool, die OAuth-Client-ID und das Secret sowie die IAP-aktivierten Anwendungen müssen sich alle in derselben Organisation befinden.
- Zugriffsebenen für gerätebezogene Informationen werden nicht unterstützt.
- Nur die folgenden IAP-Einstellungskonfigurationen werden unterstützt:
- Der programmatische Zugriff mit der Mitarbeiteridentitätsföderation wird nur für Google-Dienstkonten unterstützt.
Fehlerbehebung
Informationen zur Fehlerbehebung finden Sie unter Fehlerbehebung und häufig gestellte Fragen.