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

Wenn Sie einen Personalpool und Anbieter einrichten möchten, folgen Sie der Anleitung unter Mitarbeiteridentitätsföderation und wann Informationen zum Festlegen der Sitzungsdauer finden Sie unter IAP mit Sitzungen der Mitarbeiteridentität 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. Nachher erstellen Sie die Client-ID, führen describe einen OAuth-Client um den generierten 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 credentials 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 IAP-Seite.
    <ph type="x-smartling-placeholder"></ph> Zu IAP-Käufe“
  2. Wählen Sie ein Projekt aus. Das Projekt muss sich in derselben Organisation befinden wie das Personalpool aus, den Sie zuvor erstellt haben. Das Projekt muss nicht Projekt, in dem Sie die OAuth-Client-ID und das OAuth-Secret erstellt haben.
  3. Klicken Sie auf den Tab Programme und suchen Sie die Anwendung, die Sie den Zugriff auf IAP beschrä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 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"
    

    Um IAP für Compute Engine verwenden Sie die folgende URL: 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 ein iap_settings.yaml-Objekt mit dem folgenden Beispiel als Referenz. -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. Dies ist für beide 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.

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

Console

  1. Öffnen Sie in der Google Cloud Console die IAP-Seite.
    <ph type="x-smartling-placeholder"></ph> 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 Hauptkennungen der Gruppen oder Einzelpersonen, denen Sie eine IAM-Rolle für die Ressource.
  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: Der Dienstname. Dies ist optional, wenn resource-type ist app-engine.
  • 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 Auf Geräteinformationen basierende Zugriffsebenen sind bei der Verwendung von Mitarbeiteridentitätsföderation. Sie können weiterhin anfragekontextbasierten Zugriff verwenden mit Bedingungen für IP-Adresse sowie Uhrzeit und Datum.

Einschränkungen bei der Arbeit mit Personalpools

  • IAP unterstützt nur einen Personalpool und den 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: <ph type="x-smartling-placeholder">
  • Programmatischer Zugriff mit der Mitarbeiteridentitätsföderation wird nicht unterstützt.