Catégories :

Utilisateur et sécurité DDL (contrôle d’accès)

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 Contrôle d’accès dans Snowflake. 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

SHOW GRANTS ON ACCOUNT

SHOW GRANTS ON <object_type> <object_name>

SHOW GRANTS TO { ROLE <role_name> | USER <user_name> | SHARE <share_name> }

SHOW GRANTS OF ROLE <role_name>

SHOW GRANTS OF SHARE <share_name>

SHOW FUTURE GRANTS IN SCHEMA { <schema_name> }

SHOW FUTURE GRANTS IN DATABASE { <database_name> }

SHOW FUTURE GRANTS TO ROLE <role_name>

Variantes

SHOW GRANTS

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

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.

SHOW GRANTS TO ...

ROLE role_name

Liste tous les privilèges et rôles accordés au rôle.

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.

SHARE share_name

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

SHOW GRANTS OF...

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.

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 <privileges> … TO ROLE, 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.

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

  • La commande retourne un maximum de 10 000 enregistrements pour le type d’objet spécifié, comme dicté par les privilèges d’accès pour le rôle utilisé pour exécuter la commande ; tous les enregistrements au-dessus de la limite de 10 000 enregistrements ne sont pas retournés, même avec un filtre appliqué.

    Pour afficher les résultats pour lesquels il existe plus de 10 000 enregistrements, interrogez la vue correspondante (s’il en existe une) dans Schéma d’information de Snowflake.

  • 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   |
|---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------|
| Thu, 07 Jul 2016 05:22:29 -0700 | OWNERSHIP | DATABASE   | REALESTATE | ROLE       | ACCOUNTADMIN | true         | ACCOUNTADMIN |
| Thu, 07 Jul 2016 12:14:12 -0700 | USAGE     | DATABASE   | REALESTATE | ROLE       | PUBLIC       | false        | ACCOUNTADMIN |
+---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------+

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   |
+---------------------------------+------------------+------------+------------+------------+--------------+------------+

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 |
+---------------------------------+------+------------+-------+---------------+

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 |
+---------------------------------+---------+------------+--------------+---------------+

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        |
+-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+
Revenir au début