Travailler avec des balises d’objets

Ce sujet décrit comment créer une balise et l’affecter à un objet Snowflake. Elle contient également des instructions sur la manière de supprimer une balise.

Création d’une balise

Utilisez la commande CREATE TAG pour créer une nouvelle balise. Par exemple, pour créer une balise de base nommée cost_center sans aucun paramètre facultatif, exécutez ce qui suit :

CREATE TAG cost_center;
Copy

Définition d’une liste de valeurs de balise autorisées

Le ALLOWED_VALUES paramètre de balise vous permet de spécifier une liste des valeurs de chaîne qui peuvent être attribuées à la balise lorsque celle-ci est définie sur un objet. Les utilisateurs ne peuvent attribuer une valeur à une balise que si cette valeur figure dans la liste définie.

Le nombre maximal de valeurs de chaîne possibles pour une seule balise est de 300. La valeur de la chaîne pour chaque balise peut comporter jusqu’à 256 caractères.

Vous pouvez spécifier la liste des valeurs autorisées lors de la création ou du remplacement d’une balise à l’aide d’une instruction CREATE TAG, ou lors de la modification d’une balise existante à l’aide d’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.

Note

Si une balise est configurée pour se propager automatiquement aux objets cibles, l’ordre des valeurs dans la liste autorisée peut affecter la manière dont les conflits sont résolus. Pour plus d’informations, voir Conflits liés à la propagation des balises.

Pour déterminer la liste des valeurs autorisées pour une balise, appelez la fonction SYSTEM$GET_TAG_ALLOWED_VALUES.

Exemples

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 SYSTEM$GET_TAG_ALLOWED_VALUES('governance.tags.cost_center');
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

Définition d’une balise qui se propagera automatiquement

Le paramètre de balise PROPAGATE vous permet de configurer une balise afin qu’elle soit automatiquement propagée d’un objet source vers des objets cibles dans certaines circonstances. Ce paramètre PROPAGATE peut être défini avec les valeurs suivantes :

  • PROPAGATE = ON_DEPENDENCY : la balise est propagée à un objet cible lorsqu’il existe une dépendance avec l’objet.

  • PROPAGATE = ON_DATA_MOVEMENT : la balise est propagée vers un objet cible lorsque les données se déplacent de l’objet source vers l’objet cible.

  • PROPAGATE = ON_DEPENDENCY_AND_DATA_MOVEMENT : La balise est propagée à la fois pour les dépendances d’objets et les déplacements de données.

Pour plus d’informations sur la propagation, voir Propagation automatique des balises avec des balises définies par l’utilisateur.

Exemples

Créez une nouvelle balise qui se propage automatiquement en cas de dépendance d’un objet.

CREATE TAG data_sensitivity PROPAGATE = ON_DEPENDENCY;
Copy

Mettez à jour une balise existante afin d’activer la propagation automatique pour la dépendance des objets et le mouvement des données.

ALTER TAG data_sensitivity SET PROPAGATE = ON_DEPENDENCY_AND_DATA_MOVEMENT;
Copy

Mettez à jour une balise existante pour désactiver la propagation.

ALTER TAG data_sensitivity UNSET PROPAGATE;
Copy

Paramétrage d’une balise

Vous pouvez fixer une balise sur un objet à l’aide de l’interface utilisateur ou SQL.

Lorsque vous définissez une balise sur un objet, vous devez définir la valeur de la balise. Cette valeur de chaîne peut comporter jusqu’à 256 caractères.

L’utilisateur qui a créé une balise peut avoir spécifié une liste de valeurs autorisées. Dans ce cas, vous ne pouvez régler qu’une valeur de balise figurant dans la liste. Pour obtenir la liste des valeurs de chaîne autorisées pour une balise donnée, appelez la fonction SYSTEM$GET_TAG_ALLOWED_VALUES. Par exemple, en supposant que la balise cost_center soit stockée dans une base de données nommée governance et un schéma nommé tags, vous pouvez exécuter le paramètre suivant pour déterminer si vous pouvez définir la valeur de la balise sur finance ou marketing :

SELECT SYSTEM$GET_TAG_ALLOWED_VALUES('governance.tags.cost_center');
Copy
+--------------------------------------------------------------+
| SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') |
|--------------------------------------------------------------|
| ["finance","marketing"]                                      |
+--------------------------------------------------------------+

Utilisez Snowsight pour définir des balises

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 + Tag. Suivez les invites pour gérer l’attribution de la balise.

  • Naviguez jusqu’au domaine 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 Governance , votre compte Snowflake doit être Enterprise Edition ou supérieur. En outre, vous devez avoir l’un des rôles suivants :

  • Utilisez le rôle ACCOUNTADMIN.

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

    Pour obtenir des informations sur ces rôles de base de données, voir Rôles des bases de données SNOWFLAKE.

Utilisez SQL pour définir des balises

Vous pouvez utiliser les commandes SQL pour définir une balise lors de la création d’un nouvel objet ou pour définir une balise sur un objet existant.

Pour établir une balise sur un nouvel objet que vous créez, utilisez la commande CREATE … WITH TAG. Par exemple, pour attribuer une balise cost_center à un entrepôt que vous êtes en train de créer, exécutez ce qui suit :

CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
Copy

Pour établir une balise sur un objet existant, utilisez la commande ALTER … SET TAG. Par exemple, pour attribuer une balise cost_center à un entrepôt existant, exécutez ce qui suit :

ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
Copy

Exemple détaillé : Création et attribution de balises avec SQL

L’exemple suivant est un exemple étendu qui donne un aperçu de haut niveau de l’utilisation de SQL pour mettre en œuvre le balisage des objets. Il vous montre comment faire les choses suivantes :

  • Gérer les privilèges de contrôle d’accès nécessaires pour travailler avec les balises.

    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. Pour d’autres approches, voir Méthodes d’attribution des privilèges de balise.

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

  • Attribuez une balise à un nouvel objet Snowflake à l’aide d’une commande CREATE <objet>.

  • Attribuez une balise aux objets Snowflake existants à l’aide des commandes ALTER <objet>.

  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 Privilèges de contrôle d’accès (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 la balise à un nouvel entrepôt.

    USE ROLE tag_admin;
    CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
    
    Copy
  5. Attribuez la balise à un entrepôt existant.

    USE ROLE tag_admin;
    ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
    
    Copy
  6. Attribuez la balise à une colonne d’une table existante.

    ALTER TABLE hr.tables.empl_info
      MODIFY COLUMN job_title
      SET TAG cost_center = 'marketing';
    
    Copy

Supprimer une balise

Utilisez la commande DROP TAG pour supprimer une balise. Lorsque vous exécutez la commande, il y a une période de grâce de 24 heures avant que la balise ne soit définitivement supprimée. Pendant la période de grâce, vous pouvez exécuter la commande UNDROP TAG pour restaurer la balise, ce qui rétablit également toutes les affectations de balise (c’est-à-dire les références) entre la balise et les objets.

Si vous souhaitez déterminer quels objets possèdent une balise avant de la supprimer, effectuez une requête dans la vue TAG_REFERENCES (dans Account Usage) pour déterminer les affectations de balise.

Privilèges de contrôle d’accès

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.

Le privilège USAGE relatif à la base de données et au schéma parents est exigé pour effectuer des opérations sur tout objet d’un schéma.

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

Fonctionnement

Privilège requis

Créer une balise.

Un rôle avec le privilège CREATE TAG dans le même schéma.

Créer une balise qui se propage

Un rôle avec les privilèges APPLY TAG ON ACCOUNT et OWNERSHIP sur la balise.

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.

L’un des éléments suivants : . Un rôle doté du privilège USAGE sur le schéma dans lequel les balises existent, ou . Un rôle doté du privilège APPLY TAG ON ACCOUNT.

Active ou désactive une balise sur un objet.

Pour les objets individuels, un rôle avec le privilège APPLY TAG ON ACCOUNT, ou le privilège APPLY TAG sur la balise et le privilège OWNERSHIP sur l’objet où 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 ON ACCOUNT, 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.

Méthodes d’attribution des privilèges de balise

Cette section décrit différentes approches pour l’attribution des privilèges nécessaires à la création et à la définition des balises.

  1. Pour une gestion centralisée des balises dans laquelle le rôle personnalisé tag_admin crée et établit des balises sur tous les objets/colonnes, les privilèges suivants 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 le privilège de définir la balise cost_center sur les tables et les vues dont il est propriétaire (c’est-à-dire que le rôle dispose du 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