Tutoriel : Classer et baliser automatiquement les données sensibles

Introduction

L’identification et le suivi de vos données sensibles sont simples et directs. Snowflake fournit un algorithme intégré permettant d’identifier vos données sensibles et de les baliser automatiquement à l’aide de balises système afin de faciliter le suivi du type des données et de leur degré de sensibilité.

Avec une configuration minimale, vous pouvez également configurer un schéma pour que Snowflake effectue automatiquement ce processus de classification pour les données nouvelles et changeantes, et pour qu’il applique des balises définies par l’utilisateur en plus des balises du système.

Dans ce tutoriel, vous ferez ce qui suit :

  • Configurer les ressources nécessaires à la réalisation du tutoriel, y compris une balise définie par l’utilisateur et appliquée aux données sensibles.

  • Créer un profil de classification, que Snowflake utilise pour classifier automatiquement les données au fur et à mesure qu’elles sont ajoutées à un schéma.

  • Ajouter un mappage de balises au profil de classification afin que la balise définie par l’utilisateur soit appliquée aux données que Snowflake identifie comme sensibles.

  • Voir les résultats de la classification.

Astuce

Bien que cela ne soit pas présenté dans ce tutoriel, vous pouvez également personnaliser la classification pour identifier les données sensibles à l’aide d’expressions régulières définies par l’utilisateur et baliser ces données à l’aide de catégories sémantiques définies par l’utilisateur. Pour plus d’informations, voir Mise en œuvre de la classification automatique des clients.

Configurer la base de données de gouvernance

Dans ce tutoriel, vous créerez les objets Snowflake (une balise définie par l’utilisateur et un profil de classification) nécessaires pour gouverner vos données. Selon les meilleures pratiques, ces objets sont créés dans une base de données dédiée à la gouvernance.

Ouvrez une feuille de calcul SQL, puis exécutez les instructions suivantes pour créer une base de données et un schéma pour les objets de gouvernance :

USE ROLE ACCOUNTADMIN;

CREATE DATABASE IF NOT EXISTS governance_db;
CREATE SCHEMA IF NOT EXISTS governance_db.sch;
Copy

Note

Par souci de simplicité, vous utiliserez le rôle système ACCOUNTADMIN pour éviter de paramétrer les privilèges nécessaires à la configuration de la classification des données sensibles. Dans la pratique, vous ne devriez pas utiliser ce rôle puissant, mais plutôt créer des rôles personnalisés avec les privilèges requis.

Configurez vos données

Avant de paramétrer les données pour ce tutoriel, créez un entrepôt pour alimenter une table :

CREATE WAREHOUSE IF NOT EXISTS tutorial_wh;
Copy

Créer une table

  1. Créez la base de données et le schéma qui contiendront la table à classifier.

    CREATE DATABASE IF NOT EXISTS data_db;
    CREATE SCHEMA IF NOT EXISTS data_db.sch;
    
    Copy
  2. Créez la structure de table qui contiendra les données sensibles.

    CREATE TABLE data_db.sch.customers (
      account_number NUMBER(38,0),
      first_name VARCHAR(16777216),
      last_name VARCHAR(16777216),
      email VARCHAR(16777216)
    );
    
    Copy

Insérer des valeurs dans la table

Ajoutez des données à la table que vous avez créée :

USE WAREHOUSE tutorial_wh;

INSERT INTO data_db.sch.customers (account_number, first_name, last_name, email)
  VALUES
    (1589420, 'john', 'doe', 'john.doe@example.com'),
    (2834123, 'jane', 'doe', 'jane.doe@example.com'),
    (4829381, 'jim', 'doe', 'jim.doe@example.com'),
    (9821802, 'susan', 'smith', 'susan.smith@example.com'),
    (8028387, 'bart', 'simpson', 'bart.barber@example.com');
Copy

Créer un profil de classification

Vous avez maintenant une table remplie de données que vous devez classifier pour protéger vos données sensibles. Comme vous souhaitez que Snowflake classifie automatiquement les données au fur et à mesure qu’elles sont ajoutées à un schéma, vous allez devoir créer un profil de classification.

Un profil de classification contrôle la fréquence de classification des données d’un schéma ainsi que ce qui se passe au cours du processus de classification. Chaque profil de classification est une instance de la classe CLASSIFICATION_PROFILE.

Pour créer le profil de classification pour votre schéma, procédez comme suit :

CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
  governance_db.sch.my_classification_profile(
      {
        'minimum_object_age_for_classification_days': 0,
        'maximum_classification_validity_days': 30,
        'auto_tag': true
      });
Copy

Lorsque ce profil de classification est défini sur votre schéma, il se produit ce qui suit :

  • La classification commence en moins d’une journée ('minimum_object_age_for_classification_days': 0).

  • Après la classification initiale, Snowflake effectue un nouveau contrôle tous les 30 jours pour vérifier si les tables doivent être reclassifiées ('maximum_classification_validity_days': 30).

  • Des balises de classification seront automatiquement paramétrées sur les colonnes identifiées comme contenant des données sensibles ('auto_tag': true).

Ajouter un mappage de balises au profil de classification

Parce que vous avez spécifié 'auto_tag': true dans votre profil de classification, Snowflake appliquera automatiquement les balises de classification système lorsqu’il classifiera des données comme sensibles. La balise SEMANTIC_CATEGORY classifie le type des données, par exemple en identifiant les données comme un nom ou une adresse. La balise PRIVACY_CATEGORY classifie la sensibilité des données, par exemple en identifiant les données comme un identifiant ou un quasi-identifiant.

Supposons maintenant que vous souhaitiez aller plus loin et appliquer automatiquement votre propre balise définie par l’utilisateur en fonction de la classification des données. Ce tutoriel vous montre comment faire !

Pour créer la balise personnalisée que vous souhaitez appliquer aux données sensibles, exécutez l’instruction suivante :

CREATE TAG governance_db.sch.tutorial_pii;
Copy

Ensuite, vous modifierez le profil de classification pour que cette balise définie par l’utilisateur soit appliquée lorsque Snowflake détermine qu’une colonne contient des noms. L’ajout d’un mappage de balises au profil de classification permet de configurer comment et quand la balise définie par l’utilisateur est appliquée.

Pour ajouter le mappage de balise à votre profil de classification, exécutez la méthode classification_profile_name!SET_TAG_MAP :

CALL governance_db.sch.my_classification_profile!SET_TAG_MAP(
  {'column_tag_map':[
    {
      'tag_name':'governance_db.sch.tutorial_pii',
      'tag_value':'sensitive_name',
      'semantic_categories':['NAME']
    }]});
Copy

Si la classification automatique détermine que la catégorie sémantique définie par le système est NAME, la balise définie par l’utilisateur tutorial_pii est paramétrée sur la colonne. Sur la base du profil de classification, la valeur de la balise définie par l’utilisateur tutorial_pii est réglée sur sensitive_name.

Note

Vous pouvez également définir un mappage de balises lors de la création du profil de classification.

Paramétrage du profil de classification d’un schéma

Votre profil de classification étant configuré, vous êtes prêt à le définir sur le schéma. Le processus de classification automatique est alors lancé.

ALTER SCHEMA data_db.sch
  SET CLASSIFICATION_PROFILE = 'governance_db.sch.my_classification_profile';
Copy

C’est tout, Snowflake fait le reste ! Snowflake commence à classifier les données existantes, et continuera à classifier les nouvelles données au fur et à mesure qu’elles seront ajoutées au schéma.

Voir les résultats de la classification

Avant d’en finir avec cette partie du tutoriel, vous devrez attendre une heure pour que Snowflake termine le processus de classification.

Au bout d’une heure, exécutez l’instruction suivante pour récupérer les résultats de la classification :

CALL SYSTEM$GET_CLASSIFICATION_RESULT('data_db.sch.customers');
Copy

Dans les résultats, remarquez ce qui suit :

  • La colonne ACCOUNT_NUMBER n’étant pas classifiée comme sensible, aucune balise de classification ne lui a été attribuée.

  • La colonne EMAIL a été signalée comme appartenant à la catégorie sémantique EMAIL et à la catégorie de confidentialité IDENTIFIER.

  • Sur la base du mappage du profil de classification, la balise définie par l’utilisateur governance_db.sch.tutorial_pii a été attribuée aux colonnes dont la catégorie sémantique est NAME (voir les lignes surlignées dans la sortie).

  {
  "classification_profile_config": {
    "classification_profile_name": "GOVERNANCE_DB.SCH.MY_CLASSIFICATION_PROFILE"
  },
  "classification_result": {
    "ACCOUNT_NUMBER": {
      "alternates": []
    },
    "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"
          }
        ]
      },
      "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": "governance_db.sch.tutorial_pii",
            "tag_value": "sensitive_name"
          }
        ]
      },
      "valid_value_ratio": 1
    },
    "LAST_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": "governance_db.sch.tutorial_pii",
            "tag_value": "sensitive_name"
          }
        ]
      },
      "valid_value_ratio": 1
    }
  }
}

Nettoyage, résumé et ressources supplémentaires

Félicitations ! Vous avez terminé ce tutoriel avec succès.

En résumé, vous avez appris à faire ce qui suit :

  • Créer un profil de classification pour contrôler la manière dont la classification automatique est mise en œuvre.

  • Ajouter un mappage de balises au profil de classification afin que les balises définies par l’utilisateur soient automatiquement réglées sur les colonnes contenant des données sensibles.

  • Paramétrer le profil de classification d’un schéma pour lancer la classification automatique.

  • Voir les résultats de la classification automatique.

Supprimer des objets du tutoriel

Si vous envisagez de répéter le tutoriel, vous pouvez conserver les objets que vous avez créés.

Sinon, supprimez les objets du tutoriel en procédant comme suit :

DROP TAG governance_db.sch.tutorial_pii;
DROP DATABASE governance_db;
DROP DATABASE data_db;
DROP WAREHOUSE tutorial_wh;
Copy

Quelle est la prochaine étape ?

Pour plus de détails sur la mise en œuvre de la classification automatique des données sensibles, y compris les coûts associés et la mise en œuvre d’une classification personnalisée, voir Classer automatiquement les données sensibles.