Configura SCIM in OIDC o IdP SAML

Questo documento descrive come configurare un tenant SCIM in un pool di identità della forza lavoro. Per saperne di più su SCIM, consulta Provisioning SCIM per la federazione delle identità per la forza lavoro.

Ogni pool di identità della forza lavoro supporta un solo tenant SCIM. Per configurare un nuovo tenant SCIM in un pool che ne ha già uno, devi prima eliminare definitivamente il tenant esistente.

Il flag --claim-mapping per un tenant SCIM può contenere solo espressioni Common Expression Language (CEL) specifiche. Per scoprire quali espressioni sono supportate, consulta Mappare token e attributi SCIM.

Per configurare System for Cross-domain Identity Management (SCIM):
  1. Configura un tenant SCIM e un token in Google Cloud
  2. Configura SCIM in un IdP OIDC o SAML
  3. Aggiorna il provider per abilitare SCIM
  4. Verifica la sincronizzazione SCIM

Configura un tenant SCIM e un token in Google Cloud

Per configurare un tenant SCIM in Google Cloud:

  1. Crea un tenant SCIM.

        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"
        

    Sostituisci quanto segue:

    • SCIM_TENANT_ID: un ID per il tenant SCIM.
    • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro che hai creato in precedenza in questo documento.
    • PROVIDER_ID: l'ID del provider di pool di identità della forza lavoro che hai creato in precedenza in questo documento.
    • SCIM_TENANT_DISPLAY_NAME: un nome visualizzato per il tenant SCIM.
    • SCIM_TENANT_DESCRIPTION: una descrizione per il tenant SCIM.
    • CLAIM_MAPPING: un elenco di mapping degli attributi separati da virgole. Per l'elenco esteso degli attributi di mapping, consulta Mappare token e attributi SCIM. Il seguente mapping è consigliato per Gemini Enterprise:
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalId

      L'attributo google.subject che mappi nel tenant SCIM deve fare riferimento in modo univoco alle stesse identità mappate nell'attributo google.subject nel provider di pool di identità della forza lavoro utilizzando il flag --attribute-mapping. Dopo aver creato il tenant SCIM, non puoi aggiornare il mapping delle attestazioni. Per sostituirlo, puoi eliminare definitivamente il tenant SCIM e crearne immediatamente uno nuovo. Per saperne di più sulle considerazioni relative all'utilizzo di SCIM, consulta Supporto SCIM.

  2. Al termine del comando:

    1. Nel campo baseUri dell'output, salva l'intero URI, formattato come https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Devi fornire questo URI all'IdP.
    2. Inoltre, dall'URI salva solo SCIM_TENANT_UID. Avrai bisogno di questo UID per impostare un criterio di autorizzazione IAM sul tenant SCIM più avanti in questo documento.
  3. Crea un token SCIM:

        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
        

    Sostituisci quanto segue:

    • SCIM_TOKEN_ID: un ID per il token SCIM
    • DISPLAY_NAME: il nome visualizzato del token SCIM
    • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro
    • SCIM_TENANT_ID: l'ID del tenant SCIM
    • PROVIDER_ID: l'ID del provider di pool di identità della forza lavoro
  4. Al termine del comando gcloud iam workforce-pools providers scim-tenants tokens create:

    1. Nell'output, salva il valore di SCIM_TOKEN nel securityToken campo. Devi fornire questo token di sicurezza all'IdP. Il token di sicurezza viene visualizzato solo in questo output, e se lo perdi, devi creare un nuovo token SCIM.

    2. Per verificare se SCIM_TOKEN viene rifiutato dal tuo criterio dell'organizzazione, esegui il comando seguente:

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

      Se il comando non riesce a causa di un errore relativo alle autorizzazioni, esegui gcloud organizations add-iam-policy-binding, descritto in un passaggio successivo. Se il comando ha esito positivo, puoi saltare questo passaggio.

  5. Imposta un criterio di autorizzazione IAM sul tenant e sul token SCIM. Se il comando curl in un passaggio precedente non è riuscito a causa di un errore relativo alle autorizzazioni, devi eseguire il comando seguente:

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

    Sostituisci quanto segue:

    • ORGANIZATION_ID: l'ID dell'organizzazione.
    • SERVICE_AGENT_EMAIL: l'indirizzo email del service agent. L'indirizzo email ha il seguente formato: o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. SCIM_TENANT_UID viene restituito quando crei il tenant SCIM.

Quando esegui il provisioning dei gruppi nell'IdP, assicurati che il nome visualizzato di ogni gruppo, come indicato in nel displayName campo, sia univoco all'interno di un tenant SCIM. Per saperne di più sui gruppi e su SCIM in Microsoft Entra ID, consulta Gruppi.

Configura SCIM nell'IdP OIDC o SAML

Nell'IdP, configura SCIM come descritto nella documentazione dell'IdP. Utilizza l'URL SCIM e il token SCIM ottenuti nel passaggio precedente.

Aggiorna il provider per abilitare SCIM

Per abilitare SCIM per un provider:

OIDC

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

Sostituisci quanto segue:

  • PROVIDER_ID: l'ID del provider di pool di identità della forza lavoro
  • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro
  • LOCATION: la località del pool di forza lavoro

SAML

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

Sostituisci quanto segue:

  • PROVIDER_ID: l'ID del provider di pool di identità della forza lavoro
  • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro
  • LOCATION: la località del pool di forza lavoro

Per verificare la sincronizzazione SCIM, consulta Verificare la sincronizzazione SCIM.

Mappare token e attributi SCIM

Devi mappare gli attributi in modo coerente, sia nel provider di pool di identità della forza lavoro sia nel tenant SCIM configurato per il provider. Per il provider di pool di identità della forza lavoro, utilizzi il flag --attribute-mapping, mentre per il tenant SCIM utilizzi il flag --claim-mapping. L'attributo IdP mappato a google.subject per gli utenti deve fare riferimento in modo univoco alla stessa identità, sia che sia definita in un token sia in un mapping SCIM. Per saperne di più sulla mappatura degli attributi quando utilizzi SCIM, consulta la sezione Supporto SCIM. La tabella seguente mostra come mappare gli attributi nelle attestazioni dei token e negli attributi SCIM:

Attributo Google Mapping del provider di pool di identità della forza lavoro Mapping del tenant SCIM
google.subject assertion.sub user.externalId
google.group assicurati di aggiornare il provider con --scim-usage=enabled-for-groups N/A group.externalId

Verificare la sincronizzazione SCIM

Dopo aver configurato SCIM, puoi utilizzare curl per verificare che utenti e gruppi vengano sincronizzati correttamente con Google Cloud. Questi comandi richiedono un token SCIM valido e l'ID tenant SCIM.

Verificare la sincronizzazione degli utenti

Per verificare che un utente sia stato sincronizzato correttamente, cerca il userName dell'utente utilizzando il seguente filtro:

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

Esempio di risposta:

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

Verificare la sincronizzazione dei gruppi

Per verificare che un gruppo sia stato sincronizzato correttamente, cerca il displayName del gruppo utilizzando il seguente filtro:

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

Esempio di risposta:

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

Verificare l'iscrizione al gruppo

Per verificare se un utente specifico è membro di un gruppo, utilizza un filtro che specifichi sia l'ID gruppo sia l'ID utente.

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"

Esempio di risposta se l'utente è membro:

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

Esempio di risposta se l'utente non è membro:

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

Nota: per ottenere GROUP_ID e USER_ID, devi prima trovare il gruppo e l'utente utilizzando i filtri displayName e userName. Gli ID vengono restituiti nel campo id della risposta. Sostituisci SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID e USER_ID con i valori effettivi.

Eliminare forzatamente un tenant SCIM

Per eliminare forzatamente un tenant SCIM:

  1. Se per il provider è impostato --scim-usage=enabled-for-groups, disattivalo dalla configurazione del provider:
              gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
                  --workforce-pool=WORKFORCE_POOL_ID \
                  --location=LOCATION \
                  --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    Sostituisci quanto segue:

    • PROVIDER_ID: l'ID del provider di pool di identità della forza lavoro
    • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro
    • LOCATION: la località del pool di forza lavoro

  2. Elimina il tenant SCIM:
      gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --provider=PROVIDER_ID \
          --hard-delete \
          --location=global
    

    Sostituisci quanto segue:

    • SCIM_TENANT_ID: l'ID del tenant SCIM da eliminare
    • WORKFORCE_POOL_ID: l'ID del pool di forza lavoro
    • PROVIDER_ID: l'ID del provider di pool di identità della forza lavoro
    Per saperne di più su SCIM, inclusa l'eliminazione dei tenant SCIM, consulta Supporto SCIM.

Passaggi successivi