Provisionnement SCIM pour la fédération d'identité de personnel

Si votre fournisseur d'identité (IdP) est compatible avec le System for Cross-domain Identity Management (SCIM), vous pouvez le configurer pour provisionner et gérer les utilisateurs et les groupes dans Google Cloud.

Capacités

La compatibilité SCIM de la fédération des identités des employés offre les fonctionnalités suivantes :

  • Synchronisation des identités : synchronise les utilisateurs et les groupes de votre IdP externe avec Google Cloud pour maintenir une vue globale des identités des employés.
  • Source principale pour les revendications : lorsque SCIM est activé pour un fournisseur de personnel, Google Cloud utilise les utilisateurs et les groupes SCIM synchronisés comme source de vérité pour les attributs utilisateur et les appartenances aux groupes pour l'évaluation des stratégies IAM.
  • Saisie semi-automatique des identités : permet la saisie semi-automatique des utilisateurs et des groupes lorsque vous accordez l'accès et partagez des ressources (telles que des notebooks et des agents) dans Gemini Enterprise.

Remarques

Lorsque vous utilisez la compatibilité SCIM avec la fédération d'identité de personnel, les points suivants doivent être pris en compte :

  • Vous devez configurer un pool d'identités de personnel et un fournisseur avant de configurer un locataire SCIM.
  • Chaque pool d'identités de personnel n'est compatible qu'avec un seul locataire SCIM, associé à un seul fournisseur. Vous ne pouvez pas activer l'utilisation de SCIM (--scim-usage) sur un autre fournisseur du même pool. Pour configurer un locataire SCIM dans le même pool d'identités de personnel, vous devez d'abord supprimer celui qui existe déjà. Pour supprimer un locataire SCIM, utilisez l'une des méthodes suivantes :
    • Suppression réversible (par défaut) : la suppression d'un locataire SCIM lance une période de suppression réversible de 30 jours. Pendant cette période, le locataire est masqué et ne peut pas être utilisé. Vous ne pouvez pas non plus créer de locataire SCIM dans le même pool d'identités de personnel.
    • Suppression définitive : pour supprimer définitivement et immédiatement un locataire SCIM, utilisez l'option --hard-delete avec la commande de suppression. Cette action est irréversible et vous permet de créer immédiatement un locataire SCIM dans le même pool d'identité des employés, sans attendre la période de conservation de 30 jours. Vous pouvez également créer un pool d'identités de personnel et un locataire SCIM, ou utiliser un pool d'identités de personnel qui n'a pas encore été configuré avec un locataire SCIM.
  • Modes d'utilisation de SCIM (--scim-usage) :
    • enabled-for-groups (Gemini Enterprise) : utilise des groupes synchronisés avec SCIM pour l'autorisation IAM et l'évaluation des règles. Les attributs utilisateur continuent d'être extraits des jetons de connexion. Seuls les mappages google.subject et google.group sont évalués.
    • enabled-for-users-groups (Looker) (Aperçu) : utilise les données utilisateur et de groupe synchronisées avec SCIM comme source de revendications pour les workflows d'autorisation IAM et de connexion OAuth. Évalue google.subject, google.group et toutes les revendications utilisateur configurées (telles que google.display_name, google.profile_photo, google.email, google.posix_username et attribute.KEY personnalisées).
  • Exclusivité mutuelle : le paramètre --scim-usage=enabled-for-users-groups (Aperçu) est mutuellement exclusif avec les attributs supplémentaires (extra_attributes_oauth2_client) et les attributs étendus (extended_attributes_oauth2_client).
  • Lorsque vous utilisez SCIM, vous mappez les attributs dans le fournisseur de pool d'identités de personnel et dans le locataire SCIM. L'attribut google.subject doit faire référence de manière unique aux mêmes identités. Vous spécifiez google.subject dans le fournisseur de pool d'identités des employés à l'aide du flag --attribute-mapping et dans le locataire SCIM à l'aide du flag --claim-mapping. Le mappage de valeurs d'identité non uniques peut entraîner le traitement de différentes identités IdP comme une seule et même identité par Google Cloud . Par conséquent, l'accès accordé à une identité d'utilisateur ou de groupe peut s'étendre à d'autres, mais la révocation de l'accès à l'une d'elles ne le supprime pas forcément pour toutes.
  • Si vous activez l'utilisation de SCIM sur un fournisseur sans locataire SCIM associé, les tentatives de connexion échouent, car Google Cloud ne trouve pas de locataire SCIM pour ce fournisseur.
  • Application de l'unicité : Google Cloud valide et applique l'unicité des attributs mappés sur google.subject (utilisateurs) et google.group (groupes) dans un locataire SCIM. Si les attributs mappés provisionnés par votre fournisseur d'identité entraînent des valeurs en double pour google.subject ou google.group lors de la synchronisation, le provisionnement échoue et une erreur HTTP 409 Conflict s'affiche. Si un attribut mappé renvoie une valeur nulle ou vide, le provisionnement échoue et une erreur HTTP 400 Bad Request s'affiche.
  • Limites de taille des attributs : la taille maximale des attributs utilisateur mappés sérialisés (à l'exclusion de google.group) est de 16 Ko. Si les attributs mappés dépassent cette limite, les tentatives de connexion échouent.
  • Limite de jetons SCIM : chaque locataire SCIM accepte un maximum de deux jetons SCIM (par exemple, pour permettre la rotation des jetons sans temps d'arrêt). Si vous avez deux jetons, supprimez-en un avant d'en créer un autre.
  • L'API SCIM (iamscim.googleapis.com) est soumise à des quotas de débit différents de ceux des API de ressources IAM standards. Par défaut, les requêtes d'écriture et de lecture sont limitées à 3 000 requêtes par locataire SCIM,par organisation et par minute. Pour en savoir plus, consultez la page Quotas et limites.

Mappage des revendications

Lorsque vous configurez SCIM, vous définissez des mappages de revendications (--claim-mapping) dans le locataire SCIM pour mapper les attributs utilisateur et de groupe SCIM sur les attributs Google.

Attributs Google Cloud compatibles pour le mappage des revendications

Le tableau suivant liste les attributs Google Cloud que vous pouvez mapper dans votre locataire SCIM (--claim-mapping) à l'aide du langage CEL (Common Expression Language) :

AttributGoogle Cloud Exigence Description Expressions et limites acceptées
google.subject Obligatoire

Identifiant unique de l'utilisateur qui s'authentifie.

L'attribut IdP sous-jacent utilisé pour remplir google.subject doit être identique dans le mappage du fournisseur (--attribute-mapping) et dans le locataire SCIM (--claim-mapping). Si ces mappages sont incohérents, les utilisateurs pourront peut-être se connecter, mais ne seront pas reconnus comme membres des groupes provisionnés par SCIM.

Limité aux expressions de base suivantes (ou avec .lowerAscii()) :
  • user.externalId
  • user.userName
  • user.emails[0].value

Longueur maximale : 127 octets.

Remarque : Ce mappage est immuable une fois le locataire SCIM créé. Pour le mettre à jour, vous devez supprimer définitivement le locataire SCIM et le recréer.

google.group Obligatoire pour les groupes SCIM Identifiant unique de l'appartenance à un groupe synchronisé à l'aide de SCIM. Limité aux expressions de base suivantes (ou avec .lowerAscii()) :
  • group.externalId
  • group.displayName

Remarque : Ce mappage est immuable une fois le locataire SCIM créé. Pour le mettre à jour, vous devez supprimer définitivement le locataire SCIM et le recréer.

google.display_name Facultatif Attribut qui définit le nom de l'utilisateur connecté dans la console Google Cloud . Il ne peut pas être utilisé dans les stratégies d'autorisation IAM. Correspond à un attribut de chaîne (tel que user.displayName ou user.name.formatted). Longueur maximale : 100 octets.
google.profile_photo Facultatif URL de la vignette de la photo de l'utilisateur, visible en tant que photo de profil dans la console Google Cloud . Il ne peut pas être utilisé dans les stratégies d'autorisation IAM. Doit renvoyer une chaîne d'URL valide (par exemple, user.photos.filter(p, p.type == 'thumbnail')[0].value ou user.photos[0].value).
google.email Facultatif Attribut utilisé pour mapper les adresses e-mail du fournisseur d'identité aux produits intégrés à l'aide de l'intégration du client OAuth de la fédération d'identité des employés. Il ne peut pas être utilisé dans les stratégies d'autorisation IAM. Mappe un attribut d'adresse e-mail (tel que user.emails.filter(e, e.type == 'work')[0].value ou user.emails[0].value).
google.posix_username Facultatif Chaîne de nom d'utilisateur unique compatible avec POSIX utilisée pour SSH dans le navigateur et OS Login avec la fédération des identités des employés. Cet attribut ne peut pas être utilisé dans les stratégies d'autorisation IAM. La longueur ne doit pas dépasser 32 caractères.
attribute.KEY Facultatif

Attributs personnalisés de votre IdP que vous pouvez utiliser pour définir votre stratégie d'autorisation dans une stratégie d'autorisation IAM. Remplacez KEY par le nom de l'attribut que vous souhaitez utiliser.

Par exemple, vous pouvez définir un attribut personnalisé tel que costcenter = "1234" et y faire référence à l'aide de principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workforcePools/WORKFORCE_POOL_ID/attribute.costcenter/1234. Accorder l'accès à cet identifiant principal donne accès à toutes les identités configurées dans l'IdP avec ce centre de coûts.

Jusqu'à 50 règles de mappage d'attributs personnalisés. Taille maximale par règle : 256 caractères.

Comportement basé sur l'utilisation de SCIM par le fournisseur (--scim-usage)

L'évaluation des mappages de revendications SCIM dépend du mode --scim-usage configuré sur le fournisseur de pools d'identités des employés :

  • enabled-for-groups (Gemini Enterprise) : seules les mises en correspondance google.subject et google.group sont évaluées. Tous les mappages de revendications utilisateur supplémentaires dans --claim-mapping sont ignorés.
  • enabled-for-users-groups (Looker) (aperçu) : évalue google.subject, google.group et toutes les revendications utilisateur configurées (telles que google.display_name, google.profile_photo, google.email, google.posix_username et attribute.<var>KEY</var> personnalisées).

Exemples de mappages pour la cohérence des sujets

Comme décrit dans Attributs compatibles pour le mappage des revendications, l'attribut IdP sous-jacent utilisé pour renseigner google.subject doit être identique dans le mappage du fournisseur (--attribute-mapping) et dans le locataire SCIM (--claim-mapping). Le tableau suivant présente des exemples de référence :

Attribut Google Mappage des fournisseurs de pools d'identités de personnel Mappage de locataire SCIM (SCIM)
google.subject assertion.oid (Entra ID) 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()

Points de terminaison acceptés et non acceptés

Les points de terminaison du protocole SCIM standard suivants sont acceptés :

  • /Users : gérez les ressources utilisateur. Opérations acceptées : Create, Get, Update, Delete, Patch et Put.

  • /Groups : gérer les ressources du groupe. Opérations acceptées : Create, Get, Update, Delete et Patch. La méthode PUT n'est pas acceptée pour les groupes.

  • /Schemas : récupérer les informations du schéma.

  • /ServiceProviderConfig : récupérez la configuration du fournisseur de services.

Les points de terminaison du protocole SCIM suivants ne sont pas acceptés :

  • /Me

  • /Bulk

  • /Search

  • /ResourceTypes

Limites

Les sections suivantes décrivent les limites et les écarts de l'implémentation SCIM de la fédération d'identité des employés par rapport aux spécifications SCIM (RFC 7643 et 7644).

Limites des fonctionnalités du protocole

  • Compatibilité avec les filtres : lorsque vous listez des utilisateurs ou des groupes à l'aide des points de terminaison /Users ou /Groups, les expressions de filtre ne sont compatibles qu'avec l'opérateur eq (égal à). Vous pouvez combiner plusieurs filtres eq avec and. Les autres opérateurs de filtre SCIM, tels que co (contient) ou sw (commence par), ne sont pas acceptés.

  • Pagination : l'API IAM SCIM n'est pas compatible avec la pagination standard pour lister les utilisateurs ou les groupes.

    • startIndex : ce paramètre est toujours 1. L'API renvoie jusqu'à 100 résultats, quelle que soit la valeur que vous fournissez pour startIndex.

    • itemsPerPage : le nombre maximal de ressources renvoyées dans une même réponse est de 100.

    • totalResults : l'API ne renvoie pas le nombre total réel de ressources correspondantes. Le champ totalResults de la réponse est toujours égal au nombre d'éléments renvoyés dans cette réponse, avec un maximum de 100.

  • Les API Get Group et list Groups without filter GetGroup et ListGroups renvoient une liste de membres vide. Pour récupérer les membres d'un groupe spécifique, utilisez l'API ListGroups avec un filtre de membres.

  • Réponse JSON non conforme avec jetons non valides : les requêtes contenant un jeton d'API non valide renvoient un code d'état HTTP 401 à partir de Google Cloud. La réponse n'est pas un fichier JSON valide, comme l'exige la spécification SCIM.

Limites de comportement de SCIM

  • Identifiants immuables : les valeurs des attributs SCIM mappés sur google.subject ou google.group sont traitées comme des identifiants immuables dans Google Cloud. Si vous devez modifier ces valeurs, vous devez supprimer définitivement l'utilisateur ou le groupe de votre IdP, puis le recréer avec la nouvelle valeur.

  • Identifiants uniques et non vides : Google Cloud impose l'unicité des valeurs mappées sur google.subject et google.group dans un locataire SCIM. La synchronisation des attributs mappés qui génèrent des valeurs en double pour google.subject ou google.group échoue et renvoie une erreur HTTP 409 Conflict. Les attributs mappés qui renvoient une valeur nulle ou vide échouent avec une erreur HTTP 400 Bad Request.

  • Exigence concernant l'adresse e-mail unique : pour que la synchronisation SCIM réussisse, chaque utilisateur doit disposer d'une seule adresse e-mail de type work. Le provisionnement ou les mises à jour échoueront si votre IdP envoie plusieurs adresses e-mail ou si l'adresse e-mail fournie n'est pas de type work.

  • Transformations non sensibles à la casse : les transformations CEL (Common Expression Language) limitées sont compatibles avec les mappages de revendications SCIM. Seule .lowerAscii() est acceptée pour les comparaisons insensibles à la casse pour user.userName et user.emails[0].value.

Limites des attributs

Les sections suivantes décrivent la compatibilité des attributs pour les utilisateurs, les groupes et l'extension du schéma utilisateur de l'entreprise.

Attributs utilisateur

Le tableau suivant répertorie les attributs utilisateur et leur disponibilité dans les revendications de la fédération des identités des employés :

Attribut Sous-attributs Compatible avec le provisionnement SCIM Limites Compatible avec --claim-mapping
userName N/A Oui N/A Oui
name formatted, familyName, givenName, middleName, honorificPrefix, honorificSuffix Oui N/A Oui
displayName N/A Oui N/A Oui
nickName N/A Oui N/A Oui
profileUrl N/A Oui N/A Oui
title N/A Oui N/A Oui
userType N/A Oui N/A Oui
preferredLanguage N/A Oui N/A Oui
locale N/A Oui N/A Oui
timezone N/A Oui N/A Oui
active N/A Oui N/A Oui
password N/A Non N/A Non
emails display, type, value, primary Oui Seul le type d'adresse e-mail work est accepté. Oui
phoneNumbers display, type, value, primary Oui N/A Oui
ims display, type, value Oui N/A Oui
photos display, type, value Oui N/A Oui
addresses formatted, streetAddress, locality, region, postalCode, country Oui N/A Oui
groups N/A Non N/A Non
entitlements display, type, value Oui N/A Oui
roles type, value Oui Le caractère display n'est pas accepté. Oui
x509Certificates type, value Oui Le caractère display n'est pas accepté. Non

Attributs des groupes

Le tableau suivant répertorie les attributs de groupe et leur disponibilité dans les revendications de la fédération des identités des employés :

Attribut Sous-attributs acceptés Compatible avec --claim-mapping
displayName N/A Oui
externalId N/A Oui
members value, type, $ref, display Non

Attributs d'extension du schéma utilisateur Enterprise

Le tableau suivant détaille la compatibilité avec l'extension du schéma utilisateur Enterprise :

Attribut Sous-attributs acceptés Compatible avec --claim-mapping
employeeNumber N/A Oui
costCenter N/A Oui
organization N/A Oui
division N/A Oui
department N/A Oui
manager value, $ref, displayName Oui ($ref n'est compatible qu'avec le provisionnement SCIM, et non avec --claim-mapping)

Étapes suivantes