Utiliser SQL pour définir la classification des données sensibles¶
Les sections suivantes décrivent comment utiliser SQL pour configurer la classification automatique des données sensibles au sein d’une base de données. Si vous souhaitez utiliser une interface Web pour paramétrer la classification des données sensibles, voir Utiliser le Centre de confiance pour définir la classification des données sensibles.
La procédure pour utiliser SQL afin de classifier les données sensibles est la suivante :
Créez un profil de classification qui contrôle ce qui se passe lors de la classification des données sensibles.
Définissez le profil de classification sur une base de données ou un schéma pour classifier automatiquement les tables de l’entité.
Pour des exemples de bout en bout de ce workflow, voir Exemples.
À propos des profils de classification¶
Un profil de classification définit les critères utilisés pour classifier automatiquement les tables d’une base de données. Ces critères comprennent :
Durée pendant laquelle une table doit exister avant d’être classée automatiquement.
Combien de temps avant que les tables précédemment classées ne soient reclassées ?
Si les balises du système et les balises personnalisées sont automatiquement ensemble sur les colonnes après la classification. Vous pouvez décider si vous souhaitez que Snowflake applique automatiquement les balises suggérées ou si vous préférez examiner les attributions de balises proposées, puis les appliquer vous-même.
Un mappage entre les balises de classification du système et les balises des objets définis par l’utilisateur afin que les balises définies par l’utilisateur puissent être appliquées automatiquement.
Si des classificateurs personnalisés sont utilisés pour classifier les données.
Lorsque un ingénieur des données affecte le profil de classification à une base de données, les données sensibles des tables qui appartiennent à la base de données sont automatiquement classifiées selon la planification définie par le profil. Un ingénieur des données peut attribuer le même profil de classification à plusieurs bases de données, ou créer plusieurs profils de classification pour définir des critères de classification différents pour différentes bases de données.
Pour utiliser SQL pour créer un profil de classification, exécutez la commande CREATE CLASSIFICATION_PROFILE pour créer une instance de la CLASSIFICATION_PROFILE classe.
Pour un exemple d’utilisation de la commande CREATE CLASSIFICATION_PROFILE pour créer un profil de classification, voir Exemples.
À propos du mappage des balises¶
Vous pouvez utiliser le profil de classification pour mapper les balises du système SEMANTIC_CATEGORY à une ou plusieurs balises d’objet. Ce mappage de balises permet d’attribuer automatiquement à une colonne contenant des données sensibles une balise définie par l’utilisateur en fonction de sa classification. Le mappage des balises peut être ajouté lors de la création du profil de classification ou ultérieurement en appelant la méthode <classification_profile_name>!SET_TAG_MAP.
Que vous définissiez le mappage des balises lors de la création du profil de classification ou après, le contenu du mappage est spécifié en tant qu’objet JSON. Cet objet JSON contient la clé 'column_tag_map', qui est un tableau d’objets spécifiant une balise définie par l’utilisateur, la valeur de la chaîne de cette balise et les catégories sémantiques auxquelles la balise est mappée.
Voici un exemple de mappage de balises :
'tag_map': {
'column_tag_map': [
{
'tag_name':'tag_db.sch.pii',
'tag_value':'Highly Confidential',
'semantic_categories':[
'NAME',
'NATIONAL_IDENTIFIER'
]
},
{
'tag_name': 'tag_db.sch.pii',
'tag_value':'Confidential',
'semantic_categories': [
'EMAIL'
]
}
]
}
Sur la base de ce mappage, si vous avez une colonne d’adresses e-mail et que le processus de classification détermine que la colonne contient ces adresses, la balise tag_db.sch.pii = 'Confidential' est ensemble sur la colonne contenant les adresses e-mail.
Si votre mappage de balises comprend plusieurs objets JSON qui mappent des balises, des valeurs de balises et des valeurs de catégories, l’ordre des objets JSON détermine quelle balise et quelle valeur doivent être définies sur la colonne en cas de conflit. Spécifiez les objets JSON dans l’ordre d’affectation souhaité, de gauche à droite, ou de haut en bas si vous formatez JSON.
Astuce
Chaque objet du champ column_tag_map n’a qu’une seule clé obligatoire : tag_name. Si vous omettez les clés tag_value et semantic_categories, la balise définie par l’utilisateur est appliquée à chaque colonne à laquelle la balise du système SEMANTIC_CATEGORY est appliquée, et la valeur de la balise définie par l’utilisateur correspondra à la valeur de la balise SEMANTIC_CATEGORY pour une colonne donnée.
En cas de conflit entre une balise attribuée manuellement et une balise appliquée par la classification automatique, une erreur se produit. Pour obtenir des informations sur le suivi de ces erreurs, voir Dépannage de la classification des données sensibles.
Définir un profil de classification sur une base de données¶
Mettre en œuvre la classification des données sensibles en configurant un profil de classification sur une base de données. Une fois que vous avez configuré le profil de classification sur la base de données, toutes les tables et vues de cette base de données sont automatiquement contrôlées par la classification des données sensibles.
Vous pouvez également configurer une classification sur un schéma. Si vous configurez un profil de classification sur un schéma qui existe dans une base de données qui est également associée à un profil de classification, le profil configuré sur le schéma remplace le profil configuré sur la base de données.
Pour définir un profil de classification, utilisez une commande ALTER DATABASE ou ALTER SCHEMA pour définir le paramètre CLASSIFICATION_PROFILE. Par exemple, pour configurer un profil de classification my_profile afin que toutes les tables et vues dans la base de données my_db soient contrôlées par la classification des données sensibles, exécutez la commande suivante :
ALTER DATABASE my_db
SET CLASSIFICATION_PROFILE = 'governance_db.classify_sch.my_profile';
Contrôle d’accès¶
Voici les privilèges et les rôles qui vous permettent de travailler avec les profils de classification et d’activer la classification des données sensibles.
Tâche |
Privilèges/rôles exigés |
Remarques |
|---|---|---|
Créer un profil de classification |
Rôle de base de données SNOWFLAKE.CLASSIFICATION_ADMIN |
Pour des informations sur l’attribution de ce rôle de base de données à d’autres rôles, voir À l’aide des rôles de base de données SNOWFLAKE. |
CREATESNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE sur le schéma |
Vous devez disposer de ce privilège sur le schéma dans lequel vous souhaitez créer l’instance de profil de classification. |
|
USAGE sur la base de données et le schéma |
Vous devez disposer de privilèges sur le schéma dans lequel vous souhaitez créer l’instance de profil de classification. |
|
Définir le profil de classification d’une base de données/d’un schéma |
Un des éléments suivants :
|
Par défaut, le propriétaire de la base de données/du schéma a le privilège EXECUTE AUTO CLASSIFICATION sur la base de données/le schéma. |
Tout privilège sur la base de données du schéma |
Si vous définissez un profil de classification sur un schéma, vous devez disposer d’au moins un privilège sur la base de données qui contient ce schéma. |
|
Tout privilège sur la base de données/le schéma |
Vous devez disposer d’au moins un privilège sur la base de données/le schéma qui contient la table que vous souhaitez classer automatiquement. Le privilège EXECUTE AUTO CLASSIFICATION répond à cette exigence. |
|
Un des éléments suivants :
|
Pour des informations sur l’attribution du rôle d’instance PRIVACY_USER à d’autres rôles, voir Rôles des instances. |
|
APPLY TAG sur le compte |
||
Appeler les méthodes sur une instance de profil de classification |
<classification_profile>!PRIVACY_USER rôle de l’instance |
Pour des informations sur l’attribution de ce rôle d’instance à d’autres rôles, voir Rôles des instances. |
Lister les profils de classification |
<classification_profile>!PRIVACY_USER rôle de l’instance |
|
Supprimer les profils de classification |
OWNERSHIP sur l’instance de profil de classification |
Pour un exemple de l’octroi de ces privilèges et des rôles de base de données au rôle d’un ingénieur des données, voir Exemple de base : Classification automatique des tables dans une base de données.
Exemples¶
Exemple de base : Classification automatique des tables dans une base de données
Exemple : Utilisation d’un mappage de balises et de classificateurs personnalisés
Exemple : Test d’un profil de classification avant d’activer la classification automatique
Exemple de base : Classification automatique des tables dans une base de données¶
Procédez comme suit pour classifier automatiquement une table dans la base de données :
En tant qu’administrateur, donnez à l’ingénieur des données les rôles et privilèges dont il a besoin pour classifier automatiquement les tables dans une base de données.
USE ROLE ACCOUNTADMIN; GRANT USAGE ON DATABASE mydb TO ROLE data_engineer; GRANT EXECUTE AUTO CLASSIFICATION ON DATABASE mydb TO ROLE data_engineer; GRANT DATABASE ROLE SNOWFLAKE.CLASSIFICATION_ADMIN TO ROLE data_engineer; GRANT CREATE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE ON SCHEMA mydb.sch TO ROLE data_engineer; GRANT APPLY TAG ON ACCOUNT TO ROLE data_engineer;
Passez au rôle d’ingénieur des données :
USE ROLE data_engineer;
Créez le profil de classification en tant qu’instance de la classe CLASSIFICATION_PROFILE :
CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile( { 'minimum_object_age_for_classification_days': 0, 'maximum_classification_validity_days': 30, 'auto_tag': true, 'classify_views': true });
Appelez la méthode DESCRIBE sur l’instance pour confirmer ses propriétés :
SELECT my_classification_profile!DESCRIBE();
Définissez l’instance du profil de classification sur le schéma, ce qui lance le processus en arrière-plan de surveillance des tables du schéma et de classification automatique des données sensibles.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Note
Il s’écoule une heure entre le moment où le profil de classification est paramétré sur le schéma et le moment où Snowflake commence à classifier le schéma.
Après une heure d’attente, appelez la procédure stockée SYSTEM$GET_CLASSIFICATION_RESULT pour obtenir les résultats de la classification automatique.
CALL SYSTEM$GET_CLASSIFICATION_RESULT('mydb.sch.t1');
Exemple : Utilisation d’un mappage de balises et de classificateurs personnalisés¶
En tant qu’administrateur, donnez à l’ingénieur des données les rôles et privilèges dont il a besoin pour classifier automatiquement les tables dans une base de données et définir des balises sur les colonnes.
Créez le profil de classification.
CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile( { 'minimum_object_age_for_classification_days': 0, 'maximum_classification_validity_days': 30, 'auto_tag': true, 'classify_views': true });
Appelez la méthode SET_TAG_MAP sur l’instance pour ajouter un mappage de balises au profil de classification. Cela permet d’appliquer automatiquement des balises personnalisées sur les colonnes qui contiennent des données sensibles.
CALL my_classification_profile!SET_TAG_MAP( {'column_tag_map':[ { 'tag_name':'my_db.sch1.pii', 'tag_value':'sensitive', 'semantic_categories':['NAME'] }]});
Vous auriez également pu ajouter cette carte de balise lors de la création du profil de classification.
Appelez la méthode SET_CUSTOM_CLASSIFIERS pour ajouter des classificateurs personnalisés au profil de classification. Cela permet de classer automatiquement les données sensibles selon des catégories sémantiques et de confidentialité définies par l’utilisateur.
CALL my_classification_profile!set_custom_classifiers( { 'medical_codes': medical_codes!list(), 'finance_codes': finance_codes!list() });
Vous auriez également pu ajouter les classificateurs personnalisés lors de la création du profil de classification.
Appelez la méthode DESCRIBE sur l’instance pour confirmer que le mappage des balises et les classificateurs personnalisés ont été ajoutés au profil de classification.
SELECT my_classification_profile!DESCRIBE();
Définissez l’instance du profil de classification sur la base de données.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';
Attachez une politique de masquage à la balise
tag_db.sch.piipour activer le masquage basé sur les balises.ALTER TAG tag_db.sch.pii SET MASKING POLICY pii_mask;
Exemple : Test d’un profil de classification avant d’activer la classification automatique¶
En tant qu’administrateur, donnez à l’ingénieur des données les rôles et privilèges dont il a besoin pour classer automatiquement les tables dans un schéma et définir des balises sur les colonnes.
Créez le profil de classification avec un mappage de balises et des classificateurs personnalisés :
CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE my_classification_profile( { 'minimum_object_age_for_classification_days':0, 'auto_tag':true, 'tag_map': { 'column_tag_map':[ { 'tag_name':'tag_db.sch.pii', 'tag_value':'highly sensitive', 'semantic_categories':['NAME','NATIONAL_IDENTIFIER'] }, { 'tag_name':'tag_db.sch.pii', 'tag_value':'sensitive', 'semantic_categories':['EMAIL','MEDICAL_CODE'] } ] }, 'classify_views': true 'custom_classifiers': { 'medical_codes': medical_codes!list(), 'finance_codes': finance_codes!list() } } );
Appelez la procédure stockée SYSTEM$CLASSIFY pour tester les mappages de balises sur la table
table1avant d’activer la classification automatique.CALL SYSTEM$CLASSIFY( 'db.sch.table1', 'db.sch.my_classification_profile' );
La clé
tagsde la sortie contient des informations sur la définition de la balise (truesi elle est définie,falsesinon), le nom de la balise définie et la valeur de la balise :{ "classification_profile_config": { "classification_profile_name": "db.schema.my_classification_profile" }, "classification_result": { "EMAIL": { "alternates": [], "recommendation": { "confidence": "HIGH", "coverage": 1, "details": [], "privacy_category": "IDENTIFIER", "semantic_category": "EMAIL", "tags": [ { "tag_applied": true, "tag_name": "snowflake.core.semantic_category", "tag_value": "EMAIL" }, { "tag_applied": true, "tag_name": "snowflake.core.privacy_category", "tag_value": "IDENTIFIER" }, { "tag_applied": true, "tag_name": "tag_db.sch.pii", "tag_value": "sensitive" } ] }, "valid_value_ratio": 1 }, "FIRST_NAME": { "alternates": [], "recommendation": { "confidence": "HIGH", "coverage": 1, "details": [], "privacy_category": "IDENTIFIER", "semantic_category": "NAME", "tags": [ { "tag_applied": true, "tag_name": "snowflake.core.semantic_category", "tag_value": "NAME" }, { "tag_applied": true, "tag_name": "snowflake.core.privacy_category", "tag_value": "IDENTIFIER" }, { "tag_applied": true, "tag_name": "tag_db.sch.pii", "tag_value": "highly sensitive" } ] }, "valid_value_ratio": 1 } } }
Après avoir vérifié que la classification automatique basée sur le profil de classification donnera le résultat souhaité, définissez l’instance du profil de classification sur la base de données.
ALTER DATABASE mydb SET CLASSIFICATION_PROFILE = 'mydb.sch.my_classification_profile';