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;
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;
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;
Mettez à jour une balise existante pour désactiver la propagation.
ALTER TAG data_sensitivity UNSET PROPAGATE;
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');
+--------------------------------------------------------------+
| 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');
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';
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>.
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;
CopyAccordez le rôle personnalisé
tag_admin
à un utilisateur qui sert d’administrateur de balises.USE ROLE USERADMIN; GRANT ROLE tag_admin TO USER jsmith;
CopyExécutez une instruction CREATE TAG pour créer une balise.
USE ROLE tag_admin; USE SCHEMA mydb.mysch; CREATE TAG cost_center;
CopyAffectez la balise à un nouvel entrepôt.
USE ROLE tag_admin; CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
CopyAttribuez la balise à un entrepôt existant.
USE ROLE tag_admin; ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
CopyAttribuez 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.
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;
CopyDans 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 balisecost_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