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
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
Sintaticamente equivalente a
SHOW GRANTS TO USER current_user
. Lista todas as funções concedidas ao usuário atual.
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.
SHOW GRANTS TO ...
ROLE role_name
Lista todos os privilégios e funções concedidos à função.
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.
SHARE share_name
Lista todos os privilégios concedidos ao compartilhamento.
SHOW GRANTS OF...
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.
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:
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.
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.
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.
O comando não precisa de um warehouse em funcionamento para ser executado.
O comando retorna um máximo de 10 mil registros para o tipo de objeto especificado, como ditado pelos privilégios de acesso para a função usada para executar o comando; quaisquer registros acima do limite 10 mil não são retornados, mesmo com um filtro aplicado.
Para visualizar resultados para os quais existem mais de 10.000 registros, consulte a visualização correspondente (se houver) em Snowflake Information Schema.
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 | |---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------| | 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 | +---------------------------------+-----------+------------+------------+------------+--------------+--------------+--------------+
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 | +---------------------------------+------------------+------------+------------+------------+--------------+------------+
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 | +---------------------------------+------+------------+-------+---------------+
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 | +---------------------------------+---------+------------+--------------+---------------+
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 | +-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+