Configurer SCIM dans un IdP OIDC ou SAML

Ce document explique comment configurer un locataire SCIM dans un pool d'identités des employés. Pour en savoir plus sur SCIM, consultez Provisionnement SCIM pour la fédération des identités des employés.

Chaque pool d'identités de personnel n'est compatible qu'avec un seul locataire SCIM. Pour configurer un locataire SCIM dans un pool qui en possède déjà un, vous devez d'abord supprimer définitivement le locataire existant.

L'indicateur --claim-mapping d'un locataire SCIM ne peut contenir que des expressions CEL (Common Expression Language) spécifiques. Pour savoir quelles expressions sont acceptées, consultez Mapper les jetons et les attributs SCIM.

Pour configurer System for Cross-domain Identity Management (SCIM) :
  1. Configurer un locataire et un jeton SCIM dans Google Cloud
  2. Configurer SCIM dans un fournisseur d'identité OIDC ou SAML
  3. Mettre à jour le fournisseur pour activer SCIM
  4. Vérifier la synchronisation SCIM

Configurer un locataire et un jeton SCIM dans Google Cloud

Pour configurer un locataire SCIM dans Google Cloud, procédez comme suit :

  1. Créez un locataire 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"
        

    Remplacez les éléments suivants :

    • SCIM_TENANT_ID : ID de votre locataire SCIM.
    • WORKFORCE_POOL_ID : ID du pool de personnel que vous avez créé précédemment dans ce document.
    • PROVIDER_ID : ID du fournisseur de pools d'identités de personnel que vous avez créé précédemment dans ce document.
    • SCIM_TENANT_DISPLAY_NAME : nom à afficher pour votre locataire SCIM.
    • SCIM_TENANT_DESCRIPTION : description de votre locataire SCIM.
    • CLAIM_MAPPING : liste de mappages d'attributs séparés par une virgule. Pour obtenir la liste complète des attributs de mappage, consultez Mapper les attributs de jeton et SCIM. Le mappage suivant est recommandé pour Gemini Enterprise :
      google.subject=user.emails[0].value.lowerAscii(),google.group=group.externalId

      L'attribut google.subject que vous mappez dans le locataire SCIM doit faire référence de manière unique aux mêmes identités que celles mappées dans l'attribut google.subject du fournisseur de pool d'identités de personnel à l'aide de l'indicateur --attribute-mapping. Une fois le locataire SCIM créé, vous ne pouvez plus mettre à jour le mappage des revendications. Pour le remplacer, vous pouvez supprimer définitivement le locataire SCIM et en créer un immédiatement. Pour en savoir plus sur les éléments à prendre en compte pour l'utilisation de SCIM, consultez Compatibilité avec SCIM.

  2. Une fois la commande terminée, procédez comme suit :

    1. Dans le champ baseUri du résultat, enregistrez l'intégralité de l'URI, qui est au format https://iamscim.googleapis.com/v1alpha1/tenants/SCIM_TENANT_UID. Vous devez fournir cet URI à votre IdP.
    2. De plus, à partir de l'URI, n'enregistrez que SCIM_TENANT_UID. Vous aurez besoin de cet UID pour définir une stratégie IAM "Autoriser" sur le locataire SCIM plus loin dans ce document.
  3. Créez un jeton 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
        

    Remplacez les éléments suivants :

    • SCIM_TOKEN_ID : ID du jeton SCIM
    • DISPLAY_NAME : nom à afficher du jeton SCIM
    • WORKFORCE_POOL_ID : ID du pool de personnel
    • SCIM_TENANT_ID : ID du locataire SCIM
    • PROVIDER_ID : ID du fournisseur du pool d'identités de personnel
  4. Une fois la commande gcloud iam workforce-pools providers scim-tenants tokens create terminée, procédez comme suit :

    1. Dans le résultat, enregistrez la valeur de SCIM_TOKEN dans le champ securityToken. Vous devez fournir ce jeton de sécurité à votre IdP. Le jeton de sécurité n'est affiché que dans cette sortie. Si vous le perdez, vous devez créer un autre jeton SCIM.

    2. Pour vérifier si SCIM_TOKEN est refusé par le règlement de votre organisation, exécutez la commande suivante :

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

      Si la commande échoue et affiche une erreur liée aux autorisations, exécutez gcloud organizations add-iam-policy-binding, décrit dans une étape ultérieure. Si la commande réussit, vous pouvez ignorer cette étape.

  5. Définissez une stratégie d'autorisation IAM sur le locataire et le jeton SCIM. Si la commande curl d'une étape précédente a échoué en raison d'une erreur liée aux autorisations, vous devez exécuter la commande suivante :

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

    Remplacez les éléments suivants :

    • ORGANIZATION_ID : ID de l'organisation.
    • SERVICE_AGENT_EMAIL : adresse e-mail de l'agent de service. L'adresse e-mail est au format suivant : o-ORGANIZATION_ID-SCIM_TENANT_UID@gcp-sa-iamscim.iam.gserviceaccount.com. SCIM_TENANT_UID est renvoyé lorsque vous créez le locataire SCIM.

Lorsque vous provisionnez des groupes dans votre IdP, assurez-vous que le nom à afficher de chaque groupe, tel qu'il est indiqué dans le champ displayName, est unique dans un locataire SCIM. Pour en savoir plus sur les groupes et SCIM dans Microsoft Entra ID, consultez Groupes.

Configurer SCIM dans votre fournisseur d'identité OIDC ou SAML

Dans votre IdP, configurez SCIM comme décrit dans la documentation de votre IdP. Utilisez l'URL et le jeton SCIM obtenus à l'étape précédente.

Mettre à jour le fournisseur pour activer SCIM

Pour activer SCIM pour un fournisseur :

OIDC

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

Remplacez les éléments suivants :

  • PROVIDER_ID : ID du fournisseur du pool d'identités de personnel
  • WORKFORCE_POOL_ID : ID du pool de personnel
  • LOCATION : emplacement du pool de personnel

SAML

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

Remplacez les éléments suivants :

  • PROVIDER_ID : ID du fournisseur du pool d'identités de personnel
  • WORKFORCE_POOL_ID : ID du pool de personnel
  • LOCATION : emplacement du pool de personnel

Pour vérifier la synchronisation SCIM, consultez Vérifier la synchronisation SCIM.

Mapper les attributs de jeton et SCIM

Vous devez mapper les attributs de manière cohérente, à la fois dans le fournisseur de pools d'identités des employés et dans le locataire SCIM configuré pour le fournisseur. Pour le fournisseur de pool d'identités de personnel, vous utilisez le flag --attribute-mapping, et pour le locataire SCIM, vous utilisez le flag --claim-mapping. L'attribut IdP mappé sur google.subject pour les utilisateurs doit faire référence de manière unique à la même identité, qu'elle soit définie dans un jeton ou un mappage SCIM. Pour en savoir plus sur le mappage des attributs lorsque vous utilisez SCIM, consultez la section Compatibilité avec SCIM. Le tableau suivant vous montre comment mapper les attributs dans les revendications de jetons et les attributs SCIM :

Attribut Google Mappage des fournisseurs de pools d'identités de personnel Mappage de locataires SCIM
google.subject assertion.sub user.externalId
google.group, veillez à informer votre fournisseur de --scim-usage=enabled-for-groups. N/A group.externalId

Vérifier la synchronisation SCIM

Après avoir configuré SCIM, vous pouvez utiliser curl pour vérifier que les utilisateurs et les groupes sont correctement synchronisés avec Google Cloud. Ces commandes nécessitent un jeton SCIM valide et l'ID de votre locataire SCIM.

Vérifier la synchronisation des utilisateurs

Pour vérifier qu'un utilisateur a été correctement synchronisé, recherchez son userName à l'aide du filtre suivant :

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

Exemple de réponse :

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

Vérifier la synchronisation des groupes

Pour vérifier qu'un groupe a été correctement synchronisé, recherchez son displayName à l'aide du filtre suivant :

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

Exemple de réponse :

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

Vérifier l'appartenance à un groupe

Pour vérifier si un utilisateur spécifique est membre d'un groupe, utilisez un filtre qui spécifie à la fois l'ID du groupe et l'ID de l'utilisateur.

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"

Exemple de réponse si l'utilisateur est membre :

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

Exemple de réponse si l'utilisateur n'est pas membre :

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

Remarque : Pour obtenir les GROUP_ID et USER_ID, commencez par trouver le groupe et l'utilisateur à l'aide des filtres displayName et userName. Les ID sont renvoyés dans le champ id de la réponse. Remplacez SCIM_TOKEN, SCIM_TENANT_UID, USER_NAME, GROUP_NAME, GROUP_ID et USER_ID par vos valeurs réelles.

Forcer la suppression d'un locataire SCIM

Pour forcer la suppression d'un locataire SCIM :

  1. Si --scim-usage=enabled-for-groups est défini pour votre fournisseur, désactivez-le dans la configuration du fournisseur :
              gcloud iam workforce-pools providers update-oidc
              --provider=PROVIDER_ID \
              --workforce-pool=WORKFORCE_POOL_ID \
              --location= global
              --scim-usage=SCIM_USAGE_UNSPECIFIED
            

    Remplacez les éléments suivants :

    • PROVIDER_ID : ID du fournisseur du pool d'identités de personnel
    • WORKFORCE_POOL_ID : ID du pool de personnel

  2. Supprimez le locataire SCIM :
      gcloud iam workforce-pools providers scim-tenants delete SCIM_TENANT_ID \
          --workforce-pool=WORKFORCE_POOL_ID \
          --provider=PROVIDER_ID \
          --hard-delete \
          --location=global
    

    Remplacez les éléments suivants :

    • SCIM_TENANT_ID : ID du locataire SCIM à supprimer
    • WORKFORCE_POOL_ID : ID du pool de personnel
    • PROVIDER_ID : ID du fournisseur du pool d'identités de personnel
    Pour en savoir plus sur SCIM, y compris sur la suppression de locataires SCIM, consultez Compatibilité SCIM.

Étapes suivantes