Propagation automatique des balises avec des balises définies par l’utilisateur¶
La propagation des balises attribue automatiquement une balise d’objet aux objets cibles si elle est appliquée à l’objet source. Par exemple, vous pouvez définir des balises sur un objet source, tel qu’une table et ses colonnes, ces balises seront automatiquement propagées vers un objet cible, tel qu’une vue ou une autre table créée à partir de l’objet source.
Les avantages de la propagation automatique des balises sont notamment les suivants :
Rationalisation de la gestion des balises entre les objets, en particulier lorsque les balises sont appliquées à des objets sources ou à des colonnes pour faciliter la découverte et la protection des données.
Veiller à ce que toutes les politiques associées aux balises soient automatiquement appliquées aux objets cibles.
Seul le propriétaire de la balise disposant du privilège APPLY TAG au niveau du compte peut mettre en œuvre la propagation automatique des balises.
Types de propagation¶
Vous pouvez choisir de propager une balise lorsqu’il y a une dépendance d’objet, un mouvement de données <label-tag_propagation_lineage> ou les deux.
Propagation de balise pour les dépendances d’objet¶
Lorsque la propagation des balises est configurée pour les dépendances, une balise est propagée d’un objet source à tous les objets cibles qui en dépendent. Par exemple, si vous configurez la propagation d’une balise data_sensitivity
sur une table t1
, et que vous créez ensuite deux vues basées sur t1
, la balise data_sensitivity
est propagée aux deux vues.
La création d’une vue, d’une vue sécurisée, d’une vue matérialisée ou d’une table dynamique à partir d’un objet source est considérée comme une dépendance d’objet.
Propagation continue pour les dépendances d’objets¶
Lorsqu’une balise est configurée pour les dépendances, Snowflake met continuellement à jour les objets cibles lorsque l’un des événements suivants se produit :
La balise est ajoutée à un objet ou à une colonne source.
La valeur d’une balise est mise à jour.
Une balise est supprimée d’un objet ou d’une colonne source. Dans ce casse, Snowflake supprime la balise de l’objet ou de la colonne cible.
Par exemple, supposons que la balise data_sensitivity
ait été propagée de la table t1
à la vue v2
après l’exécution d’une instruction CREATE VIEW. Lorsque vous modifiez la valeur de data_sensitivity
sur t1
, la valeur de la balise sur v2
est également mise à jour.
La propagation automatique des balises repose sur l’existence de l’objet source. Si l’objet source contenant des balises est abandonné, les balises ne seront pas propagées vers l’objet cible. Comme une vue dépend de ses sources, telles qu’une table de base ou d’autres vues, les balises ne sont propagées que si l’objet source existe.
Propagation des balises pour le déplacement des données¶
Lorsque la propagation des balises est configurée pour le déplacement des données, une balise est propagée lorsque vous déplacez des données d’un objet source vers un autre objet en effectuant l’une des opérations suivantes :
Exécution d’une instruction CREATE TABLE … AS SELECT (CTAS) pour créer une table.
Exécution d’une instruction CREATEDYNAMICTABLE.
Exécution d’une commande en langage de manipulation de données (DML). La propagation de la balise se produit pour les commandes DML suivantes :
INSERT
MERGE
UPDATE
COPY INTO
CREATE TABLE … CLONE et CREATE TABLE … LIKE ne s’appuient pas sur la propriété de la balise PROPAGATE pour la propagation de la balise. Lorsque vous exécutez ces instructions, les balises de la source sont toujours affectées à l’objet cible.
Note
Contrairement à la propagation des balises pour les dépendances, les balises appliquées aux objets cibles lors d’un mouvement de données sont et non continuellement mises à jour au fur et à mesure que les balises changent sur l’objet source.
Paramétrage de la propagation des balises¶
Pour activer la propagation automatique des balises, utilisez la commande CREATE TAG ou ALTER TAG pour définir la propriété PROPAGATE. Vous pouvez configurer la propriété de manière à ce que les balises soient propagées pour les dépendances d’objets, les mouvements de données, ou les deux.
Pour obtenir des instructions sur la définition des paramètres de propagation des balises, voir Définition d’une balise qui se propagera automatiquement.
Conflits liés à la propagation des balises¶
Des conflits peuvent survenir lorsqu’une balise est propagée à partir de différents objets sources vers le même objet cible. Si la balise a une valeur différente dans chacun des objets sources, il y a un conflit lorsque cette balise est propagée des objets sources vers l’objet cible.
Note
Si l’objet cible possède une balise appliquée manuellement, la valeur de la balise existante est prioritaire sur la valeur propagée, de sorte qu’il n’y a pas de conflit.
Si l’objet cible hérite d’une valeur d’un objet situé plus haut dans la hiérarchie des objets de Snowflake, la valeur propagée est prioritaire et il n’y a pas de conflit.
La propriété ON_CONFLICT d’une balise détermine ce qui se passe en cas de conflit. Vous disposez de trois options pour gérer les conflits liés à la propagation des balises :
Remplacez la valeur de la balise par la chaîne
CONFLICT
. Il s’agit de la valeur par défaut si vous ne réglez pas le paramètre ON_CONFLICT de la balise.Remplacer la valeur de la balise par une chaîne définie par l’utilisateur. Vous donnez au paramètre ON_CONFLICT la valeur de cette chaîne.
Par exemple, si vous souhaitez que la valeur d’une balise soit
HIGHLY CONFIDENTIAL
en cas de conflit de valeurs, utilisez le lien suivant SQL pour créer la balise :CREATE TAG data_sensitivity PROPAGATE = ON_DEPENDENCY_AND_DATA_MOVEMENT ON_CONFLICT = 'HIGHLY CONFIDENTIAL';
CopyUtilisez l’ordre des valeurs du paramètre ALLOWED_VALUES de la balise pour déterminer la valeur à utiliser. Définissez
ON_CONFLICT = ALLOWED_VALUES_SEQUENCE
pour mettre en œuvre cette stratégie.Par exemple, supposons que vous ayez créé la balise avec l’instruction SQL suivante :
CREATE TAG data_sensitivity ALLOWED_VALUES 'confidential', 'internal', 'public' PROPAGATE = ON_DEPENDENCY ON_CONFLICT = ALLOWED_VALUES_SEQUENCE;
CopyEn cas de conflit pour cette balise entre les valeurs
internal
etpublic
, la valeur de la balisedata_sensitivity
serainternal
car elle précèdepublic
dans la liste des valeurs autorisées.Sachez que si vous choisissez d’utiliser
ON_CONFLICT = ALLOWED_VALUES_SEQUENCE
, la modification du paramètre ALLOWED_VALUES affecte la manière dont les conflits sont résolus. Par exemple, si vous modifiez l’ordre des valeurs dans la liste autorisée, les conflits futurs pourraient se traduire par l’attribution d’une valeur différente à la balise.
Identifier les conflits non résolus¶
Si une valeur de balise est remplacée par une chaîne définie par l’utilisateur ou par la chaîne par défaut CONFLICT
en cas de conflit de propagation de balise, vous pouvez interroger la fonction de table TAG_REFERENCES pour identifier les conflits.
Par exemple, si vous acceptez la valeur par défaut consistant à remplacer la valeur de la balise par la chaîne CONFLICT
, vous pouvez utiliser la requête suivante pour déterminer s’il y a eu des conflits :
SELECT tag_name, tag_value, apply_method, level, domain FROM table(my_db.INFORMATION_SCHEMA.TAG_REFERENCES('my_table', 'table')) WHERE tag_name = '<tag_name>' AND tag_value = 'CONFLICT';Copy
Objets pris en charge¶
La propagation des balises de la source à la cible est prise en charge pour les types d’objets suivants :
Colonnes
Les types de tables suivants :
Tables
Tableaux dynamiques - La création d’un tableau dynamique est considérée à la fois comme une dépendance d’objet et comme un mouvement de données aux fins de la propagation des balises.
Tables externes
Tables Iceberg
Tables transitoires/temporaires
Les types de vues suivants :
Vues
Vues sécurisées
Vues matérialisées
Limites et considérations¶
Les balises du système ne sont pas propagées.
Les balises héritées ne sont pas propagées.
Les balises ne sont pas propagées d’un partage vers les objets locaux.
Le nombre de balises sur un objet ne peut pas dépasser la limite standard.
La propagation des balises ne fonctionne pas si plus de 10 000 vues dépendent d’une table source.
Avec la propagation des balises pour les dépendances, une balise peut être appliquée à la fois à la table source et aux vues cibles. Si la balise est associée à une politique de masquage, l’exécution en double de la politique peut avoir des conséquences.