IAP mit der Mitarbeiteridentitätsföderation konfigurieren

Auf dieser Seite wird beschrieben, 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, mit Identity and Access Management (IAM) zu authentifizieren und zu autorisieren. So können die Nutzer sicher auf Dienste zugreifen, die in Google Cloud oder lokal bereitgestellt werden.

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

  • Leiten Sie einen Endnutzer zur Anmeldung an einen externen IdP wie Okta weiter.
  • Konfigurieren Sie eine Anmeldesitzung zwischen 15 Minuten und 12 Stunden.
  • Erlauben Sie nur bestimmten Endnutzern oder Endnutzersätzen in einem IdP den Zugriff auf Ihre Anwendung.
  • Geben Sie den Kontext an, unter dem ein Endnutzer auf eine Anwendung zugreifen kann. So können Sie beispielsweise den Zugriff nur zu einer bestimmten Tageszeit erlauben.

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

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

  1. Personalpool und Anbieter einrichten
  2. Erstellen Sie eine OAuth-Client-ID und ein Secret.
  3. Aktivieren Sie IAP und konfigurieren Sie es für die Verwendung der Mitarbeiteridentitätsföderation.

Personalpool und Anbieter einrichten

Folgen Sie zum Einrichten eines Personalpools und Anbieters der Anleitung unter Mitarbeiteridentitätsföderation. Informationen zum Festlegen der Sitzungsdauer finden Sie unter IAP mit Sitzungen der Mitarbeiteridentitätsföderation verwalten.

Wenn Sie Google Cloud eine E-Mail-Adresse eines externen Identitätsanbieters zuordnen möchten, müssen Sie 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-Clientschlüssels in einem Projekt in derselben Organisation wie der Personalpool, den Sie für diese Konfiguration verwenden werden. Das Projekt muss nicht dasselbe Projekt sein, in dem sich die mit IAP gesicherte Ressource befindet. So erstellst du die OAuth-Client-ID und den OAuth-Clientschlüssel:

    1. 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 generierte clientID abzurufen.

    2. Wenn clientID installiert ist, führe update einen OAuth-Client aus, um allowed-redirect-uris auf https://iap.googleapis.com/v1/oauth/clientIds/$CLIENT_ID:handleRedirect zu aktualisieren.

      Dabei ist CLIENT_ID der im vorherigen Schritt abgerufene clientID.

    3. Nachdem du den Clientschlüssel erstellt hast, führe describe-OAuth-Clientanmeldedaten aus, um die generierte clientSecret abzurufen.

    Speichern Sie die clientId und clientSecret, da Sie sie in späteren Schritten benötigen.

IAP aktivieren, um die Mitarbeiteridentitätsföderation zu verwenden

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „IAP“.
    Zur Seite „IAP“
  2. 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 OAuth-Secret erstellt haben.
  3. Klicken Sie auf den Tab Applications (Anwendungen) und suchen Sie die Anwendung, für die Sie den Zugriff über IAP 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 den Schritten für den entsprechenden Dienst:

API

  1. Erstellen Sie eine settings.json-Datei.

    cat << EOF > settings.json
    {
    "iap":
      {
        "enabled":true,
     }
    }
    EOF
    
  2. Aktivieren 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 OAuth-Secret.
  • IdentitySources: Die Identitätsquelle.

Weitere Informationen finden Sie unter IAP APIs.

gcloud

  1. Erstellen Sie mit dem folgenden Beispiel als Referenz 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 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 oder folder sein.
    • SERVICE: Der Dienstname. Dies ist sowohl für app-engine als auch für compute optional.

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

API

  1. Erstellen Sie mit dem folgenden Beispiel als Referenz 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",
           }
        }
      }
    }
    EOF
    
  2. Verwenden Sie die gcloud CLI, um den Namen der Ressource abzurufen, und kopieren Sie dann das RESOURCE_NAME aus der Ausgabe, da Sie es im folgenden 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 oder folder sein.
    • SERVICE: Der Dienstname. Dies ist sowohl für app-engine als auch für compute optional.
  3. Ersetzen Sie RESOURCE_NAME im folgenden Befehl durch den 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 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 Pool von Nutzern zugeordnet ist) zuweisen.

Der uneingeschränkte Zugriff auf mit IAP gesicherte Ressourcen wird nicht unterstützt.

Console

  1. Öffnen Sie in der Google Cloud Console die Seite „IAP“.
    Zur Seite „IAP“
  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 Hauptkonten-IDs der Gruppen oder Personen hinzu, denen Sie eine IAM-Rolle für die Ressource 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 dabei Folgendes :

  • PRINCIPAL_IDENTIFIER: die Hauptkennungen
  • PROJECT_ID: die Projekt-ID
  • RESOURCE_TYPE: Der IAP-Ressourcentyp kann app-engine oder backend-services sein.
  • SERVICE: Der Dienstname. Dies ist optional, wenn resource-type den Wert app-engine hat.
  • CONDITION: (optional) IAM-Bedingungen. Im Folgenden finden 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 für die gesamte IAM-Richtlinie einer Ressource gilt. Ein Fehler kann die Richtlinie aus einer Ressource entfernen.

  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, den Sie in einem vorherigen Schritt abgerufen haben.

  2. Entfernen Sie in der Datei iam_policy_bindings.json, die Sie im vorherigen Schritt abgerufen haben, die Versions- und etag-Zeilen und fügen Sie die Bindung hinzu, die Sie für die Hauptkonto-ID hinzufügen möchten. 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, den Sie in einem vorherigen 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. Auf Geräteinformationen basierende Zugriffsebenen sind nicht verfügbar, wenn die Mitarbeiteridentitätsföderation verwendet wird. Sie können weiterhin anfragekontextbasierte Zugriffsebenen mit Bedingungen für IP-Adresse sowie Uhrzeit und Datum verwenden.

Einschränkungen bei der Arbeit mit Personalpools

  • IAP unterstützt nur einen Personalpool und der Personalpool kann nur einen Anbieter enthalten.
  • Der Personalpool, die OAuth-Client-ID und das OAuth-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.
  • Es werden nur die folgenden IAP-Einstellungskonfigurationen unterstützt:
  • Der programmatische Zugriff mit der Mitarbeiteridentitätsföderation wird nicht unterstützt.