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 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.
É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 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.
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.
Gestion des 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.
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, 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 Utilisation des balises (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 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 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.
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 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 à l’aide d’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 |
Base de données |
|
Intégration |
Tous les types sont pris en charge. Utilisez une commande ALTER INTEGRATION pour définir une balise sur l’intégration. |
|
Rôle |
Une balise peut être définie sur un rôle, mais une balise ne peut pas être définie sur un rôle de base de données. |
|
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 |
Schéma |
|
Schéma |
Table externe |
|
Vue matérialisée |
||
Canal |
Définir une balise sur un canal avec une instruction ALTER PIPE. |
|
Procédure |
Définir une balise sur une procédure stockée avec une instruction ALTER PROCEDURE. |
|
Zone de préparation |
Définir une balise sur une zone de préparation avec une instruction ALTER STAGE. |
|
Flux |
||
Table |
||
Tâche |
Définir une balise sur une tâche avec une instruction ALTER TASK. |
|
Vue |
||
Table ou vue |
Colonne |
Spécification de 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 50.
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.
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"] | +--------------------------------------------------------------+
Politiques de balisage et de masquage des objets¶
Pour plus de détails, voir Politiques de masquage basées sur les balises.
Notez qu’une politique de masquage directement affectée à une colonne a la priorité sur une politique de masquage basée sur des balises.
Instructions CREATE TABLE¶
Avec CREATE TABLE … LIKE, les balises affectées à la table source sont affectées à la table cible.
Réplication¶
Les balises et leurs affectations peuvent être répliquées d’un compte source à un compte cible.
Les attributions de balises ne peuvent pas être modifiées dans le compte cible après la réplication initiale à partir du compte source. Par exemple, la mise en place d’une balise sur une base de données secondaire (c’est-à-dire répliquée) n’est pas autorisée. Pour modifier les attributions de balises dans le compte cible, il faut les modifier dans le compte source et les répliquer dans le compte cible.
Pour la réplication de base de donné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 a une référence pendante à une balise dans une autre base de données.
Pour éviter une erreur de référence pendante, répliquez la base de données et les objets au niveau du compte à l’aide d’un groupe de réplication ou de basculement. Assurez-vous que le groupe de réplication inclut :
La base de données contenant les balises de la propriété
ALLOWED_DATABASES
.Autres objets au niveau du compte qui ont une balise dans la propriété
OBJECT_TYPES
(par exempleROLES
,WAREHOUSES
).Pour plus de détails, reportez-vous à CREATE REPLICATION GROUP et CREATE FAILOVER GROUP.
Note
Lors de l’utilisation de groupes de réplication/de basculement ou de la réplication de la base de données :
Les fonctions de basculement/restauration ne sont disponibles que pour les comptes Snowflake Business Critical Edition (ou supérieurs).
Pour plus d’informations, reportez-vous à Présentation de la réplication et du basculement de compte.
Si vous spécifiez la clause
IGNORE EDITION CHECK
pour la réplication des bases de données dans une instruction ALTER DATABASE ou dans une instruction CREATE OR ALTER pour un groupe de réplication ou de basculement, la réplication des balises peut se produire lorsque le compte cible est une édition inférieure à Business Critical.Pour plus de détails, reportez-vous à la description des clauses de ces commandes.
Clonage¶
Les associations de balises dans l’objet source (par ex. des tables) sont maintenues dans les objets clonés.
Pour une base de données ou un schéma :
Les balises stockées dans cette base de données ou ce schéma sont également clonées.
Lorsqu’une base de données ou un schéma est cloné, les balises qui résident dans ce schéma ou cette base de données sont également clonées.
Si une table ou une vue existe dans le schéma/la base de données source et a des références à des balises dans le même schéma ou la même base de données, la table ou la vue clonée est mappée sur la balise clonée correspondante (dans le schéma ou la base de données cible) au lieu de la balise dans le schéma ou la base de données source.
Partage de données¶
Lorsque la vue partagée et la balise existent dans des bases de données différentes, accordez au partage le privilège REFERENCE_USAGE sur la base de données contenant la balise. Pour plus de détails, voir Partage de données de plusieurs bases de données.
Dans le compte de consommateur de partage de données :
L’exécution de SHOW TAGS renvoie la balise partagée, à condition que le rôle qui exécute la commande SHOW TAGS dispose du privilège USAGE sur le schéma contenant la balise partagée.
Si une balise du compte de fournisseur de partage de données est affectée à une table partagée, le consommateur de partage de données ne peut pas appeler la fonction SYSTEM$GET_TAG ou la fonction de table Information Schema TAG_REFERENCES pour visualiser l’affectation de la balise.
Utilisation des balises¶
Voici un aperçu détaillé de l’utilisation des balises dans Snowflake :
Définissez un rôle personnalisé et attribuez des privilèges.
Attribuez le rôle personnalisé à un utilisateur.
Créez une balise en utilisant une instruction CREATE TAG.
Affectez une balise à un objet Snowflake existant à l’aide de la commande ALTER <objet>.
Notez que vous pouvez aussi affecter une balise à un objet nouveau en utilisant une commande CREATE <objet>.
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 : Accorder le rôle personnalisé TAG_ADMIN
à un utilisateur¶
Accordez le rôle personnalisé TAG_ADMIN
à un utilisateur qui sert d’administrateur de balises.
use role useradmin;
grant role tag_admin to user jsmith;
Étape 3 : 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 4 : Affecter une balise à un objet Snowflake¶
Affectez une balise à un objet Snowflake nouveau en utilisant une instruction CREATE <objet>.
Par exemple, pour définir une balise sur un nouvel entrepôt, utilisez la commande CREATE WAREHOUSE.
use role tag_admin; create warehouse mywarehouse with tag (cost_center = 'sales');
Affectez une balise à un objet Snowflake existant à l’aide de l’instruction ALTER <objet>.
Par exemple, pour définir une balise sur un entrepôt existant, 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 existante, 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_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ]; alter table <table_name> modify column <column_name> unset tag <tag_name> [ , <tag_name> , ... ]; -- For a view or materialized view column alter view <view_name> modify column <column_name> set tag <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ]; alter view <view_name> modify column <column_name> unset tag <tag_name> [ , <tag_name> , ... ];
Étape 5 : Effectuer un suivi des balises¶
Vous pouvez suivre l’utilisation des balises grâce à deux vues différentes Account Usage, deux fonctions de table Information Schema, et une fonction de table Account Usage et une fonction système.
Il peut être utile de penser à deux approches générales pour déterminer comment suivre l’utilisation des balises :
Découvrir ou répertorier les balises.
Identifier les affectations (c’est-à-dire les références) entre une balise et un objet.
- Découvrir les balises
Snowflake prend en charge les options suivantes pour répertorier les balises et identifier la valeur de la chaîne de balises pour une clé de balise donnée.
Identifier les balises dans votre compte :
Utilisez la vue TAGS dans le schéma Account Usage de la base de données partagée SNOWFLAKE. Cette vue peut être considérée comme un catalogue de toutes les balises de votre compte Snowflake qui fournit des informations sur les balises actuelles et supprimées. Par exemple :
select * from snowflake.account_usage.tags order by tag_name;
Identifier une valeur pour une balise donnée :
Utilisez la fonction système SYSTEM$GET_TAG pour renvoyer la valeur de la balise affectée à la balise spécifiée, ainsi que l’objet ou la colonne Snowflake.
select system$get_tag('cost_center', 'my_table', 'table');
- Identifier les affectations
Snowflake prend en charge différentes options pour identifier les affectations de balises, selon que la requête doit cibler le compte ou une base de données spécifique, et selon que la lignée des balises est nécessaire.
Requête au niveau du compte avec lignée :
Utilisez la fonction de table Account Usage TAG_REFERENCES_WITH_LINEAGE pour déterminer tous les objets qui ont une clé de balise et une valeur de balise données qui incluent également la lignée de balise :
select * from table(snowflake.account_usage.tag_references_with_lineage('my_db.my_schema.cost_center'));
Requête au niveau du compte sans lignée :
Utilisez la vue TAG_REFERENCES Account Usage pour déterminer tous les objets qui ont une clé de balise et une valeur de balise données, mais qui n’incluent pas la lignée de balise :
select * from snowflake.account_usage.tag_references order by tag_name, domain, object_id;
Requête au niveau de la base de données, avec lignée :
Chaque base de données Snowflake comprend un Schéma d’information de Snowflake. Utilisez la fonction de table Information Schema TAG_REFERENCES pour déterminer tous les objets qui ont une balise donnée et qui comprennent également la lignée de balises dans une base de données spécifique :
select * from table(my_db.information_schema.tag_references('my_table', 'table'));
Requête au niveau de la base de données pour toutes les balises de chaque colonne d’une table ou d’une vue, avec lignée :
Utilisez la fonction de table Information Schema TAG_REFERENCES_ALL_COLUMNS pour obtenir toutes les balises qui sont définies sur chaque colonne dans une table ou une vue donnée.
Notez que le domaine
TABLE
doit est utilisé pour tous les objets qui contiennent des colonnes, même si le nom de l’objet est une vue (c’est-à-dire une vue, une vue matérialisée).select * from table(information_schema.tag_references_all_columns('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.
Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.
Privilège |
Utilisation |
---|---|
CREATE |
Permet de créer une nouvelle balise dans un schéma. |
APPLY |
Permet de réaliser des opérations de définition et d’annulation pour la balise sur un objet Snowflake. Pour des exemples de syntaxe, voir : Résumé des commandes, opérations et privilèges DDL. |
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. |
Référence de balise DDL¶
Snowflake prend en charge les DDL suivants pour créer et gérer les balises.
ALTER <objet> (pour définir une balise sur un objet Snowflake)
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.
Opération |
Privilège requis |
---|---|
Créer une balise. |
Un rôle 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 ou rétablir 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 TAG sur le compte, ou le privilège APPLY TAG sur la balise et le privilège OWNERSHIP sur l’objet sur lequel la balise est définie. Voir Objets pris en charge. |
Définir ou annuler une balise sur une colonne. |
Un rôle avec le privilège APPLY TAG sur le compte, ou 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. |
Snowflake prend en charge différentes autorisations pour créer et définir une balise sur un objet.
Pour une approche de gestion centralisée des balises, dans laquelle le rôle personnalisé
tag_admin
crée et définit des balises sur tous les objets/colonnes, les autorisations suivantes sont nécessaires :use role securityadmin; grant create tag on schema <db_name.schema_name> to role tag_admin; grant apply tag on account to role tag_admin;
Dans une approche de gestion hybride, un rôle unique dispose du privilège CREATE TAG pour garantir que les balises sont nommées de manière cohérente, et des équipes ou rôles individuels disposent du privilège APPLY pour une balise spécifique.
Par exemple, le rôle personnalisé
finance_role
peut se voir accorder l’autorisation de définir la balisecost_center
sur les tables et les vues que le rôle possède (c’est-à-dire le rôle qui détient le privilège OWNERSHIP sur la table ou la vue) :use role securityadmin; grant create tag on schema <db_name.schema_name> to role tag_admin; grant apply on tag cost_center to role finance_role;