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 Quota de balise pour les objets.

  • 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

Quota de balise pour les objets

Vous pouvez définir un maximum de 50 balises sur un seul objet, y compris les tables et les vues. Il s’agit d’une limite au nombre de balises différentes, et non le nombre de combinaisons différentes de balises et de valeurs, comme le montrent les exemples suivants.

Deux balises sur un objet
ALTER TABLE t1 SET TAG tag1 = 'val1', tag2 = 'val1';
Copy
Une balise sur un objet
ALTER TABLE t1
  MODIFY COLUMN col1 SET TAG tag1 = 'val1'
  MODIFY COLUMN col2 SET TAG tag1 = 'val2';
Copy

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

Si vous exécutez plusieurs commandes CREATE <objet> ou ALTER <objet> dans une seule instruction, 100 est le nombre maximum de balises qui peuvent être spécifiées.

Quota supplémentaire pour les colonnes

Comme pour tous les autres objets, le nombre maximum de balises sur une table ou une vue est de 50 balises uniques. Il existe un quota supplémentaire sur les colonnes d’une table ou d’une vue. Le nombre total maximum de balises sur toutes les colonnes d’une même table ou d’une même vue est de 50.

Par exemple, si une colonne unique d’une table comporte 10 balises définies, Snowflake autorise ce qui suit :

  • Le paramètre 40 balises supplémentaires sur cette même colonne ou sur une combinaison des colonnes de la table.

  • Définition de 50 balises supplémentaires sur la table elle-même.

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é

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.