Balisage d’objets¶
Cette rubrique fournit des concepts et des instructions sur la façon d’utiliser les balises dans Snowflake.
Pour en savoir plus sur l’utilisation d’une politique de masquage avec une balise, voir Politiques de masquage basées sur les balises.
Dans ce chapitre :
Qu’est-ce qu’une balise ?¶
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.
Une balise est un objet de niveau schéma qui peut être affecté à un autre objet Snowflake. Une balise peut se voir affecter une valeur de chaîne arbitraire lors de l’affectation de cette 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.
Vous créez une balise à l’aide d’une instruction CREATE TAG et vous spécifiez la valeur de la chaîne de la balise lorsque vous l’affectez à un objet. La balise peut être assignée à un objet lors de la création de l’objet, à l’aide d’une instruction CREATE <objet> en supposant que la balise existe déjà. Vous pouvez également affecter la balise à un objet existant en utilisant une instruction ALTER <objet>.
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’affectation, la valeur de la chaîne de balise peut être dupliquée ou rester unique. Par exemple, la balise cost_center peut être affectée à plusieurs tables et la valeur de la chaîne de caractères de la 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 à des objets Snowflake, les balises peuvent être interrogées pour surveiller l’utilisation des objets afin de faciliter les opérations de gouvernance des données, telles que la surveillance, l’audit et la création de rapports.
É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.
L’attribution de balises aux entrepôts permet une surveillance précise 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.
Quotas de balises pour les objets et les colonnes¶
La valeur de la chaîne de chaque balise peut comporter jusqu’à 256 caractères, avec la possibilité de spécifier des valeurs autorisées pour une balise.
La description suivante s’applique à tous les objets qui ne sont pas des tables et des vues :
Snowflake autorise un nombre maximal de 50 balises uniques pouvant être définies sur un seul objet. Dans une instruction CREATE <objet> ou ALTER <objet>, 100 est le nombre maximal de balises qui peuvent être définies pour une seule instruction.
Le nombre maximal de balises uniques est légèrement différent pour les tables et les vues, y compris les colonnes de ces tables et vues.
Tables, vues et colonnes¶
Pour une table ou une vue et ses colonnes, le nombre maximum de balises uniques qui peuvent être définies dans une seule instruction CREATE <objet> ou ALTER <objet> est de 100. Cette valeur totale pose les limites suivantes :
Un objet unique de table ou de vue : 50 balises uniques.
Toutes les colonnes combinées dans une seule table ou vue : 50 balises uniques.
Par exemple, si une colonne unique dans une table a 10 balises uniques définies sur la colonne, Snowflake autorise les actions suivantes :
La définition de 40 balises uniques supplémentaires soit sur cette même colonne, soit sur d’autres colonnes de la table, soit sur une combinaison de colonnes de la table.
La définition de 50 balises uniques supplémentaires sur la table elle-même.
Une fois que la limite de 50 balises uniques est atteinte pour la table en soi et ses colonnes, aucune balise supplémentaire ne peut être définie sur la table ou ses colonnes. À ce stade, si l’on souhaite définir des balises supplémentaires sur la table ou ses colonnes, l’étape suivante à considérer est la gestion des quotas de balises pour un objet.
Gérer les quotas de balises¶
Le nombre maximum de 50 balises uniques comprend les balises abandonnées pendant une période de 24 heures à partir du moment où la balise est abandonnée à l’aide d’une instruction DROP TAG. La raison de cette période est de permettre à l’utilisateur qui a supprimé la balise d’exécuter une instruction UNDROP TAG, si nécessaire. Lorsque l’opération UNDROP TAG est exécutée dans l’intervalle de temps de 24 heures, Snowflake rétablit les affectations de balises (c’est-à-dire les références) qui étaient en cours avant l’opération de suppression.
Après l’expiration de cette période de 24 heures, Snowflake purge toutes les références relatives à la balise supprimée. À ce stade, une nouvelle balise peut être attribuée à l’objet ou à la colonne qui faisait référence à la balise supprimée.
Utilisez la procédure suivante pour gérer les quotas de balises pour un objet :
Interrogez la vue TAG_REFERENCES (dans Account Usage) pour déterminer les affectations de balises.
Désactivez la balise de l’objet ou de la colonne. Par exemple :
Pour les objets, utilisez la commande
ALTER <objet> ... UNSET TAG
correspondante.Pour une colonne de table ou de vue, utilisez la commande
ALTER { TABLE | VIEW } ... { ALTER | MODIFY } COLUMN ... UNSET TAG
correspondante.Supprimez la balise en utilisant une instruction DROP TAG.
Spécifier des valeurs de balises¶
La propriété de balise ALLOWED_VALUES
permet de spécifier les valeurs de chaîne possibles qui peuvent être affectées à la balise lorsque celle-ci est définie sur un object. Le nombre maximal de valeurs de chaîne possibles pour une seule balise est de 300.
Vous pouvez spécifier ces valeurs lorsque vous créez ou remplacez une balise avec une instruction CREATE TAG ou lorsque vous modifiez une clé de balise existante avec une instruction ALTER TAG. Notez que l’instruction ALTER TAG prend en charge l’ajout de valeurs autorisées pour une balise et la destruction de valeurs existantes pour une balise.
Pour déterminer la liste des valeurs autorisées pour une balise, appelez la fonction GET_DDL ou la fonction SYSTEM$GET_TAG_ALLOWED_VALUES.
Par exemple :
Créez une balise nommée
cost_center
avec'finance'
et'engineering'
comme les deux seules valeurs de chaîne autorisées :create tag cost_center allowed_values 'finance', 'engineering';Vérifiez les valeurs autorisées.
select get_ddl('tag', 'cost_center') +------------------------------------------------------------------------------+ | GET_DDL('tag', 'cost_center') | |------------------------------------------------------------------------------| | create or replace tag cost_center allowed_values = 'finance', 'engineering'; | +------------------------------------------------------------------------------+Modifiez la balise nommée
cost_center
pour ajouter'marketing'
comme valeur de chaîne autorisée :alter tag cost_center add allowed_values 'marketing';Modifiez la balise nommée
cost_center
pour détruire'engineering'
comme valeur de chaîne autorisée :alter tag cost_center drop allowed_values 'engineering';
Pour obtenir la liste des valeurs de chaîne autorisées pour une balise donnée, appelez la fonction SYSTEM$GET_TAG_ALLOWED_VALUES ou la fonction GET_DDL. Par exemple, supposons que la balise cost_center
soit stockée dans une base de données nommée governance
et un schéma nommé tags
:
select system$get_tag_allowed_values('governance.tags.cost_center'); +--------------------------------------------------------------+ | SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') | |--------------------------------------------------------------| | ["finance","marketing"] | +--------------------------------------------------------------+
Lignée de balises¶
Une balise est héritée en fonction de la hiérarchie des objets sécurisables de Snowflake. 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.
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 ».
Il est possible de remplacer une balise héritée sur un objet donné. Par exemple, si une colonne de table hérite de la balise nommée cost_center avec une valeur de chaîne appelée ventes, la balise peut être mise à jour avec une valeur de chaîne de balise plus spécifique telle que sales_na, pour spécifier 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. Utilisez une instruction ALTER TABLE … ALTER COLUMN pour mettre à jour la valeur de la chaîne de balises sur la colonne et pour définir une ou plusieurs balises supplémentaires sur une colonne.
Après avoir défini les clés de balises et assigné des balises aux objets Snowflake, surveillez 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 Surveiller des balises avec SQL (dans cette rubrique).
Note
La lignée de balises ne comprend pas la propagation aux objets imbriqués. Par exemple :
table_1
»view_1
»materialized_view_1
Si des objets imbriqués existent déjà par rapport à une table ou une vue sous-jacente, une balise définie sur l’objet sous-jacent n’entraîne pas automatiquement la définition d’une balise sur l’objet imbriqué. Dans cet exemple, une balise définie sur table_1
n’entraîne pas la définition de la même balise sur view_1
et materialized_view_1
. Ce comportement est également vrai pour les colonnes.
S’il est nécessaire que les balises des objets ou colonnes sous-jacents soient transférées sur les objets imbriqués, exécutez une instruction CREATE OR REPLACE sur l’objet imbriqué et assurez-vous que l’instruction SQL spécifie la balise de l’objet ou de la colonne imbriquée.
Avantages¶
- 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 affectations 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.
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 des informations détaillées, voir Considérations sur les schémas versionnés.