SHOW GRANTS

Lista todos os privilégios de controle de acesso que foram explicitamente concedidos a funções, usuários e compartilhamentos.

Para obter mais informações sobre privilégios e funções, consulte Visão geral do controle de acesso.

Para obter mais informações sobre compartilhamentos, consulte Introdução ao Secure Data Sharing.

Nota

SHOW GRANTS é uma variação especial que usa sintaxe diferente de todos os outros comandos SHOW <objetos>.

Sintaxe

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

Sintaticamente equivalente a SHOW GRANTS TO USER current_user. Lista todas as funções concedidas ao usuário atual.

LIMIT rows

Opcionalmente, limita o número máximo de linhas retornadas. O número real de linhas retornadas pode ser menor que o limite especificado. Por exemplo, o número de objetos existentes é menor que o limite especificado.

Padrão: sem valor (nenhum limite é aplicado à saída).

SHOW GRANTS ON ...
ACCOUNT

Lista todos os privilégios de nível de conta (ou seja, global) que foram concedidos às funções.

object_type object_name

Lista todos os privilégios que foram concedidos no objeto.

Para funções de banco de dados, você pode usar o nome completo, database_name.database_role_name, ou o nome relativo, database_role_name. Se você usar o nome relativo para a função de banco de dados, o Snowflake usará o banco de dados na sessão para resolver o nome relativo da função de banco de dados.

SHOW GRANTS TO ...
APPLICATION app_name

Lista todos os privilégios e funções concedidos ao aplicativo.

APPLICATION ROLE [ app_name. ]app_role_name

Lista todos os privilégios e funções concedidos à função do aplicativo.

O nome do aplicativo, app_name, é opcional. Se não for especificado, o Snowflake usará o aplicativo atual. Se o aplicativo não for um banco de dados, esse comando não retornará resultados.

class_name ROLE instance_name!instance_role_name

Lista todos os privilégios e funções concedidos à função de instância.

Se o banco de dados e o esquema que contém class_name não estiverem em uso ou não estiverem especificados em seu caminho de pesquisa, especifique o nome completo da classe. Por exemplo, SNOWFLAKE.CORE.BUDGET.

Para obter detalhes, consulte o exemplo de função de instância.

ROLE role_name

Lista todos os privilégios e funções concedidos à função. Se a função tiver uma concessão em um objeto temporário, a concessão só existirá na sessão em que o objeto temporário foi criado.

SHARE share_name

Lista todos os privilégios concedidos ao compartilhamento.

SHARE share_name IN APPLICATION PACKAGE app_package_name

Lista todos os privilégios e funções concedidos a um compartilhamento no pacote de aplicativo.

USER user_name

Lista todas as funções concedidas ao usuário. Observe que a função PUBLIC, que está automaticamente disponível para todos os usuários, não está listada.

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

Lista todos os usuários e funções aos quais a função do aplicativo foi concedida.

O nome do aplicativo, app_name, é opcional. Se não for especificado, o Snowflake usará o aplicativo atual. Se o aplicativo não for um banco de dados, esse comando não retornará resultados.

ROLE role_name

Lista todos os usuários e funções aos quais a função foi concedida.

SHARE share_name

Lista todas as contas para o compartilhamento e indica as contas que estão usando o compartilhamento.

SHOW FUTURE GRANTS IN ...
SCHEMA database_name.schema_name

Lista todos os privilégios em objetos novos (isto é, futuros) de um tipo específico no esquema concedido a uma função. database_name. especifica o banco de dados no qual o esquema reside e é opcional ao consultar um esquema no banco de dados atual.

DATABASE database_name

Lista todos os privilégios em objetos novos (isto é, futuros) de um tipo específico no banco de dados concedido a uma função.

SHOW FUTURE GRANTS TO ROLE role_name

Lista todos os privilégios em objetos novos (isto é, futuros) de um tipo específico em um banco de dados concedido à função.

SHOW FUTURE GRANTS TO DATABASE ROLE database_role_name

Lista todos os privilégios em objetos novos (isto é, futuros) de um tipo específico em um banco de dados concedido à função do banco de dados.

Uma função de banco de dados compartilhada não oferece suporte a concessões futuras. Para obter mais detalhes, consulte as notas de uso no comando GRANT DATABASE ROLE … TO SHARE.

Notas de uso

  • A coluna granted_by indica a função que autorizou a concessão de um privilégio ao beneficiário. A função de autorização é conhecida como concessor.

    Quando você concede privilégios sobre um objeto a uma função usando GRANT <privilégios>, as seguintes regras de autorização determinam qual função é listada como concessor do privilégio:

    1. Se uma função ativa é o proprietário do objeto (ou seja, tem o privilégio OWNERSHIP sobre o objeto), essa função é o concessor.

    2. Se uma função ativa possuir a permissão especificada com a opção de concessão autorizada (ou seja, o privilégio foi concedido à função ativa com GRANT <privileges> … TO ROLE <role_name> WITH GRANT OPTION, onde <role_name> é uma das funções ativas). Se assim for, a função que detém o privilégio com a opção de concessão autorizada é a função do concessor. Observe que se vários funções ativos cumprem este critério, não é determinístico qual dos funções se torna a função do concessor.

    3. Se um papel ativo detém o privilégio global MANAGE GRANTS, a função concessor é o proprietário do objeto, não a função que detinha o privilégio MANAGE GRANTS. Ou seja, o privilégio MANAGE GRANTS permite que uma função faça o papel de proprietário do objeto para fins de concessão de privilégios sobre aquele objeto.

    Se a coluna granted_by estiver vazia, o privilégio foi concedido pela função do SYSTEM do Snowflake. Certas operações internas são realizadas com essa função. As concessões de privilégios autorizadas pela função SYSTEM não podem ser modificadas por clientes.

  • Ao usar a sintaxe SHOW GRANTS … TO SHARE IN APPLICATION PACKAGE:

    • A coluna grantee_name especifica o nome do pacote de aplicativo.

    • A coluna granted_to especifica APPLICATION PACKAGE SHARE.

  • A coluna granted_by_role_type especifica o tipo de função de concessor que executou a concessão: ROLE, DATABASE_ROLE ou APPLICATION_ROLE. Esta coluna só aparece na saída ao usar a sintaxe SHOW GRANTS ON.

  • A coluna grant_options retorna FALSE quando você executa um comando SHOW GRANTS ON <tipo_de_objeto> <nome_do_objeto> para um objeto no esquema de acesso gerenciado.

  • A coluna privilege inclui os privilégios OWNERSHIP e MANAGE GRANTS para a função que possui o esquema de acesso gerenciado quando você executa um comando SHOW GRANTS ON SCHEMA <esquema_de_acesso_gerenciado>.

  • Com funções de banco de dados e a sintaxe SHOW FUTURE GRANTS TO DATABASE ROLE, o comando retorna resultados para funções de banco de dados que não são concedidas a um compartilhamento.

    Na conta do consumidor de compartilhamento de dados, esse comando não retorna nenhuma linha quando uma função de banco de dados compartilhada recebe privilégios futuros. No entanto, dependendo da sua conta e do momento do suporte para privilégios futuros para funções de banco de dados neste comando, você poderá ver esta mensagem de erro:

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

    Como consumidor, peça ao provedor para revogar as concessões futuras da função de banco de dados compartilhada.

  • O comando não precisa de um warehouse em funcionamento para ser executado.

  • Para pós-processar a saída deste comando, você pode usar a função RESULT_SCAN, que trata a saída como uma tabela que pode ser consultada.

Exemplos

Listar todos os privilégios que foram concedidos no banco de dados 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

Listar todos os privilégios concedidos à função 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

Listar todas as funções concedidas ao usuário 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

Listar todas as funções e usuários a quem foi concedida a função 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

Listar todos os privilégios concedidos em objetos futuros no esquema 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

Listar todos os privilégios de função concedidos à função de instância denominada 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)                                                        |
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+