Intégration SCIM personnalisée avec Snowflake

Les intégrations personnalisées SCIM permettent aux utilisateurs de créer leurs propres applications pour se connecter à leur fournisseur d’identité afin de provisionner, mapper et gérer des utilisateurs et des rôles dans Snowflake.

Actuellement, les intégrations SCIM personnalisées sont prises en charge pour les fournisseurs d’identité qui ne sont ni Okta ni Microsoft Azure AD.

Après avoir créé votre application SCIM, suivez la procédure ci-dessous pour créer une intégration de sécurité Snowflake et générer un jeton d’autorisation API SCIM. Enregistrez le jeton d’autorisation et incluez-le dans l’en-tête de requête API SCIM comme décrit dans Réalisation d’une demande API SCIM.

Conditions préalables

Avant de provisionner des utilisateurs ou des groupes, assurez-vous que la politique réseau dans Snowflake autorise l’accès à partir des plages IP correspondant à votre organisation. Pour plus d’informations, voir Gestion des politiques réseau SCIM.

Limites

  • Si votre compte Snowflake a été créé avec des traits de soulignement dans le nom de compte (par exemple my_account), vous pouvez accéder à votre compte Snowflake avec le nom de compte ayant des traits de soulignement ou des tirets (par exemple, my-account). Si votre fournisseur SCIM réutilise le même nom de compte pour SSO et SCIM SAML, les noms de compte avec des traits de soulignement ne sont pas pris en charge. Par conséquent, utilisez le nom de compte avec un trait d’union pour configurer SCIM.

  • Une intégration SCIM personnalisée peut permettre ou ne pas permettre le provisionnement et la gestion des groupes imbriqués. Avant d’essayer d’utiliser une intégration SCIM personnalisée pour provisionner des groupes imbriqués dans Snowflake, veuillez contacter votre fournisseur d’identité pour déterminer si les groupes imbriqués peuvent être utilisés avec une intégration SCIM.

Créer une intégration de sécurité SCIM personnalisée et un jeton API

The Snowflake configuration process creates a SCIM security integration to allow users and roles created in the identity provider to be owned by the GENERIC_SCIM_PROVISIONER SCIM role in Snowflake and creates an access token to use in SCIM API requests. The access token is valid for six months. Upon expiration, create a new access token manually using SYSTEM$GENERATE_SCIM_ACCESS_TOKEN as shown below.

Exécutez les instructions SQL suivantes dans votre client Snowflake préféré.

use role accountadmin;
create or replace role generic_scim_provisioner;
grant create user on account to role generic_scim_provisioner;
grant create role on account to role generic_scim_provisioner;
grant role generic_scim_provisioner to role accountadmin;
create or replace security integration generic_scim_provisioning
    type=scim
    scim_client='generic'
    run_as_role='GENERIC_SCIM_PROVISIONER';
select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');

Chacune des instructions suivantes est expliquée ci-dessous.

  1. Comme les intégrations de sécurité nécessitent le rôle ACCOUNTADMIN, vérifiez le rôle ACCOUNTADMIN.

    use role accountadmin;
    
  2. Créez le rôle personnalisé GENERIC_SCIM_PROVISIONER. Tous les utilisateurs et rôles dans Snowflake créés par IdP appartiendront au rôle GENERIC_SCIM_PROVISIONER restreint.

    create or replace role generic_scim_provisioner;
    grant create user on account to role generic_scim_provisioner;
    grant create role on account to role generic_scim_provisioner;
    
  3. Laissez le rôle ACCOUNTADMIN créer l’intégration de sécurité à l’aide du rôle GENERIC_SCIM_PROVISIONER personnalisé. Pour plus d’informations, voir CREATE SECURITY INTEGRATION.

    create or replace security integration generic_scim_provisioning
        type=scim
        scim_client='generic'
        run_as_role='GENERIC_SCIM_PROVISIONER';
    
  4. Créez et enregistrez le jeton d’autorisation et stockez-le en toute sécurité pour une utilisation ultérieure. Utilisez ce jeton pour chaque requête API REST SCIM et placez-le dans l’en-tête de la requête. Le jeton d’accès expire après six mois et un nouveau jeton d’accès peut être généré avec cette instruction.

    select system$generate_scim_access_token('GENERIC_SCIM_PROVISIONING');
    

Activation de la fonction SSO initiée par Snowflake

Le processus de provisionnement SCIM n’active pas automatiquement la connexion unique (SSO).

Pour utiliser SSO une fois le processus de provisionnement SCIM terminé, activez SSO initié par Snowflake.

Gestion des politiques réseau SCIM

La stratégie réseau SCIM a son propre paramètre, de façon à ce que le fournisseur SCIM puisse être spécifiquement autorisé à provisionner des utilisateurs et des groupes sans ajouter ces adresses IP pour un accès utilisateur normal.

La configuration d’une politique réseau spécifique à l’intégration SCIM permet à SCIM d’être distinct des autres politiques réseau qui peuvent s’appliquer au compte Snowflake. La politique réseau SCIM n’affecte pas les autres politiques réseau du compte et les autres politiques réseau du compte n’affectent pas la politique réseau SCIM. Par conséquent, la politique réseau SCIM permet à l’intégration Snowflake SCIM de provisionner des utilisateurs et des groupes comme prévu.

Après avoir créé l’intégration de sécurité SCIM, créez la politique réseau SCIM à l’aide de cette commande :

alter security integration generic_scim_provisioning set network_policy = <politique_réseau_scim>;

Pour annuler la politique réseau SCIM, utilisez cette commande :

alter security integration generic_scim_provisioning unset <politique_réseau_scim>;

Où :

generic_scim_provisioning

Spécifie le nom de l’intégration de sécurité SCIM personnalisée.

<scim_network_policy>

Spécifie la politique réseau SCIM personnalisée dans Snowflake.

Pour plus d’informations, voir Politiques réseau et ALTER SECURITY INTEGRATION.