Use SQL to set up sensitive data classification¶
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.
The basic workflow for using SQL to classify sensitive data consists of the following steps:
Create a classification profile that controls what happens during sensitive data classification.
Set the classification profile on a database or schema to automatically classify tables in the entity.
Pour des exemples de bout en bout de ce workflow, voir Exemples.
À propos des profils de classification¶
A classification profile defines the criteria that are used to automatically classify tables in a database. This criteria includes:
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.
When a data engineer assigns the classification profile to a database, sensitive data in the tables that belong to the database is automatically classified on the schedule defined by the profile. A data engineer can assign the same classification profile to multiple databases, or create multiple classification profiles to set different classification criteria for different databases.
To use SQL to create a classification profile, run the CREATE CLASSIFICATION_PROFILE command to create an instance of the CLASSIFICATION_PROFILE class.
For an example of using the CREATE CLASSIFICATION_PROFILE command to create a classification profile, see Exemples.
À propos du mappage des balises¶
You can use the classification profile to map SEMANTIC_CATEGORY system tags to one or more object tags. With this tag mapping, a column with sensitive data can be automatically assigned a user-defined tag based on its classification. The tag map can be added while creating the classification profile or later by calling the <classification_profile_name>!SET_TAG_MAP method.
Regardless of whether you are defining the tag map while creating the classification profile or after, the contents of the map are specified
as a JSON object. This JSON object contains the 'column_tag_map' key, which is an array of objects that specify a user-defined tag,
the string value of that tag, and the semantic categories to which the tag is being mapped.
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.
If there is a conflict with a manually assigned tag and a tag applied by automatic classification, an error occurs. For information about tracking these errors, see Dépannage de la classification des données sensibles.
Définir un profil de classification sur une base de données¶
Implement sensitive data classification by setting a classification profile on a database. After you set the classification profile on the database, all tables and views within that database are automatically monitored by sensitive data classification.
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.
To set a classification profile, use an ALTER DATABASE or ALTER SCHEMA command to set
the CLASSIFICATION_PROFILE parameter. For example, to set a classification profile my_profile so all tables and views in the my_db
database are monitored by sensitive data classification, run the following command:
ALTER DATABASE my_db
SET CLASSIFICATION_PROFILE = 'governance_db.classify_sch.my_profile';
Contrôle d’accès¶
Here are the privileges and roles that let you work with classification profiles and enable sensitive data classification.
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';