Introduction à la classification

Cette rubrique fournit des informations sur le fonctionnement de la classification.

Pour plus d’informations sur l’utilisation des classificateurs personnalisés, voir Classification des données personnalisée.

Dans ce chapitre :

Vue d’ensemble

La classification est un processus en plusieurs étapes qui associe des balises système définies par Snowflake à des colonnes en analysant les champs et les métadonnées à la recherche de données personnelles ; ces données peuvent être suivies par un ingénieur des données via SQL et Snowsight. Un ingénieur des données peut classer les colonnes d’une table afin de déterminer si la colonne contient certains types de données qui doivent être suivies ou protégées, comme un identificateur unique (données de passeport ou de compte bancaire), un quasi-identificateur (la ville dans laquelle vit la personne) ou une valeur sensible (le salaire d’une personne).

En suivant les données à l’aide d’une balise système et en protégeant les données à l’aide d’une politique de masquage ou d’accès aux lignes, l’ingénieur des données peut améliorer la posture de gouvernance associée aux données. Le résultat global des étapes de classification et de protection des données est de faciliter la conformité aux réglementations sur la confidentialité des données.

Vous pouvez classer une seule ou plusieurs tables d’un schéma. Snowflake fournit des balises système prédéfinies pour vous permettre de classer et de baliser les colonnes, ou vous pouvez utiliser des classificateurs personnalisés pour définir votre propre catégorie sémantique en fonction de votre connaissance de vos données. Vous pouvez également opter pour une approche qui utilise les balises système Snowflake et des classificateurs personnalisés en fonction de la posture de gouvernance que vous souhaitez adopter.

La classification offre les avantages suivants aux administrateurs de la confidentialité des données et de la gouvernance des données :

Accès aux données:

Les résultats de la classification des données des colonnes peuvent aider les administrateurs de la gestion des identités et des accès à évaluer et à maintenir leurs hiérarchies de rôles Snowflake pour s’assurer que les rôles Snowflake ont l’accès approprié aux données sensibles ou PII.

Partage de données:

Le processus de classification peut aider à identifier et à confirmer l’emplacement de stockage des données PII. Ensuite, un fournisseur de partage de données peut utiliser les résultats de la classification pour déterminer s’il doit partager des données et comment mettre les données PII à la disposition d’un consommateur de partage de données.

Application de la politique:

L’utilisation de colonnes contenant des données PII, comme la référence à des colonnes dans des tables de base pour créer une vue ou une vue matérialisée, peut aider à déterminer la meilleure approche pour protéger les données avec une politique de masquage ou une politique d’accès aux lignes.

Balises système et catégories

Les balises système sont des balises que Snowflake crée, maintient et met à disposition dans la base de données SNOWFLAKE partagée. Il existe deux balises du système de classification, toutes deux présentes dans le schéma SNOWFLAKE.CORE :

  • SNOWFLAKE.CORE.SEMANTIC_CATEGORY

  • SNOWFLAKE.CORE.PRIVACY_CATEGORY

L’ingénieur des données attribue ces balises à une colonne contenant des données personnelles ou sensibles.

Valeurs de chaîne.:

Snowflake enregistre l’affectation d’une balise système à une colonne sous la forme d’une paire clé-valeur, où la valeur est une chaîne. Snowflake définit les valeurs de chaîne autorisées pour chaque balise du système de classification car Snowflake gère chacune de ces balises système.

Les noms des balises, SEMANTIC_CATEGORY et PRIVACY_CATEGORY, correspondent aux catégories de classification que Snowflake attribue aux données des colonnes pendant le processus d’échantillonnage des colonnes (c’est-à-dire que les noms des balises et des catégories utilisent les mêmes mots) :

Catégorie sémantique:

La catégorie sémantique identifie les attributs personnels.

Une liste non exhaustive de classification des attributs personnels comprend le nom, l’âge et le sexe. Ces trois attributs sont des valeurs de chaîne possibles lors de l’attribution de la balise SEMANTIC_CATEGORY à une colonne.

La classification permet de détecter des informations provenant de différents pays, tels que l’Australie, le Canada et le Royaume-Uni. Par exemple, si la colonne de votre tableau contient des informations sur les numéros de téléphone, le processus d’analyse peut différencier les différentes valeurs des numéros de téléphone de chacun de ces pays. Pour obtenir la liste complète des valeurs internationales prises en charge, consultez Balises système et catégories (dans cette rubrique).

Catégorie de confidentialité:

Si l’analyse détermine que les données de la colonne correspondent à une catégorie sémantique, Snowflake classe en outre la colonne dans une catégorie de confidentialité. La catégorie de confidentialité a trois valeurs : identifiant, quasi-identifiant ou sensible. Ces trois valeurs sont les valeurs de chaîne qui peuvent être spécifiées lors de l’attribution de la balise PRIVACY_CATEGORY à une colonne.

  • Identifiant : ces attributs permettent d’identifier de manière unique un individu. Des exemples d’attributs sont le nom, le numéro de sécurité sociale et le numéro de téléphone.

    Les attributs d’identifiant sont synonymes d”identifiants directs.

  • Quasi-identifiant : Ces attributs peuvent identifier de manière unique un individu lorsque deux ou plusieurs de ces attributs sont combinés. L’âge et le sexe sont des exemples d’attributs.

    Les quasi-identifiants sont synonymes d”identifiants indirects.

  • Sensible : ces attributs ne sont pas considérés comme suffisants pour identifier un individu mais sont des informations que l’individu préférerait ne pas divulguer pour des raisons de confidentialité.

    Actuellement, le seul attribut que Snowflake évalue comme sensible est le salaire.

  • Insensible : ces attributs ne contiennent pas d’informations personnelles ou sensibles.

Le tableau suivant résume la relation entre chaque catégorie de classification et balise système et les valeurs de chaîne pour chaque balise du système de classification. Snowflake prend en charge les valeurs des balises SEMANTIC_CATEGORY internationales qui concernent certains pays. Les codes de pays sont basés sur la norme ISO-3166-1 alpha-2. D’autres catégories sémantiques telles que EMAIL et GENDER n’ont pas de code pays. Pour suivre les informations internationales, l’ingénieur des données utilise la valeur de la colonne de valeurs des balises SEMANTIC_CATEGORY lorsqu’il définit une balise système sur une colonne.

Valeurs PRIVACY_CATEGORY

Valeurs SEMANTIC_CATEGORY

Pays pris en charge

IDENTIFIER

  • BANK_ACCOUNT

  • DRIVERS_LICENSE

  • MEDICARE_NUMBER

  • NATIONAL_IDENTIFIER

  • ORGANIZATION_IDENTIFIER

  • PASSPORT

  • PHONE_NUMBER

  • STREET_ADDRESS

  • TAX_IDENTIFIER

  • EMAIL

  • IBAN

  • IMEI

  • IP_ADDRESS

  • NAME

  • PAYMENT_CARD

  • URL

  • VIN

  • CA, NZ, US

  • AU, CA, US

  • AU, NZ

  • CA, GB, SG, US

  • AU, SG

  • AU, CA, NZ, SG, US

  • AU, CA, GB, US

  • CA, US

  • AU, NZ

QUASI_IDENTIFIER

  • ADMINISTRATIVE_AREA_1

  • ADMINISTRATIVE_AREA_2

  • CITY

  • POSTAL_CODE

  • AGE

  • COUNTRY

  • DATE_OF_BIRTH

  • ETHNICITY

  • GENDER

  • LAT_LONG

  • LATITUDE

  • LONGITUDE

  • MARITAL_STATUS

  • OCCUPATION

  • YEAR_OF_BIRTH

  • CA, NZ, US

  • US

  • CA, NZ, US

  • AU, CA, CH, NZ, GB, US

SENSITIVE

  • SALARY

Note

Plusieurs valeurs de chaîne de balise sémantique des trois catégories de confidentialité peuvent être considérées comme des « données personnelles sensibles », des « catégories spéciales de données » ou des termes similaires en vertu des lois et des règlements. De plus, elles peuvent nécessiter des protections ou des contrôles supplémentaires.

Actuellement, la classification ne permet pas de marquer les données de colonne comme étant à la fois sensibles et identifiantes. En d’autres termes, lorsque vous définissez la balise système d’une colonne donnée, vous devez choisir la balise SEMANTIC_CATEGORY ou PRIVACY_CATEGORY.

Objets et types de données pris en charge

Snowflake prend en charge la classification des données stockées dans tous les types de tables et de vues, notamment les tables externes, les vues matérialisées et les vues sécurisées.

Vous pouvez classer les colonnes des tables et des vues pour tous les types de données pris en charge , à l’exception des types de données suivants :

  • GEOGRAPHY

  • BINARY

  • VARIANT

    Notez que vous pouvez classer une colonne avec le type de données VARIANT lorsque le type de données de la colonne peut être converti vers un type de données NUMBER ou STRING. Snowflake ne classe pas la colonne si celle-ci contient JSON, XML ou d’autres données semi-structurées.

Si une table contient des colonnes dont le type de données n’est pas pris en charge ou si la colonne contient toutes les valeurs NULL, le processus de classification ignore les colonnes et ne les inclut pas dans la sortie.

Important

Si vos données représentent des valeurs NULL avec une valeur autre que NULL, la précision des résultats de la classification peut être affectée.

Coûts de calcul

Le processus de classification requiert des ressources de calcul, qui sont fournies par l’entrepôt virtuel qui est utilisé et en fonctionnement au moment de la classification.

Le temps nécessaire pour classifier les données d’une table/vue (et, par conséquent, le nombre de crédits consommés par l’entrepôt) est fonction de la quantité de données à classifier.

En particulier, si une table ou une vue comporte un grand nombre de colonnes qui prennent en charge la classification, le temps de traitement peut en être affecté. Toutefois, en règle générale, la vitesse de traitement évolue de façon linéaire avec la taille de l’entrepôt. En d’autres termes, chaque augmentation de la taille d’un entrepôt (de X-small à Small) réduit généralement le temps de traitement de moitié.

Utilisez les directives générales suivantes pour sélectionner une taille d’entrepôt :

  • Le temps de traitement n’est pas un problème : entrepôt X-Small.

  • Jusqu’à 100 colonnes dans une table : entrepôt Small.

  • 101 à 300 colonnes dans une table : entrepôt Medium.

  • 301 colonnes ou plus dans une table : entrepôt Large.

Pour plus de détails, voir Considérations relatives aux entrepôts.

Recommandations

Pour tirer parti de la fonction Classification et optimiser vos capacités de suivi des données PII, procédez comme suit :

Validation:

Interrogez d’abord les vues Account Usage :

  • ACCESS_HISTORY: déterminer les objets de table et de vue auxquels on accède le plus fréquemment.

  • OBJECT_DEPENDENCIES: déterminer les références de métadonnées entre deux ou plusieurs objets.

Utilisez les résultats de la requête pour donner la priorité à l’affectation des balises du système de classification au niveau du schéma ou de la base de données.

Noms de colonne:

Utilisez des noms de colonne sensés dans vos objets de table et formez les créateurs de table à respecter les directives internes de création de table.

Types de données:

Utilisez des types de données sensés pour les colonnes. Par exemple, une colonne AGE doit avoir le type de données NUMBER.

VARIANT:

Si une colonne a un type de données VARIANT, utilisez la commande FLATTEN sur la colonne avant de classer la table.

Entrepôt:

Utilisez la taille d’entrepôt appropriée lors de la classification des données. Pour plus de détails, voir Coûts de calcul (dans cette rubrique).

Gestion des classifications

Référence aux privilèges

Le modèle de privilège de la Classification des données permet à l’administrateur de la confidentialité des données de déterminer quels personas peuvent classer les tables et baliser les colonnes. Par exemple, un seul rôle peut disposer de tous les privilèges nécessaires, ou l’administrateur de la confidentialité des données peut déléguer les droits à différents rôles afin de remplir les conditions de séparation des tâches (SoD). Un exemple de combinaison de droits valide est présenté à la section Commencer à classer les données de Classification des données d’utilisation.

En tant qu’administrateur, vous disposez de différentes options suivant la manière dont vous souhaitez gérer les rôles ou les personas concernés. Les options offrent une certaine flexibilité quant à la posture de gouvernance que vous souhaitez adopter. Par exemple :

  • Le propriétaire de la table (le rôle disposant du privilège OWNERSHIP sur la table) peut classer la table et définir des balises système sur les colonnes.

  • Un rôle personnalisé disposant du privilège SELECT sur la table et du privilège APPLY TAG sur le compte peut classer la table et définir des balises système sur les colonnes.

  • Si vous souhaitez que différents rôles ou personas soient impliqués dans la classification et le balisage des colonnes, vous pouvez accorder le privilège SELECT sur la table à un rôle et le privilège APPLY TAG sur le compte à un autre rôle.

Le tableau suivant résume les différentes options de droit pour classer une table, définir les balises système de la Classification des données sur les colonnes et effectuer ces deux tâches :

Privilège ou rôle

Classer une ou des tables

Définir des balises système sur des colonnes

SELECT sur la table ou la vue.

OWNERSHIP sur la table.

APPLY TAG sur le compte.

Rôle ACCOUNTADMIN.

OWNERSHIP sur la base de données ou le schéma.

Important

  • La classification des tables nécessite un entrepôt en cours d’exécution. Le rôle utilisé pour classer une table doit au minimum disposer du privilège USAGE sur un entrepôt.

  • Vous pouvez accorder le rôle de base de données SNOWFLAKE.GOVERNANCE_VIEWER à un rôle de compte pour permettre aux utilisateurs titulaires de ce rôle de compte d’interroger la vue DATA_CLASSIFICATION_LATEST pour voir les résultats les plus récents d’une table classée.

Balises du système de suivi

Snowflake fournit des vues et des fonctions intégrées pour suivre l’utilisation des balises du système de classification :

  • Pour trouver les colonnes avec une balise système dans votre compte, interrogez la vue Account Usage TAG_REFERENCES :

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES
        WHERE TAG_NAME = 'PRIVACY_CATEGORY'
        ORDER BY OBJECT_DATABASE, OBJECT_SCHEMA, OBJECT_NAME, COLUMN_NAME;
    
    Copy
  • Pour trouver les colonnes avec une balise système pour une table ou une vue dans une base de données spécifique, appelez la fonction de table TAG_REFERENCES Information Schema :

    SELECT * FROM
      TABLE(
        MY_DB.INFORMATION_SCHEMA.TAG_REFERENCES(
          'my_db.my_schema.hr_data.fname',
          'COLUMN'
        ));
    
    Copy
  • Pour trouver chaque ensemble de balises sur chaque colonne d’une table ou d’une vue dans une base de données spécifique, appelez la fonction de table Information Schema TAG_REFERENCES_ALL_COLUMNS :

    SELECT * from
      TABLE(
        MY_DB.INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
          'my_db.my_schema.hr_data',
          'table'
        ));
    
    Copy
  • Pour trouver une valeur de balise spécifique pour une colonne, appelez la fonction système SYSTEM$GET_TAG :

    SELECT SYSTEM$GET_TAG(
      'SNOWFLAKE.CORE.PRIVACY_CATEGORY',
      'hr_data.fname',
      'COLUMN'
      );
    
    Copy