Auf dieser Seite wird gezeigt, 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 in Google Cloud oder lokal bereitgestellte Dienste zugreifen können.
Wenn Sie IAP mit der Workforce Identity-Föderation konfigurieren, haben Sie folgende Möglichkeiten für Ihre mit IAP gesicherten Anwendungen:
- Endnutzer zur Anmeldung an einen externen IdP wie Okta weiterleiten
- Konfigurieren Sie eine Anmeldesitzung zwischen 15 Minuten und 12 Stunden.
- Erlauben Sie nur bestimmten Endnutzern oder Endnutzergruppen in einem Identitätsanbieter den Zugriff auf Ihre Anwendung.
- Geben Sie den Kontext an, unter dem ein Endnutzer auf eine Anwendung zugreifen kann. Sie können beispielsweise festlegen, dass der Zugriff nur zu einer bestimmten Tageszeit möglich ist.
Sie können IAP mit der Mitarbeiteridentitätsföderation auf allen vorhandenen Ressourcen und Load Balancern verwenden, die von IAP unterstützt werden.
IAP mit der Workforce Identity-Föderation für eine Anwendung konfigurieren
Die Konfiguration von IAP mit der Workforce Identity-Föderation umfasst die folgenden Hauptaufgaben:
- Richten Sie einen Personalpool und einen Anbieter ein.
- Erstellen Sie eine OAuth-Client-ID und ein Secret.
- Aktivieren Sie IAP und konfigurieren Sie es für die Verwendung der Workforce Identity-Föderation.
Personalpool und Anbieter einrichten
Folgen Sie der Anleitung unter Workforce Identity-Föderation, um einen Workforce Identity-Pool und ‑Anbieter einzurichten. Informationen zum Festlegen der Sitzungsdauer finden Sie unter IAP mit Sitzungen der Workforce Identity-Föderation verwalten.
Wenn Sie eine E-Mail-Adresse von einem IdP eines Drittanbieters Google Cloud zuordnen 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
Folgen Sie der Anleitung, um eine OAuth-Client-ID und ein geheimes Token in einem Projekt in derselben Organisation wie der Personalpool zu erstellen, den Sie für diese Konfiguration verwenden. Das Projekt muss nicht dasselbe sein, in dem sich die mit IAP gesicherte Ressource befindet. Gehen Sie so vor, wenn Sie die OAuth-Client-ID und das Secret erstellen:
Verwenden Sie beim Erstellen der Client-ID einen Platzhalter für den Weiterleitungs-URI. Nachdem du die Client-ID erstellt hast, musst du
describe
einen OAuth-Client ausführen, um die generierteclientID
abzurufen.Wenn du die
clientID
hast,update
führe einen OAuth-Client aus, umallowed-redirect-uris
auf Folgendes zu aktualisieren:https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect
.Dabei ist
CLIENT_ID
die im vorherigen Schritt abgerufeneclientID
.Nachdem Sie den Clientschlüssel erstellt haben, führen Sie
describe
OAuth-Anmeldedaten aus, um das generierteclientSecret
abzurufen.
Speichern Sie
clientId
undclientSecret
, da Sie sie in späteren Schritten benötigen.
IAP für die Verwendung der Workforce Identity-Föderation aktivieren
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 Mitarbeiterpool befinden. Das Projekt muss nicht dasselbe 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, } } EOF
Aktivieren Sie IAP in der 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 der 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 das Secret.IdentitySources
: Die Identitätsquelle.
Weitere Informationen finden Sie in der IAP API-Dokumentation.
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" EOF
Fü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=SERVICE
Ersetzen Sie Folgendes:
- PROJECT: die Projekt-ID
- RESOURCE_TYPE: Der IAP-Ressourcentyp. Der Ressourcentyp muss
app-engine
,iap_web
,compute
,organization
oderfolder
sein. - SERVICE: Der Dienstname. Optional für
app-engine
undcompute
.
Weitere Informationen zum Befehl finden Sie unter gcloud iap settings set.
API
Erstellen Sie anhand des folgenden Beispiels eine
iap_settings.json
-Datei mit den Einstellungen.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", } } } } EOF
Rufen Sie mit der gcloud CLI den Namen der Ressource ab und kopieren Sie dann die
RESOURCE_NAME
aus der Ausgabe, da Sie sie im nächsten Schritt benötigen.gcloud iap settings get \ --project=PROJECT \ --resource-type=RESOURCE_TYPE \ --service=SERVICE
Ersetzen Sie Folgendes:
- PROJECT: die Projekt-ID
- RESOURCE_TYPE: Der IAP-Ressourcentyp. Der Ressourcentyp muss
app-engine
,iap_web
,compute
,organization
oderfolder
sein. - SERVICE: Der Dienstname. Optional für
app-engine
undcompute
.
Ersetzen Sie im folgenden Befehl
RESOURCE_NAME
durch dieRESOURCE_NAME
aus 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 mit IAP gesicherte Ressourcen gewähren
Um auf eine IAP-gesicherte Ressource zugreifen zu können, 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 (Principal-Set, das einer Gruppe, einem bestimmten Attribut oder einem gesamten Pool von Nutzern zugeordnet ist) gewähren.
Der uneingeschränkte Zugriff auf mit 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 für die Ressource eine IAM-Rolle 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 Haupt-IDs.
- PROJECT_ID: die Projekt-ID
- RESOURCE_TYPE: Der IAP-Ressourcentyp, der
app-engine
oderbackend-services
sein kann. - SERVICE: (Optional) Der Dienstname.
- CONDITION: (Optional) IAM-Bedingungen. Im Folgenden finden Sie ein Beispiel für 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 in weekdays
API
Diese Methode wird nicht empfohlen, da sie die gesamte IAM-Richtlinie einer Ressource betrifft. Durch einen Fehler kann die Richtlinie aus einer Ressource entfernt werden.
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.json
Ersetzen Sie RESOURCE_NAME durch die RESOURCE_NAME, die Sie in einem vorherigen Schritt ermittelt 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 Hauptkennzeichnung hinzufügen möchten. Weitere Informationen finden Sie unter „allow“-Richtlinien.{ "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 die RESOURCE_NAME, die Sie in einem vorherigen Schritt ermittelt 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 der Verwendung der Workforce Identity-Föderation nicht verfügbar. Sie können weiterhin auf Anfragekontext basierende Zugriffsebenen mit Bedingungen für IP-Adressen sowie Uhrzeit und Datum verwenden.
Einschränkungen bei der Arbeit mit Personalpools
- Für jede IAP-kompatible Anwendung kann nur ein Workforce-Pool konfiguriert werden. Dieser Workforce-Pool kann nur einen Anbieter enthalten.
- Der Mitarbeiteridentitätspool, die OAuth-Client-ID und der geheime Clientschlüssel sowie die IAP-kompatiblen Anwendungen müssen sich alle in derselben Organisation befinden.
- Zugriffsebenen für gerätebezogene Informationen werden nicht unterstützt.
- Es werden nur die folgenden Konfigurationen für IAP unterstützt:
- Der programmatische Zugriff mit der Mitarbeiteridentitätsföderation wird nicht unterstützt.