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 :

  1. Interrogez la vue TAG_REFERENCES (dans Account Usage) pour déterminer les affectations de balises.

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

  3. 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';
Copy

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'; |
+------------------------------------------------------------------------------+
Copy

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';
Copy

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';
Copy

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"]                                      |
+--------------------------------------------------------------+
Copy

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'administrateur de balises peut appliquer des politiques de masquage aux tables et aux vues.

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.

Utiliser 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

Application

Paquet d’application

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.

Politique réseau

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

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

Alerte

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.

Table Iceberg

Vue matérialisée

Canal

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

Politique

Définissez une balise sur une politique de masquage, de mot de passe, d’accès aux lignes, et de session avec l’instruction ALTER <politique> correspondante.

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

Comprend des tables d’événements.

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 exemple ROLES, WAREHOUSES).

    Pour plus de détails, reportez-vous à CREATE REPLICATION GROUP et CREATE FAILOVER GROUP.

Note

Lors de l’utilisation de la réplication et des groupes 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 à travers plusieurs comptes.

  • 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 des 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 le fournisseur accorde le privilège READ sur la balise au partage ou à un rôle de base de données partagée, le consommateur peut voir les affectations de la balise partagée. Pour plus de détails, voir Références de balises partagées.

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

Créer et attribuer des balises

Voici un aperçu détaillé de l’utilisation des balises dans Snowflake :

  • Créez une balise en utilisant une instruction CREATE TAG.

  • Affectez une balise à un objet Snowflake existant à l’aide de Snowsight ou de la commande ALTER <objet>.

    Notez que vous pouvez affecter une balise à un objet nouveau en utilisant une commande CREATE <objet>. Reportez-vous à la section Objets pris en charge de cette rubrique pour évaluer les objets qui prennent en charge la définition d’une balise avec la commande ALTER <objet> uniquement.

Après avoir attribué des balises, vous pouvez surveiller leur utilisation en utilisant SQL ou Snowsight. Pour plus de détails, voir Surveiller des balises avec SQL et Surveiller des balises avec Snowsight (dans cette rubrique).

Pour simplifier, le workflow suppose une approche de gestion centralisée des balises, où le rôle personnalisé tag_admin dispose des privilèges CREATE TAG et APPLY TAG.

  1. Créez un rôle personnalisé et attribuez 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 mydb.mysch TO ROLE tag_admin;
    GRANT APPLY TAG ON ACCOUNT TO ROLE tag_admin;
    
    Copy
  2. 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;
    
    Copy
  3. Exécutez une instruction CREATE TAG pour créer une balise.

    USE ROLE tag_admin;
    USE SCHEMA mydb.mysch;
    CREATE TAG cost_center;
    
    Copy
  4. Affectez une balise à un objet Snowflake ou à une colonne.

    SQL:

    Vous pouvez définir une balise sur tous les objets et colonnes pris en charge qui existent avec une commande ALTER <objet>. Certains objets permettent de définir une balise lors de la création ou du remplacement de l’objet. Pour plus de détails, reportez-vous au tableau de la section Objets pris en charge de cette rubrique.

    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');
      
      Copy
    • 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';
      
      Copy
    • Pour définir 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.

      ALTER TABLE hr.tables.empl_info
        MODIFY COLUMN job_title
        SET TAG visibility = 'public';
      
      Copy
    Snowsight:

    Vous pouvez définir une balise sur des tables, des vues et des colonnes existantes en utilisant Snowsight.

    Il existe plusieurs options pour définir une balise :

    • Naviguez jusqu’à la table, la vue ou la colonne souhaitée à l’aide de l’explorateur d’objets (c’est-à-dire Data » Databases).

      Sélectionnez le menu More (c’est-à-dire ...) » Edit, puis sélectionnez + Tag. Suivez les invites pour gérer l’attribution de la balise.

    • Naviguez jusqu’à la zone de gouvernance (c’est-à-dire Monitoring » Governance) dans Snowsight et procédez comme suit :

      • Sélectionnez une vignette, un pourcentage de distribution et l’une des balises ou l’une des tables les plus utilisées. Lorsque vous sélectionnez un élément dans l’onglet Dashboard, Snowsight vous redirige vers l’onglet Tagged Objects.

      • Modifiez les filtres si nécessaire. Lorsque vous sélectionnez un objet ou une colonne, Snowsight vous redirige vers son emplacement dans l’explorateur d’objets. Mettez à jour l’affectation des balises si nécessaire.

    • Accédez à l’onglet Tagged Objects directement. Modifiez les filtres, sélectionnez un objet ou une colonne et gérez l’affectation des balises.

    Note

    Pour accéder à la zone de gouvernance, effectuez l’une des opérations suivantes :

    • Utilisez le rôle ACCOUNTADMIN.

    • À utiliser pour un rôle auquel sont attribués les rôles de base de données GOVERNANCE_VIEWER et OBJECT_VIEWER.

      Pour plus de détails sur ces rôles de base de données, consultez Rôles des bases de données SNOWFLAKE.

Surveiller des balises avec SQL

Vous pouvez surveiller les balises avec SQL 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 surveiller l’utilisation des balises.

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;
    
    Copy
  • 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');
    
    Copy

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'
      )
    );
    
    Copy
  • 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;
    
    Copy
  • 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'
      )
    );
    
    Copy
  • 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'
      )
    );
    
    Copy

Surveiller des balises avec Snowsight

Vous pouvez utiliser la zone Snowsight Monitoring » Governance pour surveiller l’utilisation des politiques et des balises avec les tables, les vues et les colonnes, et établir des rapports à ce sujet. Il existe deux interfaces différentes : Dashboard et Tagged Objects.

Lors de l’utilisation de l’interface Dashboard et de l’interface Tagged Objects, il convient de tenir compte des détails suivants.

  • Les interfaces Dashboard et Tagged Objects nécessitent un entrepôt en service.

  • Snowsight met à jour le Dashboard toutes les 12 heures.

  • Le temps de latence de l’information Tagged Objects peut aller jusqu’à deux heures et les retours jusqu’à 1 000 objets.

Accès à la zone de gouvernance dans Snowsight

Pour accéder à la zone Governance , votre compte Snowflake doit être Enterprise Edition ou supérieur. En outre, vous devez effectuer l’une des opérations suivantes :

  • Utilisez le rôle ACCOUNTADMIN.

  • Utilisez un rôle de compte auquel sont directement attribués les rôles de base de données GOVERNANCE_VIEWER et OBJECT_VIEWER.

    Vous devez utiliser un rôle de compte avec ces attributions de rôle de base de données. Actuellement, Snowsight n’évalue pas les hiérarchies de rôles et les rôles de base de données définis par l’utilisateur qui ont accès aux tables, aux vues, aux politiques d’accès aux données et aux balises.

    Pour déterminer si votre rôle de compte bénéficie de ces deux rôles de base de données, utilisez une commande SHOW GRANTS :

    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | created_on                    | privilege | granted_on    | name                        | granted_to | grantee_name    | grant_option | granted_by |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | 2024-01-24 17:12:26.984 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE       | DATA_ENGINEER   | false        |            |
    | 2024-01-24 17:12:47.967 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER     | ROLE       | DATA_ENGINEER   | false        |            |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    

    Si votre rôle de compte ne bénéficie pas de l’un ou de l’autre de ces rôles de base de données, ou n’en a aucun des deux, utilisez la commande GRANT DATABASE ROLE et exécutez de nouveau la commande SHOW GRANTS pour confirmer les attributions :

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer;
    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer;
    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy

    Pour plus de détails sur ces rôles de base de données, consultez Rôles des bases de données SNOWFLAKE.

Tableau de bord

En tant qu’administrateur de données, vous pouvez utiliser l’interface Dashboard pour surveiller l’utilisation des balises et des politiques de la manière suivante.

  • Couverture : spécifie le nombre et le pourcentage en fonction de la présence d’une politique ou d’une balise dans une table, une vue ou une colonne.

  • Prévalence : liste et compte les politiques et les balises les plus fréquemment utilisées.

La couverture et la prévalence donnent un aperçu de la qualité de la protection et du balisage des données.

Lorsque vous sélectionnez un nombre, un pourcentage, un nom de politique ou un nom de balise, l’interface Tagged Objects s’ouvre. L’interface Tagged Objects met à jour les filtres automatiquement en fonction de votre sélection dans l’interface Dashboard.

Les informations de surveillance constituent une alternative ou un complément à l’exécution d’opérations complexes et exigeantes en requêtes sur plusieurs vues Account Usage.

Ces vues peuvent inclure, sans s’y limiter, les vues COLUMNS, POLICY_REFERENCES, TABLES, TAG_REFERENCES, et VIEWS.

Objets balisés

En tant qu’administrateur de données, vous pouvez utiliser cette table pour associer rapidement la couverture et la prévalence dans Dashboard à une liste de tables, de vues ou de colonnes spécifiques. Vous pouvez également filtrer manuellement les résultats de la table, comme suit.

  • Choisissez Tables ou Columns.

  • Pour les balises, vous pouvez filtrer avec les balises, sans les balises ou par une balise spécifique.

  • Pour les politiques, vous pouvez filtrer avec les politiques, sans les politiques ou par une politique spécifique.

Lorsque vous sélectionnez une ligne dans la table, l’onglet Table Details ou Columns de Data » Databases s’ouvre. Vous pouvez modifier les attributions des balises et des politiques si nécessaire.

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, des opérations et des 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.

Notez que Snowflake ne prend pas en charge l’opération describe pour l’objet de balise.

Résumé des commandes, des opérations et des 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.

  1. 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;
    
    Copy
  2. 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 balise cost_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;
    
    Copy