Provisioning SCIM per la federazione delle identità per la forza lavoro

Se il tuo provider di identità (IdP) supporta il System for Cross-domain Identity Management (SCIM), puoi configurare l'IdP per eseguire il provisioning e gestire i gruppi in Google Cloud.

Funzionalità

Il supporto SCIM per la federazione delle identità per la forza lavoro offre le seguenti funzionalità:

  • Sincronizzazione delle identità: sincronizza le copie di sola lettura dei dati utente dal tuo IdP per ottenere una visione olistica delle proprietà e delle appartenenze degli utenti in Google Cloud.

  • Appiattimento dei gruppi: SCIM elabora i gruppi dal tuo IdP in modo che tutte le appartenenze dirette e indirette (nidificate) di un utente vengano appiattite e sincronizzate con il Google Cloud servizio di appartenenza ai gruppi (GMS). IAM utilizza quindi questi gruppi appiattiti per i controlli dei criteri, superando i vincoli di dimensione spesso presenti nei token IdP.

  • Integrazione di Gemini Enterprise: i tenant SCIM supportano la condivisione in Gemini Enterprise. Il tenant SCIM abilita due funzionalità correlate alla condivisione dei notebook in NotebookLM Enterprise:

    • Completamento automatico per indirizzi email e gruppi

    • L'utilizzo del nome del gruppo anziché del relativo ID oggetto (UUID)

    Per saperne di più, vedi Condividere un notebook con un gruppo.

Considerazioni

Quando utilizzi il supporto SCIM per la federazione delle identità per la forza lavoro, tieni presente quanto segue:

  • Prima di configurare un tenant SCIM, devi configurare un provider e un pool di identità per la forza lavoro.
  • Ogni pool di identità per la forza lavoro supporta un solo tenant SCIM. Poiché un tenant SCIM viene creato in un provider di pool di identità per la forza lavoro specifico, solo questo provider può utilizzare SCIM per i gruppi. Non puoi attivare l'utilizzo di SCIM (--scim-usage=enabled-for-groups o --scim-usage=enabled-for-users-groups) su nessun altro provider nello stesso pool. Per configurare un nuovo tenant SCIM nello stesso pool di identità per la forza lavoro, devi prima eliminare quello esistente. Per eliminare un tenant SCIM, utilizza uno dei seguenti metodi:
    • Eliminazione temporanea (impostazione predefinita): l'eliminazione di un tenant SCIM avvia un periodo di eliminazione temporanea di 30 giorni. Durante questo periodo, il tenant è nascosto e non può essere utilizzato e non puoi creare un nuovo tenant SCIM nello stesso pool di identità per la forza lavoro.
    • Eliminazione definitiva: per eliminare in modo permanente e immediato un tenant SCIM, utilizza il flag --hard-delete con il comando delete. Questa azione è irreversibile e ti consente di creare immediatamente un nuovo tenant SCIM nello stesso pool di identità per la forza lavoro dopo il completamento dell'eliminazione. In alternativa, puoi creare un nuovo pool di identità per la forza lavoro e un nuovo tenant SCIM oppure utilizzare un pool di identità per la forza lavoro che non è stato configurato in precedenza con un tenant SCIM.
  • Quando utilizzi SCIM, esegui il mapping degli attributi sia nel provider del pool di identità per la forza lavoro sia nel tenant SCIM. L'attributo google.subject deve fare riferimento in modo univoco alle stesse identità. Specifichi google.subject nel provider del pool di identità per la forza lavoro utilizzando il flag --attribute-mapping e nel tenant SCIM utilizzando il flag --claim-mapping. Il mapping di valori di identità non univoci può far sì che vengano trattate identità IdP diverse Google Cloud come la stessa identità. Di conseguenza, l'accesso concesso a un'identità utente o di gruppo può estendersi ad altre, ma la revoca dell'accesso da una potrebbe non rimuoverlo da tutte.
  • Per utilizzare SCIM per mappare i gruppi, imposta --scim-usage=enabled-for-groups (o --scim-usage=enabled-for-users-groups) sul provider del pool di identità per la forza lavoro a cui è collegato il tenant SCIM. Quando esegui il mapping dei gruppi utilizzando SCIM, qualsiasi mappatura dei gruppi definita in quel provider viene ignorata a favore dei gruppi gestiti da SCIM. Quando fai riferimento ai gruppi gestiti da SCIM, l'attributo mappato è google.group, non google.groups. google.groups si riferisce solo ai gruppi mappati con i token. Se attivi l'utilizzo di SCIM su un provider che non ha un tenant SCIM collegato, i tentativi di accesso tramite quel provider non vanno a buon fine in fase di runtime perché Google Cloud non riesce a trovare un tenant SCIM nel percorso del provider.
  • Applicazione dell'unicità: Google Cloud convalida e applica l'unicità degli attributi mappati a google.subject (utenti) e google.group (gruppi) in un tenant SCIM. Se gli attributi mappati di cui è stato eseguito il provisioning dall'IdP generano valori duplicati per google.subject o google.group durante la sincronizzazione, il provisioning non va a buon fine e viene restituito un errore HTTP 409 Conflict. Se un attributo mappato restituisce un valore nullo o vuoto, il provisioning non va a buon fine e viene restituito un errore HTTP 400 Bad Request.
  • Quando utilizzi SCIM, gli attributi basati su token mappati con --attribute-mapping possono comunque essere utilizzati per l'autenticazione e negli identificatori principali.
  • Per la configurazione di Microsoft Entra ID, utilizza SCIM per attivare i nomi dei gruppi leggibili in Gemini Enterprise.
  • L'API SCIM (iamscim.googleapis.com) è soggetta a quote di frequenza diverse dalle quote API delle risorse IAM standard. Per impostazione predefinita, le richieste di scrittura e lettura sono limitate a 3000 richieste al minuto per tenant SCIM per organizzazione. Per saperne di più, consulta Quote e limiti.

Mapping dei provider OIDC e SAML alla configurazione SCIM

Deve esserci coerenza tra la mappatura degli attributi nella configurazione del provider del pool di identità per la forza lavoro (--attribute-mapping) e i mapping delle attestazioni nel tenant SCIM (--claim-mapping). L'attributo IdP sottostante utilizzato per popolare google.subject (per gli utenti) deve essere lo stesso, sia che venga letto da un'attestazione del token sia da un attributo SCIM.

Se questi mapping non sono coerenti, gli utenti potrebbero essere in grado di accedere, ma non verranno riconosciuti come membri dei gruppi di cui è stato eseguito il provisioning SCIM. Ad esempio, se il provider utilizza assertion.email per google.subject, anche il tenant SCIM deve utilizzare l'attributo SCIM equivalente (ad esempio, user.emails[0].value) per google.subject.

La seguente tabella mostra i mapping tra gli attributi delle attestazioni dei token e gli attributi SCIM:

Attributo Google Mapping del provider del pool di identità per la forza lavoro Mapping del tenant SCIM (SCIM)
google.subject assertion.oid (EntraId) user.externalId
google.subject assertion.sub (Okta) user.externalId
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()
google.group N/D (mappato utilizzando SCIM) group.externalId

Endpoint supportati e non supportati

Sono supportati i seguenti endpoint del protocollo SCIM standard:

  • /Users: gestisci le risorse utente. Operazioni supportate: Create, Get, Update, Delete, Patch e Put.

  • /Groups: gestisci le risorse di gruppo. Operazioni supportate: Create, Get, Update, Delete e Patch. Il metodo PUT non è supportato per i gruppi.

  • /Schemas: recupera le informazioni sullo schema.

  • /ServiceProviderConfig: recupera la configurazione del fornitore di servizi.

I seguenti endpoint del protocollo SCIM non sono supportati:

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

Limitazioni

Le seguenti sezioni descrivono le limitazioni e le deviazioni dell'implementazione SCIM della federazione delle identità per la forza lavoro rispetto alle specifiche SCIM (RFC 7643 e 7644).

Limitazioni delle funzionalità del protocollo

  • Supporto dei filtri: quando elenchi utenti o gruppi utilizzando gli endpoint /Users o /Groups, le espressioni di filtro supportano solo l'operatore eq (uguale a). Puoi combinare più filtri eq con and. Altri operatori di filtro SCIM, come co (contiene) o sw (inizia con), non sono supportati.

  • Paginazione: l'API SCIM IAM non supporta la paginazione standard per l'elenco di utenti o gruppi.

    • startIndex: questo parametro è sempre 1. L'API restituisce fino a 100 risultati indipendentemente dal valore fornito per startIndex.

    • itemsPerPage: il numero massimo di risorse restituite in una singola risposta è 100.

    • totalResults: l'API non restituisce il conteggio totale effettivo delle risorse corrispondenti. Il campo totalResults nella risposta è sempre uguale al numero di elementi restituiti nella risposta, con un massimo di 100.

  • Get Group e List Groups senza filtro: le API GetGroup e ListGroups restituiscono un elenco di membri vuoto. Per recuperare i membri di un gruppo specifico, utilizza l'API ListGroups con un filtro dei membri.

  • Risposta JSON non conforme con token non validi: le API che contengono un token API non valido generano un 401 HTTP error da Google Cloud. La risposta non è una struttura JSON come richiesto dalle specifiche.

Limitazioni del comportamento SCIM

  • Identificatori immutabili: i valori degli attributi SCIM mappati a google.subject o google.group vengono trattati come identificatori immutabili all'interno di Google Cloud. Se devi modificare questi valori, devi eliminare definitivamente l'utente o il gruppo dall'IdP e poi ricrearli con il nuovo valore.

  • Identificatori univoci e non vuoti: Google Cloud applica l'unicità ai valori mappati a google.subject e google.group in un tenant SCIM. La sincronizzazione degli attributi mappati che generano valori duplicati per google.subject o google.group non va a buon fine e viene restituito un errore HTTP 409 Conflict. Gli attributi mappati che restituiscono un valore nullo o vuoto non vanno a buon fine e viene restituito un errore HTTP 400 Bad Request.

  • Requisito di una singola email: per una sincronizzazione SCIM riuscita, ogni utente deve avere esattamente un indirizzo email di tipo work. Il provisioning o gli aggiornamenti non andranno a buon fine se l'IdP invia più email o se la singola email fornita non è di tipo work.

  • Trasformazioni senza distinzione tra maiuscole e minuscole: per i mapping delle attestazioni SCIM sono supportate trasformazioni Common Expression Language (CEL) limitate. Per i confronti senza distinzione tra maiuscole e minuscole per user.userName e user.emails[0].value è supportato solo .lowerAscii().

Limitazioni degli attributi

Le seguenti sezioni descrivono il supporto degli attributi per utenti, gruppi ed estensione dello schema utente aziendale.

Attributi utente

La seguente tabella descrive in dettaglio il supporto per gli attributi utente:

Attributo Attributi secondari Supportato Limitazioni
userName N/D N/D
name formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix N/A
displayName N/D N/A
nickName N/D N/A
profileUrl N/D N/A
title N/D N/A
userType N/D N/A
preferredLanguage N/D N/A
locale N/D N/A
timezone N/D N/A
active N/D N/A
password N/D No N/D
emails display, type, value, primary È supportato solo il tipo di email work.
phoneNumbers display, type, value, primary N/D
ims display, type, value N/D
photos display, type, value N/D
addresses formatted, streetAddress, locality, region, postalCode, country N/A
groups N/D No N/D
entitlements display, type, value N/D
roles type, value display non è supportato.
x509Certificates type, value display non è supportato.

Attributi del gruppo

La seguente tabella descrive in dettaglio il supporto per gli attributi del gruppo:

Attributo Attributi secondari supportati
displayName N/D
externalId N/D
members value, type, $ref, display

Attributi dell'estensione dello schema utente aziendale

La seguente tabella descrive in dettaglio il supporto per l'estensione dello schema utente aziendale:

Attributo Attributi secondari supportati
employeeNumber N/D
costCenter N/D
organization N/D
division N/D
department N/D
manager value, $ref, displayName

Passaggi successivi