SHOW GRANTS

Répertorie tous les privilèges de contrôle d’accès qui ont été accordés explicitement aux rôles, aux utilisateurs et aux partages.

Pour plus d’informations sur les privilèges et les rôles, voir Aperçu du contrôle d’accès.

Pour plus d’informations sur les partages, voir Présentation de Secure Data Sharing.

Note

SHOW GRANTS est une variante spéciale qui utilise une syntaxe différente de toutes les autres commandes SHOW <objets>.

Syntaxe

SHOW GRANTS [ LIMIT <rows> ]

SHOW GRANTS ON ACCOUNT [ LIMIT <rows> ]

SHOW GRANTS ON <object_type> <object_name> [ LIMIT <rows> ]

SHOW GRANTS TO {
  APPLICATION <app_name>
  | APPLICATION ROLE [ <app_name>. ]<app_role_name>
  | <class_name> ROLE <instance_name>!<instance_role_name>
  | ROLE <role_name>
  | SHARE <share_name> [ IN APPLICATION PACKAGE <app_package_name> ]
  | USER <user_name>
} [ LIMIT <rows> ]

SHOW GRANTS OF { APPLICATION ROLE <app_role_name>|  ROLE <role_name> } [ LIMIT <rows> ]

SHOW GRANTS OF SHARE <share_name> [ LIMIT <rows> ]

SHOW FUTURE GRANTS IN SCHEMA { <schema_name> } [ LIMIT <rows> ]

SHOW FUTURE GRANTS IN DATABASE { <database_name> } [ LIMIT <rows> ]

SHOW FUTURE GRANTS TO ROLE <role_name> [ LIMIT <rows> ]

SHOW FUTURE GRANTS TO DATABASE ROLE <database_role_name>
Copy

Variantes

SHOW GRANTS

Est syntaxiquement équivalent à SHOW GRANTS TO USER current_user. Répertorie tous les rôles accordés à l’utilisateur actuel.

LIMIT rows

(Facultatif) Limite le nombre maximum de lignes renvoyées. Le nombre réel de lignes renvoyées peut être inférieur à la limite spécifiée. Par exemple, le nombre d’objets existants est inférieur à la limite spécifiée.

Par défaut : aucune valeur (aucune limite n’est appliquée à la sortie).

SHOW GRANTS ON ...
ACCOUNT

Liste tous les privilèges de niveau compte (c’est-à-dire globaux) qui ont été accordés aux rôles.

object_type object_name

Liste tous les privilèges qui ont été accordés sur l’objet.

Pour les rôles de base de données, vous pouvez utiliser le nom complet, database_name.database_role_name, ou le nom relatif, database_role_name. Si vous utilisez le nom relatif du rôle de base de données, Snowflake utilise la base de données en session pour résoudre le nom relatif du rôle de base de données.

SHOW GRANTS TO ...
APPLICATION app_name

Répertorie tous les privilèges et rôles accordés à l’application.

APPLICATION ROLE [ app_name. ]app_role_name

Répertorie tous les privilèges et rôles accordés au rôle d’application.

Le nom de l’application, app_name, est facultatif. S’il n’est pas spécifié, Snowflake utilise l’application en cours. Si l’application n’est pas une base de données, cette commande ne renvoie pas de résultats.

class_name ROLE instance_name!instance_role_name

Répertorie tous les privilèges et rôles accordés au rôle de l’instance.

Si la base de données et le schéma qui contiennent le class_name ne sont pas utilisés ou ne sont pas spécifiés dans votre chemin de recherche, spécifiez le nom complet de la classe. Par exemple, SNOWFLAKE.CORE.BUDGET.

Pour plus de détails, consultez l”exemple de rôle d’instance.

ROLE role_name

Liste tous les privilèges et rôles accordés au rôle. Si le rôle dispose d’un droit sur un objet temporaire, ce droit n’existe que dans la session au cours de laquelle l’objet temporaire a été créé.

SHARE share_name

Liste tous les privilèges accordés au partage.

SHARE share_name IN APPLICATION PACKAGE app_package_name

Répertorie tous les privilèges et rôles accordés à un partage dans le paquet d’application.

USER user_name

Répertorie tous les rôles accordés à l’utilisateur. Notez que le rôle PUBLIC, qui est automatiquement disponible pour chaque utilisateur, ne figure pas dans la liste.

SHOW GRANTS OF...
APPLICATION ROLE [ app_name. ]app_role

Répertorie tous les utilisateurs et tous les rôles auxquels le rôle a été accordé.

Le nom de l’application, app_name, est facultatif. S’il n’est pas spécifié, Snowflake utilise l’application en cours. Si l’application n’est pas une base de données, cette commande ne renvoie pas de résultats.

ROLE role_name

Liste tous les utilisateurs et tous les rôles auxquels le rôle a été accordé.

SHARE share_name

Liste tous les comptes pour le partage et indique les comptes qui utilisent le partage.

SHOW FUTURE GRANTS IN ...
SCHEMA database_name.schema_name

Répertorie tous les privilèges sur les nouveaux (c’est-à-dire les futurs) objets d’un type spécifié dans le schéma assigné à un rôle. database_name. spécifie la base de données dans laquelle réside le schéma. Ceci est facultatif lors de l’interrogation d’un schéma dans la base de données actuelle.

DATABASE database_name

Répertorie tous les privilèges sur les nouveaux objets (c’est-à-dire futurs) d’un type spécifié dans la base de données accordés à un rôle.

SHOW FUTURE GRANTS TO ROLE role_name

Répertorie tous les privilèges sur les nouveaux objets (c’est-à-dire futurs) d’un type spécifié dans une base de données ou un schéma accordés au rôle.

SHOW FUTURE GRANTS TO DATABASE ROLE database_role_name

Répertorie tous les privilèges sur les nouveaux objets (c’est-à-dire futurs) d’un type spécifié dans une base de données ou un schéma accordés au rôle de base de données.

Un rôle de base de données partagé ne prend pas en charge les attributions futures. Pour plus de détails, voir les notes sur l’utilisation dans la commande GRANT DATABASE ROLE … TO SHARE.

Notes sur l’utilisation

  • La colonne granted_by indique le rôle qui a accordé l’autorisation d’un privilège au bénéficiaire. Le rôle d’autorisation est connu sous le nom de concédant.

    Lorsque vous autorisez des privilèges sur un objet à un rôle à l’aide de GRANT <privilèges>, les règles d’autorisation suivantes déterminent quel rôle est répertorié comme le concédant du privilège :

    1. Si un rôle actif est le propriétaire de l’objet (c’est-à-dire qu’il possède le privilège OWNERSHIP sur l’objet), ce rôle est le concédant.

    2. Si un rôle actif détient l’autorisation spécifiée avec l’option d’autorisation activée (c’est-à-dire que le privilège a été accordé au rôle actif avec l’option GRANT <privilèges> … TO ROLE <nom_rôle> WITH GRANT OPTION, où <nom_rôle> est l’un des rôles actifs). Si c’est le cas, le rôle qui détient le privilège avec l’option d’autorisation activée est le rôle d’autorisation. Notez que si plusieurs rôles actifs répondent à ce critère, il n’est pas possible de déterminer lequel de ces rôles devient le rôle de concédant.

    3. Si un rôle actif détient le privilège global MANAGE GRANTS, le rôle concédant est le propriétaire de l’objet, et non le rôle qui détenait le privilège MANAGE GRANTS. En d’autres termes, le privilège MANAGE GRANTS permet à un rôle de se faire passer pour le propriétaire de l’objet afin d’accorder des privilèges sur cet objet.

    Si la colonne granted_by est vide, le privilège a été accordé par le rôle SYSTEM Snowflake. Certaines opérations internes sont effectuées avec ce rôle. Les concessions de privilèges autorisées par le rôle SYSTEM ne peuvent pas être modifiées par les clients.

  • Lorsque vous utilisez la syntaxe SHOW GRANTS… TO SHARE IN APPLICATION PACKAGE :

    • La colonne grantee_name indique le nom du paquet d’application.

    • La colonne granted_to spécifie APPLICATION PACKAGE SHARE.

  • La colonne granted_by_role_type indique le type de rôle de concédant qui a effectué l’attribution : ROLE, DATABASE_ROLE, ou APPLICATION_ROLE. Cette colonne n’apparaît dans la sortie lorsque vous utilisez la syntaxe SHOW GRANTS ON.

  • La colonne grant_options renvoie FALSE lorsque vous exécutez une commande SHOW GRANTS ON <type_objet> <nom_objet> pour un objet du schéma d’accès géré.

  • La colonne privilege inclut les privilèges OWNERSHIP MANAGE GRANTS pour le rôle qui possède le schéma d’accès géré lorsque vous exécutez une commande SHOW GRANTS ON SCHEMA <schema_accès_géré>.

  • Avec les rôles de base de données et la syntaxe SHOW FUTURE GRANTS TO DATABASE ROLE, la commande renvoie les résultats pour les rôles de base de données qui ne sont pas accordés à un partage.

    Dans le compte consommateur de partage de données, cette commande ne renvoie aucune ligne lorsqu’un rôle de base de données partagée se voit accorder de futurs privilèges. Cependant, en fonction de votre compte et du moment de la prise en charge des futurs privilèges sur les rôles de base de données dans cette commande, vous pourriez voir ce message d’erreur :

    Invalid state of the shared database role. Please revoke the future grants to the shared database role.
    

    En tant que consommateur, demandez au fournisseur de révoquer les futures autorisations du rôle de base de données partagée.

  • L’exécution de la commande ne nécessite pas l’exécution d’un entrepôt en cours d’exécution.

  • Pour post-traiter la sortie de cette commande, vous pouvez utiliser la fonction RESULT_SCAN, qui traite la sortie comme une table qui peut être interrogée.

Exemples

Répertorier tous les privilèges qui ont été accordés sur la base de données sales :

SHOW GRANTS ON DATABASE sales;

+---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
| created_on                      | privilege | granted_on | name       | granted_to | grantee_name | grant_option | granted_by_role_type | granted_by   |
+---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
| Thu, 07 Jul 2016 05:22:29 -0700 | OWNERSHIP | DATABASE   | REALESTATE | ROLE       | ACCOUNTADMIN | true         | ROLE                 | ACCOUNTADMIN |
| Thu, 07 Jul 2016 12:14:12 -0700 | USAGE     | DATABASE   | REALESTATE | ROLE       | PUBLIC       | false        | ROLE                 | ACCOUNTADMIN |
+---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
Copy

Répertorier tous les privilèges accordés au rôle analyst :

SHOW GRANTS TO ROLE analyst;

+---------------------------------+------------------+------------+------------+------------+--------------+------------+
| created_on                      | privilege        | granted_on | name       | granted_to | grant_option | granted_by |
|---------------------------------+------------------+------------+------------+------------+--------------+------------+
| Wed, 17 Dec 2014 18:19:37 -0800 | CREATE WAREHOUSE | ACCOUNT    | DEMOENV    | ANALYST    | false        | SYSADMIN   |
+---------------------------------+------------------+------------+------------+------------+--------------+------------+
Copy

Répertorier tous les rôles attribués à l’utilisateur demo :

SHOW GRANTS TO USER demo;

+---------------------------------+------+------------+-------+---------------+
| created_on                      | role | granted_to | name  | granted_by    |
|---------------------------------+------+------------+-------+---------------+
| Wed, 31 Dec 1969 16:00:00 -0800 | DBA  | USER       | DEMO  | SECURITYADMIN |
+---------------------------------+------+------------+-------+---------------+
Copy

Répertorier tous les rôles et utilisateurs qui se sont vu attribuer le rôle analyst :

SHOW GRANTS OF ROLE analyst;

+---------------------------------+---------+------------+--------------+---------------+
| created_on                      | role    | granted_to | grantee_name | granted_by    |
|---------------------------------+---------+------------+--------------+---------------|
| Tue, 05 Jul 2016 16:16:34 -0700 | ANALYST | ROLE       | ANALYST_US   | SECURITYADMIN |
| Tue, 05 Jul 2016 16:16:34 -0700 | ANALYST | ROLE       | DBA          | SECURITYADMIN |
| Fri, 08 Jul 2016 10:21:30 -0700 | ANALYST | USER       | JOESM        | SECURITYADMIN |
+---------------------------------+---------+------------+--------------+---------------+
Copy

Répertorier tous les privilèges accordés sur les futurs objets du schéma sales.public :

SHOW FUTURE GRANTS IN SCHEMA sales.public;

+-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+
| created_on                    | privilege | grant_on | name                      | grant_to | grantee_name          | grant_option |
|-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------|
| 2018-12-21 09:22:26.946 -0800 | INSERT    | TABLE    | SALES.PUBLIC.<TABLE>      | ROLE     | ROLE1                 | false        |
| 2018-12-21 09:22:26.946 -0800 | SELECT    | TABLE    | SALES.PUBLIC.<TABLE>      | ROLE     | ROLE1                 | false        |
+-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+
Copy

Répertoriez tous les privilèges de rôle accordés au rôle d’instance nommé cost.budgets.my_budget!ADMIN :

SHOW GRANTS TO SNOWFLAKE.CORE.BUDGET ROLE cost.budgets.my_budget!ADMIN;
Copy
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+
| created_on                    | privilege | granted_on | name                                                                                                                                   |
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+
| 2023-10-31 15:57:41.489 +0000 | USAGE     | ROLE       | SNOWFLAKE.CORE.BUDGET!ADMIN                                                                                                            |
| 2023-09-25 22:56:12.798 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!ACTIVATE():VARCHAR(16777216)                                                                                     |
| 2023-09-25 22:56:13.304 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!ADD_RESOURCE(TARGET_REF VARCHAR):VARCHAR(16777216)                                                               |
| 2023-09-25 22:56:12.863 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_ACTIVATION_DATE():DATE                                                                                       |
| 2023-09-25 22:56:12.412 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_BUDGET_NAME():VARCHAR(16777216)                                                                              |
| 2023-09-25 22:56:11.510 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_CONFIG():TABLE: ()                                                                                           |
| 2023-09-25 22:56:13.432 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_LINKED_RESOURCES():TABLE: ()                                                                                 |
| 2023-09-25 22:56:11.582 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_MEASUREMENT_TABLE():TABLE: ()                                                                                |
| 2023-09-25 22:56:12.153 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_NOTIFICATION_EMAIL():VARCHAR(16777216)                                                                       |
| 2023-09-25 22:56:12.016 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_NOTIFICATION_INTEGRATION_NAME():VARCHAR(16777216)                                                            |
| 2023-09-25 22:56:12.286 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_NOTIFICATION_MUTE_FLAG():VARCHAR(16777216)                                                                   |
| 2023-09-25 22:56:13.068 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_SERVICE_TYPE_USAGE(SERVICE_TYPE VARCHAR):TABLE: ()                                                           |
| 2023-09-25 22:56:13.245 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_SERVICE_TYPE_USAGE(SERVICE_TYPE VARCHAR, TIME_DEPART VARCHAR, USER_TIMEZONE VARCHAR, TIME_LOWER_BOUND VARCHA |
| 2023-09-25 22:56:12.595 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_SPENDING_HISTORY():TABLE: ()                                                                                 |
| 2023-09-25 22:56:12.732 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_SPENDING_HISTORY(TIME_LOWER_BOUND VARCHAR, TIME_UPPER_BOUND VARCHAR):TABLE: ()                               |
| 2023-09-25 22:56:11.716 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!GET_SPENDING_LIMIT():NUMBER(38,0)                                                                                |
| 2023-09-25 22:56:13.367 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!REMOVE_RESOURCE(TARGET_REF VARCHAR):VARCHAR(16777216)                                                            |
| 2023-09-25 22:56:11.856 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!SET_EMAIL_NOTIFICATIONS(NOTIFICATION_CHANNEL_NAME VARCHAR, EMAIL VARCHAR):VARCHAR(16777216)                      |
| 2023-09-25 22:56:12.349 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!SET_NOTIFICATION_MUTE_FLAG(USER_MUTE_FLAG BOOLEAN):VARCHAR(16777216)                                             |
| 2023-09-25 22:56:11.780 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!SET_SPENDING_LIMIT(SPENDING_LIMIT FLOAT):VARCHAR(16777216)                                                       |
| 2023-09-25 22:56:12.475 +0000 | USAGE     | PROCEDURE  | SNOWFLAKE.CORE.BUDGET!SET_TASK_SCHEDULE(NEW_SCHEDULE VARCHAR):VARCHAR(16777216)                                                        |
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+