IAP mit Mitarbeiteridentitätsföderation konfigurieren

Auf dieser Seite erfahren Sie, wie Sie Identity-Aware Proxy (IAP) für die Verwendung konfigurieren Mitarbeiteridentitätsföderation

Wenn Sie die Mitarbeiteridentitätsföderation mit IAP konfigurieren, einen externen Identitätsanbieter (Identity Provider, IdP) zur Authentifizierung und Autorisierung einer Gruppe von Nutzenden, wie Mitarbeitenden, Partnern und Auftragnehmern, Identitäts- und Zugriffsverwaltung (Identity and Access Management – IAM), damit Nutzer sicher auf Dienste zugreifen können, Google Cloud oder lokal.

Wenn Sie IAP mit der Mitarbeiteridentitätsföderation konfigurieren, können Sie Folgendes in Bezug auf Ihre IAP-gesicherten Anwendungen beachten:

  • Sie können einen Endnutzer an einen externen IdP wie Okta weiterleiten, um sich anzumelden.
  • Konfigurieren Sie eine Anmeldesitzung zwischen 15 Minuten und 12 Stunden.
  • Erlauben Sie nur bestimmten Endnutzern oder Endnutzergruppen eines IdP den Zugriff auf Ihr .
  • Geben Sie den Kontext an, in dem ein Endnutzer auf eine Anwendung zugreifen kann. Für z. B. den Zugriff nur zu einer bestimmten Tageszeit zulassen.

Sie können IAP mit der Mitarbeiteridentitätsföderation auf allen vorhandene Ressourcen und Load-Balancer, die von IAP unterstützt werden.

IAP mit Mitarbeiteridentitätsföderation für eine Anwendung konfigurieren

Das Konfigurieren von IAP mit Mitarbeiteridentitätsföderation umfasst die folgenden Hauptaufgaben:

  1. Personalpool und Anbieter einrichten
  2. OAuth-Client-ID und -Secret erstellen
  3. Aktivieren Sie IAP und konfigurieren Sie es für die Verwendung der Mitarbeiteridentitätsfö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 Google Cloud eine E-Mail-Adresse eines externen Identitätsanbieters zuordnen möchten, Sie müssen Ihrem Personalpoolanbieter eine Attributzuordnung für google.email hinzufügen. Beispiel: google.email=assertion.email.

OAuth-Client-ID und -Secret erstellen

  1. Folgen Sie der Anleitung zum Erstellen einer OAuth-Client-ID und eines OAuth-Secret. die sich im selben Unternehmen wie der Personalpool befinden, die Sie für diese Konfiguration verwenden. Das Projekt muss nicht dasselbe sein, Projekt, in dem sich die mit IAP gesicherte Ressource befindet. Beim Erstellen OAuth-Client-ID und -Secret:

    1. Verwenden Sie beim Erstellen der Client-ID einen Platzhalter für den Weiterleitungs-URI. Nachdem du die Client-ID erstellt hast, musst du describeeinen OAuth-Client ausführen, um die generierte clientID abzurufen.

    2. Wenn Sie die clientID haben, führen Sie update Einen OAuth-Client um allowed-redirect-uris auf Folgendes zu aktualisieren: https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect

      Dabei ist CLIENT_ID die im vorherigen Schritt abgerufene clientID.

    3. Nachdem du den Clientschlüssel erstellt hast, führe describe einen OAuth-Client aus Anmeldedaten um den generierten clientSecret abzurufen.

    Speichere die clientId und die clientSecret, da du sie später benötigst. Schritte.

Aktivieren Sie IAP, um die Mitarbeiteridentitätsföderation zu verwenden

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „IAP“.
    Zu IAP-Käufe“
  2. Wählen Sie ein Projekt aus. Das Projekt muss sich in derselben Organisation wie der zuvor erstellte Arbeitspool befinden. Das Projekt muss nicht dasselbe sein, in dem Sie die OAuth-Client-ID und das Secret erstellt haben.
  3. Klicken Sie auf den Tab Anwendungen und suchen Sie die Anwendung, für die Sie den Zugriff mithilfe von In-App-Abos einschränken möchten.
  4. Stellen Sie den Schieberegler in der Spalte "IAP" auf Ein.

gcloud

Wenn Sie IAP über die gcloud CLI aktivieren möchten, folgen Sie der Verfahren für den betreffenden Dienst:

API

  1. Erstellen Sie eine settings.json-Datei.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true,
     }
    }
    EOF
    
  2. 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

Um IAP für die Verwendung der Mitarbeiteridentitätsföderation zu konfigurieren, müssen Sie konfigurieren Sie die folgenden Einstellungen:

  • WorkforceIdentitySettings: OAuth-Client-ID und -Secret, die zuvor erstellt wurden.
  • IdentitySources: Die Identitätsquelle.

Weitere Informationen finden Sie unter IAP APIs.

gcloud

  1. 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
    
  2. Führen Sie den folgenden Befehl aus, um die IAP-Einstellungen für Ihrer Ressource.

    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. Die Ressourcentyp muss app-engine, iap_web, compute sein. organization oder folder.
    • SERVICE: Der Dienstname. Optional für app-engine und compute.

    Weitere Informationen zum Befehl finden Sie unter gcloud iap settings set.

API

  1. Erstellen Sie ein iap_settings.json-Objekt mit dem folgenden Beispiel als Referenz. 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",
           }
        }
      }
    }
    EOF
    
  2. Rufen Sie den Namen der Ressource über die gcloud CLI ab. kopieren Sie die RESOURCE_NAME aus der Ausgabe, da Sie sie im nächsten Schritt.

    gcloud iap settings get \
        --project=PROJECT \
        --resource-type=RESOURCE_TYPE \
        --service=SERVICE
    

    Ersetzen Sie Folgendes:

    • PROJECT: die Projekt-ID
    • RESOURCE_TYPE: Der IAP-Ressourcentyp. Die Ressourcentyp muss app-engine, iap_web, compute sein. organization oder folder.
    • SERVICE: Der Dienstname. Dies ist für beide app-engine und compute.
  3. Ersetzen Sie RESOURCE_NAME im folgenden Befehl durch RESOURCE_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

Für den Zugriff auf eine mit IAP gesicherte Ressource benötigen Endnutzer die Berechtigung Nutzer von IAP-gesicherten Web-Apps Rolle für die Ressource. Sie können einem einzelnen Nutzer die Rolle „Nutzer von IAP-gesicherten Web-Apps“ zuweisen (Hauptkonto) oder eine Gruppe von Nutzern (Hauptgruppe, das einer Gruppe, einem bestimmten Attribut oder einem ganzen Nutzerpool zugeordnet ist.

Uneingeschränkter Zugriff auf mit IAP gesicherte Ressourcen wird nicht unterstützt.

Console

  1. Öffnen Sie in der Google Cloud Console die IAP-Seite.
    Zu IAP-Käufe“
  2. Wählen Sie die Ressource aus, die Sie mit IAP sichern möchten.
  3. 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.
  4. Wählen Sie unter Rollen zuweisen die Option Nutzer von IAP-gesicherten Web-Apps aus.
  5. 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 Hauptkennungen.
  • PROJECT_ID: die Projekt-ID
  • RESOURCE_TYPE: Der IAP-Ressourcentyp, der auf app-engine oder backend-services sein.
  • SERVICE (optional): Der Dienstname.
  • CONDITION: (optional) IAM-Bedingungen. Hier sehen Sie ein Beispiel für 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 den gesamten IAM-Richtlinie einer Ressource. Aufgrund eines Fehlers könnte die Richtlinie entfernt werden aus einer Ressource abgerufen werden.

  1. 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 den RESOURCE_NAME, die Sie in einem vorherigen Schritt.

  2. In die Datei iam_policy_bindings.json, die Sie aus dem vorherigen entfernen Sie die Versions- und ETag-Zeilen und fügen Sie die die als Hauptkonto-ID hinzugefügt werden soll. Weitere Informationen finden Sie unter Informationen zu 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"
          }
        }
      ]
    }
    
  3. 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, die Sie in einem vorherigen Schritt.

Siehe 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 der Verwendung der Workforce Identity-Föderation nicht verfügbar. Sie können weiterhin anfragekontextbasierten Zugriff verwenden mit Bedingungen für IP-Adresse sowie Uhrzeit und Datum.

Einschränkungen bei der Arbeit mit Personalpools

  • Für jede IAP-fähige Anwendung kann nur ein Personalpool konfiguriert werden und der Personalpool kann nur einen Anbieter enthalten.
  • Personalpool, OAuth-Client-ID und -Secret sowie IAP-fähige Anwendungen müssen sich alle in derselben Organisation befinden.
  • Zugriffsebenen für gerätebezogene Informationen werden nicht unterstützt.
  • Es werden nur die folgenden IAP-Einstellungskonfigurationen unterstützt:
  • Programmatischer Zugriff mit der Mitarbeiteridentitätsföderation wird nicht unterstützt.