Introduction au balisage des objets

Qu’est-ce qu’une balise ?

Une balise est un objet de niveau schéma qui peut être affecté à un autre objet Snowflake. Les utilisateurs associent une balise à une valeur de chaîne arbitraire lorsqu’ils assignent la balise à un objet Snowflake. Snowflake stocke la balise et sa valeur de chaîne sous forme de paire clé-valeur. La balise doit être unique pour votre schéma et la valeur de la balise est toujours une chaîne.

Les caractéristiques générales de la balise objet sont les suivantes :

  • Un objet peut avoir plusieurs balises en même temps. Pour plus d’informations, voir Quotas de balises.

  • Une même balise peut être affectée à différents types d’objets en même temps (par exemple, un entrepôt et une table simultanément).

  • Au moment de l’affectation, 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 balise peut toujours avoir la valeur de chaîne sales. La valeur de la chaîne peut également être différente pour chaque table (par exemple, engineering, marketing et finance).

Après avoir défini les balises et les avoir attribuées aux objets Snowflake, vous pouvez les interroger pour surveiller l’utilisation des objets et faciliter les opérations de gouvernance des données, telles que l’audit et la création de rapports.

Points forts

Facilité d’utilisation:

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

Héritage de balises:

Les balises étant héritées, l’application de la balise à des objets situés plus haut 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.

Propagation automatique:

Configurer une balise pour qu’elle se propage automatiquement aux objets cibles à partir d’un objet source.

Attribution cohérente avec réplication:

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

Gestion centralisée ou décentralisée:

Les balises soutiennent différentes approches de gestion pour faciliter la conformité avec les exigences réglementaires internes et externes.

Dans une approche centralisée, vous pouvez créer un rôle personnalisé tag_admin qui 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 de balises pour la protection des données

É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 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.

Vous pouvez également combiner les politiques de balise et de masquage des objets pour simplifier la gouvernance des données. Avec cette approche, vous affectez une politique de masquage à une balise, puis cette balise à une table ou à une colonne. Lorsque le type de données d’une colonne correspond au type de données de la signature de la politique de masquage, la colonne balise est automatiquement protégée par la politique de masquage. Pour plus d’informations, voir Politiques de masquage basées sur les balises.

Utilisation de balises pour surveiller l’utilisation des ressources

L’attribution de balises aux entrepôts permet une surveillance précise de l’utilisation des ressources. La requête de balises sur les ressources permet de regrouper facilement les ressources par centre de coût ou autre unité d’organisation. 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.

Pour un exemple d’utilisation des balises pour moniteur l’utilisation des ressources, voir Paramétrage des balises d’objets pour l’attribution des coûts.

Comment une balise est-elle associée à un objet ?

Une balise peut être associée à un objet de la manière suivante :

  • Quelqu’un a fixé manuellement la balise sur l’objet à l’aide d’une commande CREATE <object> ou ALTER <object>. Voir Paramétrage d’une balise.

  • L’objet a hérité de la balise d’un objet situé plus haut dans la hiérarchie des objets sécurisables de Snowflake. Par exemple, un entrepôt d’un compte hérite des balises établies sur le compte. Voir Héritage de balises.

  • La balise a été automatiquement propagée d’un objet à l’autre. Les balises peuvent être propagées lorsqu’un objet dépend d’un autre objet (par exemple, une vue basée sur une table balisée) ou lorsque les données passent d’un objet balisé à un autre objet (par exemple, en utilisant une instruction CTAS pour créer une table). Voir Propagation automatique des balises avec des balises définies par l’utilisateur.

  • La balise a été automatiquement définie sur une colonne qui a été classée comme contenant des données sensibles. Pour savoir comment la classification automatique des données sensibles utilise un mappage de balises pour établir ces paramètres, voir À propos du mappage des balises.

  • Quelqu’un a utilisé la commande CREATE TABLE … LIKE ou CREATE TABLE … CLONE pour créer une table à partir d’une table existante avec des balises.

Déterminer comment une balise a été associée à un objet

Les vues et fonctions suivantes incluent la colonne apply_method, qui indique comment une balise a été associée à un objet.

Par exemple, pour savoir si une balise a été fixée manuellement sur l’objet ou si elle a été propagée, vous pouvez exécuter la commande suivante et vérifier la valeur de la colonne apply_method.

SELECT tag_name, tag_value, apply_method, level, domain
  FROM TABLE(my_db.INFORMATION_SCHEMA.TAG_REFERENCES('my_table', 'TABLE'));
Copy

Quotas de balises

Vous pouvez définir un maximum de 50 balises sur un seul objet, y compris les tables et les vues.

Si vous avez atteint la limite des balises et que vous souhaitez en supprimer une, exécutez une instruction ALTER <objet> UNSET TAG.

Quota distinct pour les colonnes

Vous pouvez définir un maximum de 50 balises différentes sur les colonnes d’une seule table. Cette limite s’applique à toutes les colonnes combinées.

La limite de colonnes est distincte de la limite du nombre de balises définies sur une table. Par exemple, supposons que vous créiez la table suivante avec des balises à la fois sur la table et sur ses colonnes :

CREATE TABLE t1 (
  COL1 INT WITH TAG (tag1='col1', tag2='col1'),
  COL2 INT WITH TAG (tag1='col2'),
  )
  WITH TAG (tag3='t1');
Copy

Snowflake vous permet d’effectuer les opérations suivantes :

  • Définir 49 autres balises sur la table t1.

  • Définir 48 balises supplémentaires sur les colonnes de t1. La limite s’applique sur différentes balises, donc tag1 n’est pas compté deux fois.

Si vous exécutez une instruction CREATE TABLE ou ALTER TABLE pour appliquer des balises aux colonnes d’une table, le nombre maximum d’associations balises-entités uniques est de 100, où une entité est la table ou une colonne. Par exemple, si vous avez une table avec 1 000 colonnes et que vous souhaitez associer la même balise à chaque colonne, vous devez exécuter 10 instructions ALTER.

Capacités nécessitant l’Enterprise Edition

La création et le paramètre des balises sont accessibles à tous les comptes. Toutefois, certaines fonctionnalités avancées nécessitent l’utilisation de l’Enterprise Edition ou d’une version supérieure. Votre compte doit être de type Enterprise Edition ou supérieur pour pouvoir utiliser les fonctionnalités suivantes :

Objets pris en charge

Le tableau suivant répertorie les objets pris en charge pour les balises, y compris les colonnes, en fonction de la hiérarchie des objets sécurisables de Snowflake.

Une balise peut être définie sur un objet avec une instruction CREATE <objet> ou une instruction ALTER <objet> sauf indication contraire dans le tableau ci-dessous.

Une balise peut être définie sur une colonne en utilisant une instruction CREATE TABLE, CREATE VIEW, ALTER TABLE … MODIFY COLUMN ou ALTER VIEW.

Hiérarchie des objets

Objets pris en charge

Remarques

Organisation

Compte

Une balise peut être définie sur votre compte actuel par un rôle disposant du privilège global APPLY TAG.

Compte

Application

Paquet d’application

Pool de calcul

Base de données

Groupe de basculement

Intégration

Tous les types sont pris en charge.

Utilisez une commande ALTER INTEGRATION pour définir une balise sur l’intégration.

Politique réseau

Utilisez une commande ALTER NETWORK POLICY pour définir une balise sur une politique réseau.

Groupe de réplication

Rôle

Partager

Les balises sont définies sur le partage par le fournisseur de partage de données. Ces balises ne sont pas visibles pour le consommateur de partage de données. Utilisez une commande ALTER SHARE pour définir une balise sur le partage.

Utilisateur

Entrepôt

Base de données

Rôle de la base de données

Utilisez une commande ALTER DATABASE ROLE pour définir une balise sur un rôle de base de données.

Schéma

Schéma

Politique d’agrégation

Alerte

Instance BUDGET

Utilisez une commande ALTER BUDGET pour définir une balise sur une instance de classe SNOWFLAKE.CORE.BUDGET.

Instance CLASSIFICATION

Utilisez une commande ALTER SNOWFLAKE.ML.CLASSIFICATION pour définir une balise sur une instance de classe SNOWFLAKE.ML.CLASSIFICATION.

Table dynamique

Table des événements

Fonction externe et UDF

Utilisez une commande ALTER FUNCTION pour définir une balise sur une fonction externe ou une UDF.

Table externe

Vous pouvez créer une table externe avec une balise à l’aide d’une instruction CREATE EXTERNAL TABLE.

Pour gérer les affectations de balises sur une table externe, utilisez la commande ALTER TABLE.

Référentiel Git

Table Apache Iceberg™

Référentiel d’images

Politique de jointure

Vue matérialisée

Notebook

Politique de mot de passe

Canal

Définir une balise sur un canal avec une instruction ALTER PIPE.

Politique

Définissez une balise sur une politique de masquage, mot de passe, accès aux lignes, session, agrégation, jointure ou projection avec l’instruction correspondante ALTER <policy>.

Procédure

Définir une balise sur une procédure stockée avec une instruction ALTER PROCEDURE.

Politique de projection

Politique de session

Instantané

Pour les instantanés de volume de stockage en bloc.

Ensemble d’instantanés

Pour les instantanés WORM. Contient un ensemble d’instantanés pour une base de données, un schéma ou une table spécifique.

Zone de préparation

Définir une balise sur une zone de préparation avec une instruction ALTER STAGE.

Flux

Streamlit

Table

Tâche

Définir une balise sur une tâche avec une instruction ALTER TASK.

Vue

Table ou vue

Colonne

Comprend des tables d’événements.

Limites et considérations

Autorisations futures:

Les autorisations futures de privilèges sur les politiques de masquage ne sont pas prises en charge.

Comme solution de contournement, accordez le privilège APPLYTAG à un rôle personnalisé pour lui permettre d’appliquer des balises à un autre objet.

Snowflake Native App:

Soyez prudent lors de la création du script de configuration lorsqu’il existe des balises dans un schéma versionné. Pour plus d’informations, consultez les considérations relatives au schéma de la version.