SCIM in Okta konfigurieren

In diesem Dokument wird beschrieben, wie Sie einen SCIM-Mandanten in einem Workforce Identity-Pool konfigurieren. Weitere Informationen zu SCIM finden Sie unter SCIM-Bereitstellung für die Mitarbeiteridentitätsföderation.

Jeder Workforce Identity-Pool unterstützt nur einen SCIM-Mandanten. Wenn Sie einen neuen SCIM-Mandanten in einem Pool konfigurieren möchten, der bereits einen hat, müssen Sie zuerst den vorhandenen Mandanten endgültig löschen.

Das Flag --claim-mapping für einen SCIM-Mandanten darf nur bestimmte CEL-Ausdrücke (Common Expression Language) enthalten. Informationen zu den unterstützten Ausdrücken finden Sie unter Anspruchszuordnung.

Achten Sie darauf, dass Ihr IdP eindeutige, nicht leere Werte für Attribute bereitstellt, die google.subject und google.group zugeordnet sind. Die Synchronisierung doppelter Werte schlägt mit dem HTTP-Fehler 409 Conflict fehl und Null- oder leere Werte schlagen mit dem HTTP-Fehler 400 Bad Request fehl. Weitere Informationen finden Sie unter SCIM-Unterstützung.

So konfigurieren Sie System for Cross-domain Identity Management (SCIM):

  1. SCIM-Mandanten und ‑Token in Google Cloudkonfigurieren
  2. SCIM in Okta konfigurieren
  3. Anbieter aktualisieren, um SCIM zu aktivieren
  4. SCIM-Synchronisierung prüfen

SCIM-Mandanten und ‑Token in Google Cloudkonfigurieren

So konfigurieren Sie einen SCIM-Mandanten in Google Cloud:

  1. SCIM-Mandanten erstellen

        gcloud iam workforce-pools providers scim-tenants create SCIM_TENANT_ID \
            --workforce-pool="WORKFORCE_POOL_ID" \
            --provider="PROVIDER_ID" \
            --display-name="SCIM_TENANT_DISPLAY_NAME" \
            --description="SCIM_TENANT_DESCRIPTION" \
            --claim-mapping="CLAIM_MAPPING" \
            --location="global"
        

    Ersetzen Sie Folgendes:

    • SCIM_TENANT_ID: eine ID für Ihren SCIM-Mandanten.
    • WORKFORCE_POOL_ID: die ID des Workforce-Pools, den Sie zuvor in diesem Dokument erstellt haben.
    • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools, den Sie zuvor in diesem Dokument erstellt haben.
    • SCIM_TENANT_DISPLAY_NAME: ein Anzeigename für Ihren SCIM-Mandanten.
    • SCIM_TENANT_DESCRIPTION: eine Beschreibung für Ihren SCIM-Mandanten.
    • CLAIM_MAPPING: eine durch Kommas getrennte Liste von Attributzuordnungen. Eine erweiterte Liste der Zuordnungsattribute finden Sie unter Anforderungszuordnung. Für Gemini Enterprise wird die folgende Zuordnung empfohlen:
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.displayName

      Das Attribut google.subject, das Sie im SCIM-Mandanten zuordnen, muss eindeutig auf dieselben Identitäten verweisen, die im Attribut google.subject im Workforce Identity-Poolanbieter mit dem Flag --attribute-mapping zugeordnet sind. Nachdem der SCIM-Mandant erstellt wurde, können Sie das Claim-Mapping nicht mehr aktualisieren. Wenn Sie ihn ersetzen möchten, können Sie den SCIM-Mandanten endgültig löschen und sofort einen neuen erstellen. Weitere Informationen zu den Überlegungen zur Verwendung von SCIM finden Sie unter SCIM-Unterstützung.

  2. Gehen Sie nach Abschluss des Befehls so vor:

    1. Speichern Sie im Feld baseUri in der Ausgabe den gesamten URI, der das Format https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID hat. Sie müssen diesen URI Ihrem IdP bereitstellen.
    2. Speichern Sie außerdem nur die SCIM_TENANT_UID aus dem URI. Sie benötigen diese UID, um später in diesem Dokument eine IAM-Zulassungsrichtlinie für den SCIM-Mandanten festzulegen.
  3. Erstellen Sie ein SCIM-Token:

        gcloud iam workforce-pools providers scim-tenants tokens create SCIM_TOKEN_ID \
            --display-name DISPLAY_NAME \
            --scim-tenant SCIM_TENANT_ID \
            --workforce-pool WORKFORCE_POOL_ID \
            --provider PROVIDER_ID \
            --location global
        

    Ersetzen Sie Folgendes:

    • SCIM_TOKEN_ID: eine ID für das SCIM-Token
    • DISPLAY_NAME: der Anzeigename des SCIM-Tokens
    • WORKFORCE_POOL_ID: die ID des Workforce-Pools
    • SCIM_TENANT_ID: die ID des SCIM-Mandanten
    • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
  4. Führen Sie nach Abschluss des Befehls gcloud iam workforce-pools providers scim-tenants tokens create die folgenden Schritte aus:

    1. Speichern Sie in der Ausgabe den Wert von SCIM_TOKEN im Feld securityToken. Sie müssen dieses Sicherheitstoken Ihrem IdP zur Verfügung stellen. Das Sicherheitstoken wird nur in dieser Ausgabe angezeigt. Wenn es verloren geht, müssen Sie ein neues SCIM-Token erstellen.

    2. Führen Sie den folgenden Befehl aus, um zu prüfen, ob SCIM_TOKEN von Ihrer Organisationsrichtlinie abgelehnt wird:

      curl -v -H "Authorization: Bearer SCIM_TOKEN"  https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users

      Wenn der Befehl mit einem Berechtigungsfehler fehlschlägt, führen Sie gcloud organizations add-iam-policy-binding aus, wie in einem späteren Schritt beschrieben. Wenn der Befehl erfolgreich ist, können Sie diesen Schritt überspringen.

  5. Legen Sie eine IAM-Zulassungsrichtlinie für den SCIM-Mandanten und das Token fest. Wenn der Befehl curl in einem vorherigen Schritt mit einem Berechtigungsfehler fehlgeschlagen ist, müssen Sie den folgenden Befehl ausführen:

        gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
            --member=serviceAccount:SERVICE_AGENT_EMAIL \
            --role roles/iam.scimSyncer
        

    Ersetzen Sie Folgendes:

    • ORGANIZATION_ID: die ID der Organisation.
    • SERVICE_AGENT_EMAIL: die E-Mail-Adresse des Dienst-Agents. Die E-Mail-Adresse hat das folgende Format: o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. SCIM_TENANT_UID wird zurückgegeben, wenn Sie den SCIM-Mandanten erstellen.

Wenn Sie Gruppen in Ihrem IdP bereitstellen, achten Sie darauf, dass der Anzeigename jeder Gruppe, wie im Feld displayName angegeben, innerhalb eines SCIM-Mandanten eindeutig ist. Weitere Informationen zu Gruppen und SCIM in Microsoft Entra ID finden Sie unter Gruppen.

SCIM in Okta konfigurieren

So konfigurieren Sie SCIM in Okta in Ihrer vorhandenen Okta-Anwendung:

  1. Melden Sie sich bei der Okta Admin-Konsole an.
  2. Rufen Sie Anwendungen > Anwendungen auf.
  3. Wählen Sie Ihre Anwendung aus oder erstellen Sie eine:

    • So wählen Sie eine vorhandene Anwendung aus:

      1. Klicken Sie auf den Namen der Anwendung, die Sie mit der Vorlage für die Google Cloud-Mitarbeiteridentitätsföderation erstellt haben.
      2. Führen Sie auf dem Tab Allgemein folgende Schritte aus:

        1. Klicken Sie im Bereich App-Einstellungen auf Bearbeiten.
        2. Geben Sie im Feld Mandant die Mandanten-ID ein, die Sie über die gcloud CLI erhalten haben.
        3. Klicken Sie auf Fertig.
    • So erstellen Sie eine neue Anwendung:

      1. Klicken Sie auf App-Katalog ansehen.
      2. Geben Sie im Feld Suchen den Begriff Google Cloud Workforce Identity Federation ein und wählen Sie dann in den Ergebnissen die Integration Google Cloud Workforce Identity Federation aus.
      3. Klicken Sie auf Integration hinzufügen.

        1. Geben Sie im Feld Anwendung einen Namen für Ihre App ein.
        2. Geben Sie im Feld Mandant die Mandanten-ID ein, die Sie über die gcloud CLI erhalten haben.
        3. Klicken Sie auf Fertig.
  4. Führen Sie auf dem Tab Bereitstellung folgende Schritte aus:

    1. Klicken Sie im Bereich Integration auf Bearbeiten.

      1. Geben Sie im Feld API-Token das SCIM-Token ein, das Sie von Google Clouderhalten haben.
      2. Klicken Sie auf Anmeldedaten testen, um die Gültigkeit des API-Tokens zu bestätigen.
      3. Wählen Sie Gruppen importieren aus.
      4. Klicken Sie auf Speichern.
    2. Klicken Sie im Bereich Anwendung auf Bearbeiten.

      1. Wählen Sie Nutzer erstellen, Nutzerattribute aktualisieren und Nutzer deaktivieren aus.
      2. Klicken Sie auf Speichern.

Anbieter aktualisieren, um SCIM zu aktivieren

Wenn Sie SCIM für einen Anbieter aktivieren möchten, legen Sie das Flag --scim-usage entsprechend Ihrem Produktziel fest:

SCIM für Gruppen aktivieren (Gemini Enterprise)

OIDC

      gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=global \
          --scim-usage=enabled-for-groups
    

Ersetzen Sie Folgendes:

  • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
  • WORKFORCE_POOL_ID: die ID des Workforce-Pools

SAML

      gcloud iam workforce-pools providers update-saml PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=global \
          --scim-usage=enabled-for-groups
    

Ersetzen Sie Folgendes:

  • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
  • WORKFORCE_POOL_ID: die ID des Workforce-Pools

SCIM für Nutzer und Gruppen aktivieren (Looker) (Vorschau)

OIDC

      gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=global \
          --scim-usage=enabled-for-users-groups
    

Ersetzen Sie Folgendes:

  • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
  • WORKFORCE_POOL_ID: die ID des Workforce-Pools

SAML

      gcloud iam workforce-pools providers update-saml PROVIDER_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --location=global \
          --scim-usage=enabled-for-users-groups
    

Ersetzen Sie Folgendes:

  • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
  • WORKFORCE_POOL_ID: die ID des Workforce-Pools

Informationen zum Überprüfen der SCIM-Synchronisierung finden Sie unter SCIM-Synchronisierung überprüfen.

Claim-Mapping

Wenn Sie SCIM konfigurieren, definieren Sie im SCIM-Mandanten Claim-Mappings (--claim-mapping), um SCIM-Nutzer- und Gruppenattribute Google-Attributen zuzuordnen.

Unterstützte Google Cloud -Attribute für das Claim-Mapping

In der folgenden Tabelle sind die Google Cloud -Attribute aufgeführt, die Sie in Ihrem SCIM-Mandanten (--claim-mapping) mit der Common Expression Language (CEL) zuordnen können:

AttributGoogle Cloud Anforderung Beschreibung Unterstützte Ausdrücke und Limits
google.subject Erforderlich

Eindeutige Kennung für den authentifizierenden Nutzer.

Das zugrunde liegende IdP-Attribut, das zum Ausfüllen von google.subject verwendet wird, muss sowohl in der Anbieterzuordnung (--attribute-mapping) als auch im SCIM-Mandanten (--claim-mapping) identisch sein. Wenn diese Zuordnungen nicht konsistent sind, können sich Nutzer möglicherweise anmelden, werden aber nicht als Mitglieder von über SCIM bereitgestellten Gruppen erkannt.

Beschränkt auf die folgenden Basis-Ausdrücke (oder mit .lowerAscii()):
  • user.externalId
  • user.userName
  • user.emails[0].value

Maximale Länge: 127 Byte.

Hinweis: Diese Zuordnung kann nach dem Erstellen des SCIM-Mandanten nicht mehr geändert werden. Wenn Sie sie aktualisieren möchten, müssen Sie den SCIM-Mandanten endgültig löschen und neu erstellen.

google.group Obligatorisch für SCIM-Gruppen Eindeutige Kennung für die Gruppenmitgliedschaft, die über SCIM synchronisiert wird. Beschränkt auf die folgenden Basis-Ausdrücke (oder mit .lowerAscii()):
  • group.externalId
  • group.displayName

Hinweis: Diese Zuordnung kann nach dem Erstellen des SCIM-Mandanten nicht mehr geändert werden. Wenn Sie sie aktualisieren möchten, müssen Sie den SCIM-Mandanten endgültig löschen und neu erstellen.

google.display_name Optional Ein Attribut, mit dem der Name des angemeldeten Nutzers in der Google Cloud Console festgelegt wird. Es kann nicht in IAM-Zulassungsrichtlinien verwendet werden. Wird einem Stringattribut zugeordnet (z. B. user.displayName oder user.name.formatted). Maximale Länge: 100 Byte.
google.profile_photo Optional Eine URL des Miniaturansichtsfotos des Nutzers, das in der Google Cloud Console als Profilbild angezeigt wird. Es kann nicht in IAM-Zulassungsrichtlinien verwendet werden. Muss zu einem gültigen URL-String ausgewertet werden (z. B. user.photos.filter(p, p.type == 'thumbnail')[0].value oder user.photos[0].value).
google.email Optional Ein Attribut, mit dem E-Mail-Adressen vom IdP Produkten zugeordnet werden, die über die OAuth-Clientintegration der Mitarbeiteridentitätsföderation eingebunden sind. Es kann nicht in IAM-Zulassungsrichtlinien verwendet werden. Wird einem E-Mail-Attribut zugeordnet (z. B. user.emails.filter(e, e.type == 'work')[0].value oder user.emails[0].value).
google.posix_username Optional Ein eindeutiger POSIX-konformer Nutzernamensstring, der für SSH im Browser und OS Login mit der Workforce Identity-Föderation verwendet wird. Dieses Attribut kann nicht in IAM-Zulassungsrichtlinien verwendet werden. Die maximale Länge beträgt 32 Zeichen.
attribute.KEY Optional

Benutzerdefinierte Attribute von Ihrem IdP, mit denen Sie Ihre Autorisierungsstrategie in einer IAM-Zulassungsrichtlinie definieren können. Ersetzen Sie KEY durch den gewünschten Attributnamen.

Sie können beispielsweise ein benutzerdefiniertes Attribut wie costcenter = "1234" definieren und mit principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.costcenter/1234 darauf verweisen. Wenn Sie Zugriff auf diese Hauptkontokennung gewähren, erhalten alle Identitäten, die im IdP mit dieser Kostenstelle konfiguriert sind, Zugriff.

Bis zu 50 benutzerdefinierte Attributzuordnungsregeln. Maximale Größe pro Regel: 256 Zeichen.

Beispielzuordnungen für die Subjektkonsistenz

Wie unter Unterstützte Attribute für die Anspruchszuordnung beschrieben, muss das zugrunde liegende IdP-Attribut, das zum Ausfüllen von google.subject verwendet wird, sowohl in der Anbieterzuordnung (--attribute-mapping) als auch im SCIM-Mandanten (--claim-mapping) identisch sein. Die folgende Tabelle enthält Referenzbeispiele für Okta:

Google-Attribut Anbieterzuordnung für Mitarbeiteridentitätspool SCIM-Mandantenzuordnung
google.subject assertion.sub user.externalId
google.subject assertion.subject user.userName
google.subject assertion.subject.lowerAscii() user.userName.lowerAscii()
google.subject assertion.preferred_username user.userName
google.subject assertion.preferred_username.lowerAscii() user.userName.lowerAscii()
google.subject assertion.email user.emails[0].value
google.subject assertion.email.lowerAscii() user.emails[0].value.lowerAscii()

SCIM-Synchronisierung überprüfen

Nachdem Sie SCIM konfiguriert haben, können Sie mit curl den IAM-SCIM-Dienstendpunkt (iamscim.googleapis.com) abfragen und prüfen, ob Nutzer und Gruppen mit Google Cloudsynchronisiert werden. Für diese Befehle sind ein gültiges SCIM-Token und Ihre SCIM-Mandanten-UID erforderlich. Der iamscim.googleapis.com-Dienst implementiert das SCIM 2.0-Protokoll (RFC 7644). Weitere Informationen zu unterstützten Endpunkten, Abfragefiltern und Einschränkungen finden Sie unter Unterstützte und nicht unterstützte Endpunkte und Einschränkungen von Protokollfunktionen.

Nutzersynchronisierung überprüfen

Wenn Sie prüfen möchten, ob ein Nutzer korrekt synchronisiert wurde, suchen Sie mit dem folgenden Filter nach der userName des Nutzers:

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users?filter=userName%20eq%20%22USER_NAME%22"

Beispielantwort:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "USER_ID",
      "userName": "USER_NAME",
      ...
    }
  ]
}

Gruppensynchronisierung prüfen

Wenn Sie prüfen möchten, ob eine Gruppe korrekt synchronisiert wurde, suchen Sie mit dem folgenden Filter nach der displayName der Gruppe:

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=displayName%20eq%20%22GROUP_NAME%22"

Beispielantwort:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

Gruppenmitgliedschaft bestätigen

Wenn Sie prüfen möchten, ob ein bestimmter Nutzer Mitglied einer Gruppe ist, verwenden Sie einen Filter, der sowohl die Gruppen-ID als auch die Nutzer-ID angibt.

curl -H "Authorization: Bearer SCIM_TOKEN" \
  "https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Groups?filter=id%20eq%20%22GROUP_ID%22%20and%20members%20eq%20%22USER_ID%22"

Beispielantwort, wenn der Nutzer ein Mitglied ist:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 1,
  "Resources": [
    {
      "id": "GROUP_ID",
      "displayName": "GROUP_NAME",
      ...
    }
  ]
}

Beispielantwort, wenn der Nutzer kein Abonnent ist:

{
  "schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
  "totalResults": 0,
  "Resources": []
}

Hinweis: Um die GROUP_ID und die USER_ID zu erhalten, suchen Sie zuerst die Gruppe und den Nutzer mit den Filtern displayName und userName. Die IDs werden im Feld id der Antwort zurückgegeben. Ersetzen Sie SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID und USER_ID durch Ihre tatsächlichen Werte.

Löschen eines SCIM-Mandanten erzwingen

So erzwingen Sie das Löschen eines SCIM-Mandanten:

  1. Wenn --scim-usage=enabled-for-groups oder --scim-usage=enabled-for-users-groups für Ihren Anbieter festgelegt ist, deaktivieren Sie die Option in der Anbieterkonfiguration:

    OIDC

    gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --location=global \
        --scim-usage=SCIM_USAGE_UNSPECIFIED
    

    Ersetzen Sie Folgendes:

    • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
    • WORKFORCE_POOL_ID: die ID des Workforce-Pools

    SAML

    gcloud iam workforce-pools providers update-saml PROVIDER_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --location=global \
        --scim-usage=SCIM_USAGE_UNSPECIFIED
    

    Ersetzen Sie Folgendes:

    • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
    • WORKFORCE_POOL_ID: die ID des Workforce-Pools

  2. Löschen Sie den SCIM-Mandanten:
    gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \
        --workforce-pool=WORKFORCE_POOL_ID \
        --provider=PROVIDER_ID \
        --hard-delete \
        --location=global
    

    Ersetzen Sie Folgendes:

    • SCIM_TENANT_ID: die ID des zu löschenden SCIM-Mandanten
    • WORKFORCE_POOL_ID: die ID des Workforce-Pools
    • PROVIDER_ID: die ID des Anbieters des Workforce Identity-Pools
    Weitere Informationen zu SCIM, einschließlich des Löschens von SCIM-Mandanten, finden Sie unter SCIM-Unterstützung.

Nächste Schritte