SHOW GRANTS¶
列出已明确授予角色、用户和共享的所有访问控制权限。
有关权限和角色的更多信息,请参阅 访问控制概述。
有关共享的更多信息,请参阅 Secure Data Sharing 简介。
备注
SHOW GRANTS 是一种特殊的变体,使用与所有其他 SHOW <objects> 命令都不同的语法。
语法¶
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>
| SERVICE ROLE <service_name>!<service_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>
| SERVICE ROLE <service_name>!<service_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>
变体¶
SHOW GRANTS
在语法上等价于
SHOW GRANTS TO USER current_user
。列出授予当前用户的所有角色。
LIMIT rows
(可选)限制返回的最大行数。实际返回的行数可能小于指定的限制。例如,现有对象的数量小于指定的限制。
默认:无值(不对输出应用限制)。
SHOW GRANTS ON ...
ACCOUNT
列出所有已授予角色的账户级别(即全局)权限。
object_type object_name
列出已授予的此对象的所有权限。
对于数据库角色,可以使用完全限定名称
database_name.database_role_name
,或相对名称database_role_name
。如果使用数据库角色的相对名称,Snowflake 会使用会话中的数据库来解析数据库角色的相对名称。
SHOW GRANTS TO ...
APPLICATION app_name
列出授予应用程序的所有权限和角色。
APPLICATION ROLE [ app_name. ]app_role_name
列出授予应用程序角色的所有权限和角色。
应用程序的名称
app_name
是可选的。如果未指定,Snowflake 会使用当前应用程序。如果应用程序不是数据库,则此命令不会返回结果。SERVICE ROLE service_name!service_role_name
列出为服务角色被授予 USAGE 权限的服务端点。
class_name ROLE instance_name!instance_role_name
列出授予 :ref:` 实例角色 <label-instance_roles>` 的所有权限和角色。
如果包含
class_name
的数据库和架构未 :doc:` 使用 </sql-reference/sql/use>`,或未在 :ref:` 搜索路径 <label-update_search_path>` 中指定,请指定类的完全限定名称。例如SNOWFLAKE.CORE.BUDGET
。有关详细信息,请参阅 实例角色示例。
ROLE role_name
列出授予该角色的所有权限和角色。如果角色对临时对象有授权,那么该授权仅存在于创建临时对象的会话中。
SHARE share_name
列出授予共享的所有权限。
SHARE share_name IN APPLICATION PACKAGE app_package_name
列出授予应用程序包中共享的所有权限和角色。
USER user_name
列出授予用户的所有角色。请注意,未列出自动可供每个用户使用的 PUBLIC 角色。
SHOW GRANTS OF...
APPLICATION ROLE [ app_name. ]app_role
列出已授予应用程序角色的所有用户和角色。
应用程序的名称
app_name
是可选的。如果未指定,Snowflake 会使用当前应用程序。如果应用程序不是数据库,则此命令不会返回结果。SERVICE ROLE service_name!service_role_name
列出已授予服务角色的所有用户和角色。
ROLE role_name
列出已授予该角色的所有用户和角色。
SHARE share_name
列出共享的所有账户,并指明正在使用共享的账户。
SHOW FUTURE GRANTS IN ...
SCHEMA database_name.schema_name
列出授予角色的架构中指定类型的新(即未来)对象的所有权限。
database_name.
指定架构所在的数据库,并且在查询当前数据库中的模式时是 可选的。DATABASE database_name
列出授予角色的数据库中指定类型的新(即未来)对象的所有权限。
SHOW FUTURE GRANTS TO ROLE role_name
列出授予角色的数据库或架构中指定类型的新(即未来)对象的所有权限。
SHOW FUTURE GRANTS TO DATABASE ROLE database_role_name
列出授予数据库角色的数据库或架构中指定类型的新(即未来)对象的所有权限。
共享的数据库角色不支持未来授权。有关详细信息,请参阅 GRANT DATABASE ROLE ...TO SHARE 命令中的使用说明。
使用说明¶
granted_by
列表示将权限授予被授予者的角色。授权角色称为 授予者。当您使用 GRANT <privileges> 向角色授予对象的权限时,以下授权规则确定将哪个角色列为权限的授予者:
如果 活跃角色 是对象所有者(即对对象具有 OWNERSHIP 权限),则该角色是授予者。
如果活跃角色拥有已授权的授予选项的指定权限(即,授予活动角色权限,该活动角色拥有 GRANT <privileges> ...TO ROLE <role_name> WITH GRANT OPTION,其中 <role_name> 是活跃角色之一)。如果是,那么拥有已授权的授予选项的权限角色就是授予者角色。请注意,如果多个活跃角色满足此标准,则无法确定哪个角色成为授予者角色。
如果一个活跃角色拥有全局 MANAGE GRANTS 权限,则授予者角色是对象所有者,而 不是 拥有 MANAGE GRANTS 权限的角色。也就是说,MANAGE GRANTS 权限允许角色模拟对象所有者,以便对该对象授予权限。
如果
granted_by
列为空,则权限由 Snowflake SYSTEM 角色授予。此角色执行某些内部操作。客户无法修改 SYSTEM 角色所授予的权限。使用 SHOW GRANTS ...TO SHARE IN APPLICATION PACKAGE 语法时:
grantee_name
列指定应用程序包的名称。granted_to
列指定APPLICATION PACKAGE SHARE
。
granted_by_role_type
列指定执行授予的授予者角色的类型:ROLE
、DATABASE_ROLE
或APPLICATION_ROLE
。仅当使用 SHOW GRANTS ON 语法,此列才会出现在输出中。对托管访问架构中的对象运行 SHOW GRANTS ON <object_type> <object_name> 命令时,
grant_options
列将返回FALSE
。当运行 SHOW GRANTS ON SCHEMA <managed_access_schema> 命令时,
privilege
列包括拥有托管访问架构的角色的 OWNERSHIP 和 MANAGE GRANTS 权限。使用数据库角色和 SHOW FUTURE GRANTS TO DATABASE ROLE 语法,该命令将返回未授予共享的数据库角色的结果。
在数据共享使用者账户中,当授予共享数据库角色未来权限时,此命令不会返回任何行。但是,根据您的账户以及在此命令中对数据库角色的未来权限的支持时间,您可能会看到以下错误消息:
Invalid state of the shared database role. Please revoke the future grants to the shared database role.
作为使用者,要求提供商撤消共享数据库角色的未来授予。
该命令不需要正在运行的仓库即可执行。
若要对此命令的输出进行后处理,可以使用 RESULT_SCAN 函数,该函数会将输出视为可查询的表。
示例¶
列出已授予 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 | +---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
列出授予 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 | +---------------------------------+------------------+------------+------------+------------+--------------+------------+
列出已授予 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 | +---------------------------------+------+------------+-------+---------------+
列出已授予 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 | +---------------------------------+---------+------------+--------------+---------------+
列出已对 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 | +-------------------------------+-----------+----------+---------------------------+----------+-----------------------+--------------+
列出已授予名为 cost.budgets.my_budget!ADMIN
的实例角色的所有角色权限:
SHOW GRANTS TO SNOWFLAKE.CORE.BUDGET ROLE cost.budgets.my_budget!ADMIN;+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+ | 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) | +-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+