Utilisation de la tokenisation externe

Cette rubrique fournit des instructions sur la façon d’utiliser la tokénisation externe dans Snowflake avec des intégrations de partenaires et sur la façon de créer une intégration de tokénisation externe personnalisée.

Snowflake prend en charge la tokenisation externe sur AWS, Microsoft Azure et Google Cloud Platform.

Notez qu’une politique de masquage de tokenisation externe peut être assignée à une balise pour fournir une tokenisation externe basée sur la balise. Pour plus de détails sur l’affectation d’une politique de masquage à une balise, voir Politiques de masquage basées sur les balises.

Important

La tokenisation externe nécessite des Écriture de fonctions externes, qui sont incluses dans Snowflake Standard Edition, et vous pouvez utiliser des fonctions externes avec un fournisseur de tokenisation.

Cependant, si vous choisissez d’intégrer votre fournisseur de tokenisation avec la tokenisation externe Snowflake, vous devez effectuer une mise à niveau vers Enterprise Edition ou une version ultérieure.

Pour en savoir plus sur la mise à niveau, veuillez contacter le support Snowflake.

Intégrations de partenaires externes de tokenisation

Les partenaires suivants facilitent la tokenisation externe dans Snowflake. Pour utiliser ces intégrations partenaires, suivez les instructions dans la documentation du partenaire ou contactez le partenaire pour commencer le processus de configuration :

Créer une intégration de tokenisation externe personnalisée

Effectuez les étapes suivantes pour créer une intégration personnalisée pour la tokenisation externe :

Étape 1 : créez une fonction externe

Créez une fonction externe dans Snowflake et configurez l’environnement de votre fournisseur Cloud pour qu’il communique avec la fonction externe. Pour plus de détails, voir :

Étape 2 : Accorder des privilèges de politiques de masquage à un rôle personnalisé

Un responsable de la sécurité ou de la confidentialité doit servir d’administrateur de politiques de masquage (c’est-à-dire un rôle personnalisé : MASKING_ADMIN) et avoir les privilèges pour définir, gérer et appliquer des politiques de masquage aux colonnes.

Snowflake fournit les privilèges suivants à accorder à un responsable de la sécurité ou de la confidentialité pour les politiques de masquage de sécurité au niveau des colonnes :

Privilège

Description

CREATE MASKING POLICY

Ce privilège au niveau du schéma contrôle qui peut créer des politiques de masquage.

APPLY MASKING POLICY

Ce privilège au niveau du compte contrôle qui peut définir/annuler des politiques de masquage sur les colonnes et reçoit par défaut le rôle ACCOUNTADMIN. . Ce privilège permet uniquement d’appliquer une politique de masquage à une colonne et ne fournit aucun privilège de table supplémentaire décrit dans Privilèges de contrôle d’accès.

APPLY ON MASKING POLICY

En option. Ce privilège au niveau de la politique peut être utilisé par un propriétaire de politique pour décentraliser les opérations de définition/annulation d’une politique de masquage donnée sur des colonnes vers les propriétaires d’objet (c’est-à-dire le rôle qui a le privilège OWNERSHIP sur l’objet). . Snowflake prend en charge le contrôle d’accès discrétionnaire dans lequel les propriétaires d’objets sont également considérés comme des gestionnaires de données. . Si l’administrateur de politique fait confiance aux propriétaires d’objets pour être des gestionnaires de données pour les colonnes protégées, alors l’administrateur de politique peut utiliser ce privilège pour décentraliser l’application des opérations de définition/annulation de politiques.

L’exemple suivant crée le rôle MASKING_ADMIN et accorde des privilèges de politiques de masquage à ce rôle.

Créer un rôle personnalisé d’administrateur de politique de masquage :

use role useradmin;
CREATE ROLE masking_admin;
Copy

Accorder des privilèges au rôle masking_admin :

use role securityadmin;
GRANT CREATE MASKING POLICY on SCHEMA <db_name.schema_name> to ROLE masking_admin;
GRANT APPLY MASKING POLICY on ACCOUNT to ROLE masking_admin;
Copy

Permettre au rôle table_owner d’activer ou de désactiver la politique de masquage ssn_mask (facultatif) :

GRANT APPLY ON MASKING POLICY ssn_mask to ROLE table_owner;
Copy

Où :

  • db_name.schema_name

    Indique l’identificateur du schéma pour lequel le privilège doit être accordé.

Pour plus d’informations, voir :

Étape 3 : Accorder le rôle personnalisé à un utilisateur

Accordez le rôle personnalisé MASKING_ADMIN à un utilisateur faisant office de responsable de la sécurité ou de la confidentialité.

use role useradmin;
grant role masking_admin to user jsmith;
Copy

Étape 4 : Créer une politique de masquage

Dans cet exemple représentatif, les utilisateurs avec le rôle personnalisé ANALYST voient les valeurs des e-mails non tokenisées. Les utilisateurs sans le rôle personnalisé ANALYST voient les valeurs tokenisées.

La fonction externe permettant de détokeniser les valeurs des e-mails est de_email().

-- create masking policy

create or replace masking policy email_de_token as (val string) returns string ->
  case
    when current_role() in ('ANALYST') then de_email(val)
    else val
  end;
Copy

Astuce

Si vous souhaitez mettre à jour une politique de masquage existante et si vous avez besoin de voir la définition actuelle de cette politique, appelez la fonction GET_DDL ou exécutez la commande DESCRIBE MASKING POLICY .

Étape 5 : Appliquer la politique de masquage à une colonne de table ou de vue

Ces exemples supposent qu’une politique de masquage n’est pas appliquée à la colonne de la table lorsque celle-ci est créée et à la colonne de la vue lorsque celle-ci est créée. Vous pouvez éventuellement appliquer une politique de masquage à une colonne de table lorsque vous créez la table avec une instruction CREATE TABLE ou une colonne de vue avec une instruction CREATE VIEW.

Exécutez les instructions suivantes pour appliquer la politique à une colonne de table ou une colonne de vue.

-- apply masking policy to a table column

alter table if exists user_info modify column email set masking policy email_de_token;

-- apply the masking policy to a view column

alter view user_info_v modify column email set masking policy email_de_token;
Copy

Étape 6 : Interroger les données dans Snowflake

Exécutez deux requêtes différentes dans Snowflake, une requête avec le rôle personnalisé ANALYST et une autre requête avec un rôle différent, pour vérifier que les utilisateurs sans le rôle personnalisé ANALYST voient les valeurs tokenisées.

-- using the ANALYST custom role

use role ANALYST;
select email from user_info; -- should see plain text value

-- using the PUBLIC system role

use role public;
select email from user_info; -- should see tokenized value
Copy

Meilleures pratiques en matière de tokenisation externe

  • Synchronisation de systèmes. Sur AWS, il est utile de synchroniser les utilisateurs et les rôles dans le fournisseur d’identité de votre organisation (IdP) avec Snowflake et Protegrity. Si les utilisateurs et les rôles ne sont pas synchronisés, il peut y avoir des comportements inattendus, des messages d’erreur et un dépannage complexe concernant les fonctions externes, les intégrations API, les politiques de masquage et les politiques de tokenisation. Une option consiste à utiliser SCIM pour garder les utilisateurs et les rôles synchronisés avec votre IdP et Snowflake.

  • Cause racine des erreurs. Étant donné que la tokenisation externe nécessite la coordination de plusieurs systèmes (par exemple IdP, Snowflake, Protegrity, AWS, Azure, GCP), vérifiez toujours les privilèges, les limitations actuelles, les fonctions externes, l’intégration API, les politiques de masquage et les colonnes qui ont des politiques de masquage pour la tokenisation externes dans Snowflake. Pour aider à déterminer la cause première, voir :

Chapitre suivant :