Balisage d’objets

Les balises permettent aux responsables des données de suivre les données sensibles pour les cas de conformité, de découverte, de protection et d’utilisation des ressources par le biais d’une approche centralisée ou décentralisée de la gestion de la gouvernance des données.

Dans ce chapitre :

Qu’est-ce qu’une balise ?

Une balise est un objet de niveau schéma qui peut être associé à un autre objet Snowflake. Une balise peut se voir attribuer une valeur de chaîne arbitraire lors de l’association de cette balise à un objet Snowflake. Snowflake stocke la balise et sa valeur de chaîne sous forme de paire clé-valeur sous la forme key = 'value'. Dans cet exemple, cost_center = 'sales', cost_center est la balise et 'sales' est la valeur de la chaîne. La balise doit être unique pour votre schéma et la valeur de la balise est toujours une chaîne.

Une même balise peut être affectée à différents types d’objets en même temps (par exemple, entrepôt et table simultanément). Au moment de l’association à l’objet Snowflake, la valeur de la chaîne de balise peut être dupliquée ou rester unique. Par exemple, plusieurs tables peuvent se voir attribuer la balise cost_center et la valeur de la chaîne s de cette balise peut toujours être 'sales'. La valeur de la chaîne peut également être différente (par exemple, 'engineering', 'marketing', 'finance'). Après avoir défini les balises et les avoir attribuées aux objets Snowflake, les balises peuvent être interrogées pour suivre l’utilisation des objets afin de faciliter les opérations de gouvernance des données, telles que le suivi, l’audit et la création de rapports.

Snowflake prend en charge l’attribution de balises aux objets et colonnes Snowflake suivants :

Étant donné que les balises peuvent être attribuées à des tables, des vues et des colonnes, le fait de définir une balise puis de l’interroger permet de découvrir une multitude d’objets et de colonnes de la base de données qui contiennent des informations sensibles. Lors de la découverte, les gestionnaires de données peuvent déterminer la meilleure façon de rendre ces données disponibles, par exemple en effectuant un filtrage sélectif à l’aide des politiques d’accès aux lignes, ou en utilisant des politiques de masquage afin de déterminer si les données sont tokenisées, entièrement masquées, partiellement masquées ou non masquées.

L’attribution de balises aux entrepôts permet un suivi précis de l’utilisation des ressources. L’interrogation des balises sur les ressources permet de regrouper facilement les ressources par centre de coûts ou autres unités organisationnelles. En outre, la balise peut faciliter l’analyse d’activités commerciales à relativement court terme, telles que des projets, afin de fournir une vision plus granulaire de ce qui a été utilisé, et de quand et comment les ressources ont été utilisées.

Lignée de balises

Snowflake recommande de définir les clés de balises aussi près que possible de la hiérarchie des objets sécurisables dans votre environnement Snowflake. Une balise est héritée en fonction de la hiérarchie des objets sécurisables de Snowflake.

The tag administrator can apply masking policies to tables and views.

L’héritage des balises signifie que si une balise est appliquée à une table, elle s’applique également aux colonnes de cette table. Ce comportement est appelé « lignée de balises ».

La balise héritée peut être remplacée sur un objet donné. Si une colonne de table hérite de la balise cost_center = 'sales', celle-ci peut être remplacée par une balise plus spécifique telle que cost_center = 'sales_na', où na spécifie le centre de coûts des ventes en Amérique du Nord. En outre, une nouvelle balise peut être appliquée à la colonne de la table (par exemple, classification = 'secret').

Après avoir défini les clés de balises et assigné des balises aux objets Snowflake, suivez les balises, les références de balises et la lignée de balises à l’aide des fonctions de table spécifiées ou interrogez les vues comme indiqué dans Implémentation des balises (dans cette rubrique).

Avantages des balises

Facilité d’utilisation

Définissez une balise une fois et appliquez-la à autant d’objets différents que vous le souhaitez.

Lignée de balises

Étant donné que les balises sont héritées, l’application de la balise aux objets situés à un niveau supérieur dans la hiérarchie des objets sécurisables entraîne l’application de la balise à tous les objets enfants. Par exemple, si une balise est définie sur une table, la balise sera héritée par toutes les colonnes de cette table.

Attribution cohérente avec réplication

Snowflake réplique les balises et leurs associations dans la base de données principale vers la base de données secondaire.

Pour plus d’informations, voir Réplication (dans ce chapitre).

Suivi des données sensibles et utilisation des ressources

Les balises simplifient l’identification des données sensibles (par exemple, PII, Secret) et apportent de la visibilité à l’utilisation des ressources de Snowflake. Avec les données et les métadonnées dans le même système, les analystes peuvent rapidement déterminer quelles ressources consomment le plus de crédits Snowflake en se basant sur la définition de la balise (par exemple cost_center, department).

Gestion centralisée ou décentralisée

Les balises prennent en charge différentes approches de gestion pour faciliter la conformité aux exigences réglementaires internes et externes.

Dans une approche centralisée, le rôle personnalisé tag_admin crée et applique des balises aux objets Snowflake.

Dans une approche décentralisée, les équipes individuelles appliquent des balises aux objets Snowflake et le rôle personnalisé tag_admin crée des balises afin de garantir une dénomination cohérente des balises.

Utilisation des balises avec les objets et les fonctionnalités de Snowflake

Les paragraphes suivants décrivent comment les balises affectent les objets et les fonctionnalités dans Snowflake.

Objets au niveau du compte

Snowflake prend en charge l’attribution de balises aux objets de niveau compte suivants :

  • Entrepôt

  • Base de données

  • Utilisateur

  • Rôle

Objets au niveau de la base de données

  • Schéma

Objets de niveau schéma

Snowflake prend en charge l’attribution de balises aux objets de niveau schéma suivants :

  • Table

  • Table externe

  • Vue

  • Vue matérialisée

  • Zone de préparation

Instructions CREATE TABLE

Avec CREATE TABLE … LIKE, les balises associées à la table source sont associées à la table cible.

Réplication

Les balises peuvent être répliquées.

L’opération de réplication échoue si l’une des conditions suivantes est vraie :

  • La base de données principale se trouve dans un compte Enterprise (ou supérieur) et contient une balise, mais au moins un des comptes approuvés pour la réplication se trouve sur des éditions inférieures.

  • Un objet contenu dans la base de données principale fait référence à une balise dans une autre base de données.

    Note

    Si la réplication utilise Failover ou Failback, le compte Snowflake doit être Business Critical Edition ou supérieur.

    Pour plus d’informations, voir Réplication de base de données et basculement/restauration automatique.

Clonage

Snowflake prend en charge le comportement suivant des balises pendant les opérations de clonage :

  • Les associations de balises dans l’objet source sont maintenues dans les objets clonés.

  • Si vous clonez une base de données ou un schéma, les balises résidant dans cette base de données ou ce schéma sont également clonées.

  • Après le clonage, les objets et leurs associations de balises sont mappés aux objets et balises clonés, et non aux objets et balises d’origine.

Implémentation des balises

L’implémentation des balises dans Snowflake est un processus en quatre étapes :

  1. Définissez un rôle personnalisé et attribuez des privilèges.

  2. Créez une balise en utilisant une instruction CREATE TAG.

  3. Associez une balise à un objet Snowflake à l’aide de la commande ALTER <objet>.

  4. Suivez les balises à l’aide de fonctions de table et de vues.

Pour simplifier, ces étapes supposent une approche de gestion centralisée des balises, où le rôle personnalisé tag_admin dispose des privilèges CREATE et APPLY pour la balise.

Étape 1 : Créer un rôle personnalisé et attribuer des privilèges

Dans une approche de gestion centralisée, le rôle personnalisé tag_admin est chargé de créer et d’attribuer des balises aux objets Snowflake.

Notez que cet exemple utilise le rôle système ACCOUNTADMIN. Si l’utilisation de ce rôle à privilèges plus élevés dans un environnement de production n’est pas souhaitable, vérifiez que le rôle qui attribue des privilèges au rôle personnalisé tag_admin dispose des privilèges nécessaires pour qualifier le rôle personnalisé tag_admin. Pour plus d’informations, voir Gestion des balises (dans ce chapitre).

use role useradmin;
create role tag_admin;
use role accountadmin;
grant create tag on schema <schema_name> to role tag_admin;
grant apply tag on account to role tag_admin;

Étape 2 : Créer une balise

Exécutez une instruction CREATE TAG pour créer une balise.

use role tag_admin;
use schema my_db.my_schema;
create tag cost_center;

Étape 3 : Associer une balise à un objet Snowflake

Associez une balise à un objet Snowflake en utilisant une instruction ALTER <objet>.

Par exemple, pour définir une balise sur un entrepôt, utilisez la commande ALTER WAREHOUSE.

use role tag_admin;
alter warehouse wh1 set tag cost_center = 'sales';

Pour définir ou désactiver une balise sur une colonne, utilisez la commande ALTER TABLE … MODIFY COLUMN pour une colonne de table ou la commande ALTER VIEW … MODIFY COLUMN pour une colonne de vue. Notez que plus d’une balise peut être activée ou désactivée dans une seule instruction.

-- For a table or external table column

alter table <table_name> modify column <column_name> set tag <tag_key> = '<tag_value>' [ , <tag_key> = ’<tag_value>’ , ... ];
alter table <table_name> modify column <column_name> unset <tag_key> [ , <tag_key> , ... ];

-- For a view or materialized view column

alter view <view_name> modify column <column_name> set tag <tag_key> = '<tag_value>' [ , <tag_key> = ’<tag_value>’ , ... ];
alter view <view_name> modify column <column_name> unset <tag_key> [ , <tag_key> , ... ];

Étape 4 : Suivre l’utilisation de la balise

Vous pouvez suivre l’utilisation des balises grâce à deux vues différentes Account Usage, une fonction de table Information Schema, une fonction de table Account Usage et la fonction GET_TAG.

  • Pour obtenir une liste de toutes les balises de votre compte, interrogez Account Usage Vue TAGS :

    select * from snowflake.account_usage.tags
    order by tag_name;
    
  • Pour obtenir une liste de toutes les associations entre les balises et les objets Snowflake, interrogez Account Usage Vue TAG_REFERENCES :

    select * from snowflake.account_usage.tag_references
    order by tag_name, domain, object_id;
    
  • Pour répertorier les associations entre les balises et les objets Snowflake, utilisez la fonction de table Information Schema TAG_REFERENCES :

    select *
     from table(my_db.information_schema.tag_references('my_table', 'table'));
    
  • Pour répertorier toutes les associations de balises aux objets Snowflake et obtenir la lignée de balises pour la balise spécifiée, utilisez la fonction de table Account Usage TAG_REFERENCES_WITH_LINEAGE :

    select *
      from table(snowflake.account_usage.tag_references_with_lineage('my_db.my_schema.cost_center'));
    
  • Pour renvoyer la valeur de la balise associée à la balise spécifiée, ainsi que l’objet ou la colonne Snowflake, utilisez la fonction SYSTEM$GET_TAG.

    select system$get_tag('cost_center', 'my_table', 'table');
    

Gestion des balises

Privilèges des balises

Snowflake prend en charge les privilèges suivants pour déterminer si les utilisateurs peuvent créer, définir et posséder des balises.

Privilège

Utilisation

CREATE

Permet de créer une nouvelle balise dans un schéma.

APPLY

Active les opérations d’ajout et de destruction de la balise sur un objet Snowflake.

OWNERSHIP

Transfère la propriété de la balise, ce qui permet d’en avoir le contrôle total. Nécessaire pour modifier la plupart des propriétés d’une balise.

Note

Les balises sont stockées au niveau du schéma.

Effectuer des opérations sur une balise nécessite également le privilège USAGE sur la base de données et le schéma parent.

Référence de balise DDL

Snowflake prend en charge les DDL suivants pour créer et gérer les balises.

Notez que Snowflake ne prend pas en charge l’opération describe pour l’objet de balise.

Résumé des commandes, opérations et privilèges DDL

La table suivante résume la relation entre les privilèges des balises et les opérations DDL.

Fonctionnement

Privilège requis

Créer une balise.

Un rôle avec le privilège USAGE sur la base de données parente et un schéma avec le privilège CREATE TAG dans le même schéma.

Modifier une balise.

Le rôle avec le privilège OWNERSHIP sur la balise.

Détruire une balise.

Un rôle avec le privilège OWNERSHIP sur la balise et le privilège USAGE sur la base de données et le schéma dans lesquels la balise existe.

Afficher les balises.

Un des éléments suivants : . Un rôle avec le privilège USAGE sur le schéma dans lequel les balises existent, ou . Un rôle avec le privilège APPLY TAG sur ACCOUNT.

Active ou désactive une balise sur un objet.

Pour les objets individuels, un rôle avec le privilège APPLY sur la balise et le privilège OWNERSHIP sur l’objet sur lequel la balise est définie.

Définir ou annuler une balise sur une colonne.

Un rôle avec le privilège APPLY sur la balise et le privilège OWNERSHIP sur la table ou la vue.

Obtenir des balises sur un objet.

Voir SYSTEM$GET_TAG, TAG_REFERENCES, et TAG_REFERENCES_WITH_LINEAGE.