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 Mappatura delle attestazioni.
Assicurati che il tuo IdP fornisca valori univoci e non vuoti per gli attributi mappati a
google.subject e google.group. La sincronizzazione dei valori
duplicati non va a buon fine e restituisce un errore HTTP 409 Conflict, mentre i valori null o vuoti
non vanno a buon fine e restituiscono un errore HTTP 400 Bad Request. Per saperne di più, consulta Supporto SCIM.
Per configurare System for Cross-domain Identity Management (SCIM):
- Configurare un tenant e un token SCIM in Google Cloud
- Configurare SCIM in Microsoft Entra ID
- Aggiorna il provider per abilitare SCIM
- Verificare la sincronizzazione SCIM
Configura un tenant e un token SCIM in Google Cloud
Per configurare un tenant SCIM in Google Cloud:
-
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 creato in precedenza in questo documento.PROVIDER_ID: l'ID del fornitore del pool di identità della forza lavoro 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 separato da virgole di mappature degli attributi. Per l'elenco esteso degli attributi di mappatura, consulta Mappatura delle attestazioni. Il seguente mapping è consigliato per Gemini Enterprise:google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalIdL'attributo
google.subjectche mappi nel tenant SCIM deve fare riferimento in modo univoco alle stesse identità mappate nell'attributogoogle.subjectnel provider del pool di identità della forza lavoro utilizzando il flag--attribute-mapping. Una volta creato il tenant SCIM, non puoi aggiornare la mappatura delle attestazioni. Per sostituirlo, puoi eliminare definitivamente il tenant SCIM e crearne immediatamente uno nuovo. Per scoprire di più sulle considerazioni per l'utilizzo di SCIM, consulta Supporto SCIM.
-
Al termine del comando, procedi nel seguente modo:
-
Nel campo
baseUridell'output, salva l'intero URI, formattato comehttps://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Devi fornire questo URI al tuo IdP. -
Inoltre, dall'URI salva solo
SCIM_TENANT_UID. Hai bisogno di questo UID per impostare un criterio IAM di autorizzazione sul tenant SCIM più avanti in questo documento.
-
Nel campo
-
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 globalSostituisci quanto segue:
SCIM_TOKEN_ID: un ID per il token SCIMDISPLAY_NAME: il nome visualizzato del token SCIMWORKFORCE_POOL_ID: l'ID del pool di forza lavoroSCIM_TENANT_ID: l'ID del tenant SCIMPROVIDER_ID: l'ID del provider del pool di identità della forza lavoro
-
Al termine del comando
gcloud iam workforce-pools providers scim-tenants tokens create, procedi nel seguente modo:-
Nell'output, salva il valore di
SCIM_TOKENnel camposecurityToken. Devi fornire questo token di sicurezza al tuo IdP. Il token di sicurezza viene visualizzato solo in questo output e, se lo perdi, devi crearne uno nuovo. -
Per verificare se
SCIM_TOKENviene rifiutato dalla policy dell'organizzazione, esegui questo comando:curl -v -H "Authorization: Bearer SCIM_TOKEN" https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID/Users
Se il comando non va a buon fine e viene visualizzato 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.
-
-
Imposta una policy di autorizzazione IAM sul tenant e sul token SCIM. Se il comando
curlin un passaggio precedente non è andato a buon fine a causa di un errore relativo alle autorizzazioni, devi eseguire il seguente comando:gcloud organizations add-iam-policy-binding ORGANIZATION_ID \ --member=serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/iam.scimSyncerSostituisci quanto segue:
- ORGANIZATION_ID: l'ID dell'organizzazione.
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio. L'indirizzo email è nel 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 nel tuo IdP, assicurati che il nome visualizzato di ogni gruppo, come fornito nel campo displayName, sia univoco all'interno di un tenant SCIM. Per saperne di più sui gruppi e su
SCIM in Microsoft Entra ID, consulta
Gruppi.
Configurare SCIM in Microsoft Entra ID
Per configurare SCIM in Microsoft Entra ID:
- Apri il portale Azure e accedi come utente con privilegi di amministratore globale.
- Seleziona Microsoft Entra ID > Enterprise Apps.
- Fai clic su Nuova applicazione.
- In Sfoglia la raccolta di app Microsoft Entra, fai clic su Crea la tua applicazione.
-
Nel riquadro Crea la tua applicazione visualizzato, procedi nel seguente modo:
- In Qual è il nome della tua app?, inserisci il nome dell'app.
- Seleziona Integra qualsiasi altra applicazione che non trovi nella galleria (non galleria).
- Per creare l'app, fai clic su Crea.
-
Nella tua applicazione, procedi nel seguente modo:
- Nella sezione Gestisci, fai clic su Provisioning.
- Nel riquadro a destra visualizzato, fai clic su Nuova configurazione.
-
In Admin Credentials (Credenziali amministratore), nel campo Tenant URL (URL tenant), inserisci l'URL SCIM ottenuto durante la creazione del tenant SCIM, a cui è stato aggiunto
?aadOptscim062020. Devi aggiungere?aadOptscim062020alla fine dell'URI di base.Questo parametro di query è richiesto da Microsoft Entra ID per garantire che le richieste SCIM PATCH siano conformi agli standard SCIM RFC. Per maggiori dettagli, consulta la documentazione di Microsoft.
L'URL tenant finale in Microsoft Entra ID deve avere il seguente formato:
https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID?aadOptscim062020
Sostituisci
SCIM_TENANT_UIDcon l'UID tenant SCIM. - In Secret token (Token segreto), inserisci il token segreto che hai ottenuto quando hai creato il token SCIM.
- Per testare la configurazione SCIM con la federazione delle identità per la forza lavoro, fai clic su Prova connessione.
- Per salvare la configurazione, fai clic su Crea.
-
Nella sezione Gestisci, segui questi passaggi:
- Fai clic su Mappatura attributi.
- Fai clic su Provisioning utenti Microsoft Entra ID.
-
Nella pagina Mappatura attributi:
-
Nella tabella Mappature attributi, trova la riga relativa a externalId e fai clic su Modifica in quella riga.
Nella pagina Modifica attributi, segui questi passaggi:
-
Nell'elenco a discesa Attributo origine, seleziona
objectId. - Fai clic su Ok.
-
Nell'elenco a discesa Attributo origine, seleziona
- Per salvare la mappatura degli attributi, fai clic su Salva.
-
Nella tabella Mappature attributi, trova la riga relativa a externalId e fai clic su Modifica in quella riga.
Nella pagina Modifica attributi, segui questi passaggi:
Aggiorna il provider per abilitare SCIM
Per abilitare SCIM per un provider, imposta il flag --scim-usage in base al target del prodotto:
-
Attivato per i gruppi (
enabled-for-groups): utilizzato per Gemini Enterprise. Utilizza i gruppi sincronizzati con SCIM per l'autorizzazione IAM e la valutazione delle policy. Gli attributi utente continuano a essere ricavati dai token di accesso IdP. -
Attivato per utenti e gruppi (
enabled-for-users-groups): utilizzato per Looker (anteprima). Utilizza i dati di utenti e gruppi sincronizzati con SCIM come origine principale delle rivendicazioni per i workflow di autorizzazione IAM e accesso OAuth.
Abilitare SCIM per i gruppi (Gemini Enterprise)
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 del pool di identità della forza lavoroWORKFORCE_POOL_ID: l'ID del pool di forza lavoroLOCATION: la posizione 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 del pool di identità della forza lavoroWORKFORCE_POOL_ID: l'ID del pool di forza lavoroLOCATION: la posizione del pool di forza lavoro
Abilita SCIM per utenti e gruppi (Looker) (anteprima)
OIDC
gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
--workforce-pool=WORKFORCE_POOL_ID \
--location=LOCATION \
--scim-usage=enabled-for-users-groups
Sostituisci quanto segue:
PROVIDER_ID: l'ID del provider del pool di identità della forza lavoroWORKFORCE_POOL_ID: l'ID del pool di forza lavoroLOCATION: la posizione 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-users-groups
Sostituisci quanto segue:
PROVIDER_ID: l'ID del provider del pool di identità della forza lavoroWORKFORCE_POOL_ID: l'ID del pool di forza lavoroLOCATION: la posizione del pool di forza lavoro
Per verificare la sincronizzazione SCIM, vedi Verificare la sincronizzazione SCIM.
Mappatura delle attestazioni
Quando configuri SCIM, definisci le mappature delle attestazioni (--claim-mapping) nel tenant SCIM per mappare gli attributi utente e di gruppo SCIM agli attributi Google.
Attributi Google Cloud supportati per la mappatura delle attestazioni
La seguente tabella elenca gli attributi Google Cloud che puoi mappare nel tuo tenant SCIM (--claim-mapping) utilizzando Common Expression Language (CEL):
| AttributoGoogle Cloud | Requisito | Descrizione | Espressioni supportate e limiti |
|---|---|---|---|
google.subject |
Obbligatorio |
Identificatore univoco dell'utente che esegue l'autenticazione. L'attributo IdP sottostante utilizzato per compilare |
Limitato alle seguenti espressioni di base (o con .lowerAscii()):
Lunghezza massima: 127 byte. Nota:questa mappatura è immutabile una volta creato il tenant SCIM. Per aggiornarla, devi eliminare definitivamente e ricreare il tenant SCIM. |
google.group |
Obbligatorio per i gruppi SCIM | Identificatore univoco per l'iscrizione al gruppo sincronizzata utilizzando SCIM. | Limitato alle seguenti espressioni di base (o con .lowerAscii()):
Nota:questa mappatura è immutabile una volta creato il tenant SCIM. Per aggiornarla, devi eliminare definitivamente e ricreare il tenant SCIM. |
google.display_name |
Facoltativo | Un attributo che imposta il nome dell'utente che ha eseguito l'accesso nella console Google Cloud . Non può essere utilizzato nelle policy di autorizzazione IAM. | Corrisponde a un attributo stringa (ad esempio user.displayName o user.name.formatted). Lunghezza massima: 100 byte. |
google.profile_photo |
Facoltativo | Un URL della foto in miniatura dell'utente visibile come immagine del profilo nella console Google Cloud . Non può essere utilizzato nelle policy di autorizzazione IAM. | Deve restituire una stringa URL valida (ad esempio user.photos.filter(p, p.type == 'thumbnail')[0].value o user.photos[0].value). |
google.email |
Facoltativo | Un attributo utilizzato per mappare gli indirizzi email dall'IdP ai prodotti integrati utilizzando l'integrazione del client OAuth della federazione delle identità per la forza lavoro. Non può essere utilizzato nelle policy di autorizzazione IAM. | Corrisponde a un attributo email (ad esempio user.emails.filter(e, e.type == 'work')[0].value o user.emails[0].value). |
google.posix_username |
Facoltativo | Una stringa del nome utente univoca e conforme a POSIX utilizzata per SSH nel browser e OS Login con la federazione delle identità per la forza lavoro. Questo attributo non può essere utilizzato nei criteri di autorizzazione IAM. | La lunghezza massima è di 32 caratteri. |
attribute.KEY |
Facoltativo |
Attributi personalizzati dell'IdP che puoi utilizzare per definire la strategia di autorizzazione in una policy di autorizzazione IAM. Sostituisci KEY con il nome dell'attributo che vuoi utilizzare. Ad esempio, puoi definire un attributo personalizzato come |
Fino a 50 regole di mappatura degli attributi personalizzati. Dimensione massima per regola: 256 caratteri. |
Esempi di mappature per la coerenza dell'oggetto
Come descritto in Attributi supportati per la mappatura delle attestazioni,
l'attributo IdP sottostante utilizzato per compilare google.subject deve essere identico sia nella
mappatura del provider (--attribute-mapping) sia nel tenant SCIM (--claim-mapping).
La seguente tabella mostra esempi di riferimento per Microsoft Entra ID:
| Attributo Google | Mapping del provider di pool di identità della forza lavoro | Mappatura tenant SCIM |
|---|---|---|
google.subject |
assertion.oid |
user.externalId |
google.subject |
assertion.attributes['http://schemas.microsoft.com/identity/claims/objectidentifier'][0] |
user.externalId |
google.subject |
assertion.email |
user.emails[0].value |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0] |
user.emails[0].value |
google.subject |
assertion.email.lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0].lowerAscii() |
user.emails[0].value.lowerAscii() |
google.subject |
assertion.preferred_username |
user.userName |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0] |
user.userName |
google.subject |
assertion.preferred_username.lowerAscii() |
user.userName.lowerAscii() |
google.subject |
assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'][0].lowerAscii() |
user.userName.lowerAscii() |
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 suo userName 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 è un abbonato:
{
"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 è abbonato:
{
"schemas": ["urn:ietf:params:scim:api:messages:2.0:ListResponse"],
"totalResults": 0,
"Resources": []
}
Nota:per ottenere GROUP_ID e USER_ID, trova prima 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 tuoi valori effettivi.
Forzare l'eliminazione di un tenant SCIM
Per forzare l'eliminazione di un tenant SCIM:
- Se per il tuo provider è impostato
--scim-usage=enabled-for-groupso--scim-usage=enabled-for-users-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_UNSPECIFIEDSostituisci quanto segue:
PROVIDER_ID: l'ID del provider del pool di identità della forza lavoroWORKFORCE_POOL_ID: l'ID del pool di forza lavoroLOCATION: la posizione del pool di forza lavoro
- 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=globalSostituisci quanto segue:
SCIM_TENANT_ID: l'ID del tenant SCIM da eliminareWORKFORCE_POOL_ID: l'ID del pool di forza lavoroPROVIDER_ID: l'ID del provider del pool di identità della forza lavoro
Passaggi successivi
- Risolvere i problemi di provisioning SCIM
- Eliminare gli utenti della federazione delle identità per la forza lavoro e i relativi dati
- Scopri quali Google Cloud prodotti supportano la federazione delle identità della forza lavoro
- Configurare l'accesso degli utenti alla console (federato)