Contrôle de l’accès aux tables dynamiques

Ce sujet traite des privilèges nécessaires pour effectuer des opérations sur les tables dynamiques, telles que la création, la requête, la modification, la vue et la suppression.

Pour en savoir plus sur le modèle de privilèges Snowflake, voir Aperçu du contrôle d’accès et Privilèges de contrôle d’accès.

Transfert de la propriété

Pour accorder à un utilisateur un accès complet à une table dynamique, vous pouvez procéder de l’une des manières suivantes :

Lors de l’assignation d’attributions, veillez à spécifier le type d’objet DYNAMIC TABLE, car les tables dynamiques disposent d’un ensemble de privilèges différent de celui des tables ordinaires.

Pour accorder le privilège OWNERSHIP sur les tables dynamiques, assurez-vous que le rôle de réception dispose du privilège USAGE sur les éléments suivants. Dans le cas contraire, les actualisations programmées ultérieures échouent.

  • La base de données et le schéma qui contient la table dynamique.

  • L’entrepôt utilisé pour rafraîchir la table.

Pour transférer la propriété d’une table dynamique, vous pouvez utiliser la commande GRANT OWNERSHIP ou Snowsight.

L’exemple suivant utilise la commande GRANT OWNERSHIP pour octroyer des privilèges de propriété sur my_dynamic_table au rôle budget_admin.

GRANT OWNERSHIP ON DYNAMIC TABLE my_dynamic_table TO ROLE budget_admin;
Copy

L’exemple suivant utilise la commande GRANT OWNERSHIP pour accorder au rôle budget_admin des privilèges de propriété sur toutes les futures tables dynamiques créées dans le schéma mydb.myschema.

GRANT OWNERSHIP ON FUTURE DYNAMIC TABLES IN SCHEMA mydb.myschema TO ROLE budget_admin;
Copy

Pour en savoir plus sur le modèle de privilèges Snowflake, voir Aperçu du contrôle d’accès et Privilèges de contrôle d’accès.

Privilèges permettant de créer une table dynamique

Pour pouvoir créer une table dynamique, vous devez utiliser un rôle disposant des privilèges suivants :

Privilège

Objet

CREATE DYNAMIC TABLE

Schéma dans lequel vous prévoyez de créer la table dynamique.

SELECT

Tables et vues existantes que vous envisagez d’interroger pour la nouvelle table dynamique.

USAGE

Base de données et schéma que vous prévoyez d’utiliser pour la nouvelle table dynamique.

Entrepôt que vous prévoyez d’utiliser pour actualiser la table.

Note

Même si vous pouvez exécuter CREATE DYNAMIC TABLE ... INITIALIZE = ON_SCHEDULE avec un rôle secondaire disposant du privilège USAGE, la table dynamique ne s’actualisera pas si le rôle principal ne dispose pas de ce privilège, et ne sera donc pas initialisée.

Pour créer une table dynamique qui dépend d’une autre table dynamique, vous devez utiliser un rôle qui dispose des privilèges suivants :

Privilège

Objet

SELECT

Table dynamique que vous prévoyez d’interroger pour créer la nouvelle table dynamique.

OPERATE

Toutes les tables dynamiques en amont dont dépend la nouvelle table dynamique. Nécessaire uniquement si vous avez configuré la table dynamique de sorte qu’elle soit actualisée de manière synchrone lors de sa création.

Privilèges permettant d’interroger une table dynamique

Pour interroger une table dynamique, vous pouvez utiliser un rôle doté des privilèges permettant de créer une table dynamique. Pour les scénarios dans lesquels un utilisateur ne doit interroger qu’une table dynamique (par exemple, un analyste de données), utilisez un rôle doté des privilèges suivants :

Privilège

Objet

USAGE

Base de données et schéma contenant la table dynamique.

Entrepôt utilisé pour exécuter la requête.

SELECT

Table dynamique interrogée.

Privilèges permettant de modifier une table dynamique

Pour modifier une table dynamique, vous devez utiliser un rôle qui dispose du privilège OWNERSHIP ou OPERATE sur cette table dynamique.

Si vous disposez du privilège OPERATE sur une table dynamique, vous pouvez effectuer les opérations suivantes à l’aide de la commande ALTER DYNAMIC TABLE :

Si vous disposez du privilège OWNERSHIP sur une table dynamique, vous pouvez effectuer les opérations suivantes en plus de celles énumérées ci-dessus :

Privilèges permettant d’afficher les métadonnées d’une table dynamique

Pour afficher les métadonnées, vous devez utiliser un rôle titulaire du privilège MONITOR sur cette table dynamique.

Pour les scénarios où l’utilisateur n’a besoin que de voir les métadonnées et l’Information Schema d’une table dynamique (par exemple, les rôles détenus par les scientifiques des données), utilisez un rôle qui a le privilège MONITOR sur cette table dynamique. Bien que le privilège OPERATE accorde cet accès, il inclut également la capacité de modifier les tables dynamiques, ce qui fait de MONITOR l’option la plus appropriée pour les scénarios dans lesquels un utilisateur n’a pas besoin de modifier une table dynamique.

Si vous disposez du privilège MONITOR sur une table dynamique, vous pouvez effectuer les opérations suivantes :

  • Utilisez la commande DESCRIBE DYNAMIC TABLE et la page de détails des tables dynamiques Snowsight pour afficher les détails spécifiques d’une table dynamique. Les champs suivants sont masqués si vous ne disposez que du privilège SELECT sur une table dynamique : text, warehouse, scheduling_state, last_suspended_on et suspend_reason_code (UIuniquement).

  • Utilisez la commande SHOW DYNAMIC TABLES pour voir à quelles tables dynamiques vous avez accès.

  • Appelez la fonction de table DYNAMIC_TABLE_GRAPH_HISTORY pour afficher l’historique du graphique.

  • Appelez la fonction de table DYNAMIC_TABLE_REFRESH_HISTORY pour afficher l’historique d’actualisation.

Privilèges permettant de supprimer une table dynamique

Pour supprimer une table dynamique, vous devez utiliser un rôle titulaire du privilège OWNERSHIP sur cette table dynamique.