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

变体

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> 向角色授予对象的权限时,以下授权规则确定将哪个角色列为权限的授予者:

    1. 如果 活跃角色 是对象所有者(即对对象具有 OWNERSHIP 权限),则该角色是授予者。

    2. 如果活跃角色拥有已授权的授予选项的指定权限(即,授予活动角色权限,该活动角色拥有 GRANT <privileges> ...TO ROLE <role_name> WITH GRANT OPTION,其中 <role_name> 是活跃角色之一)。如果是,那么拥有已授权的授予选项的权限角色就是授予者角色。请注意,如果多个活跃角色满足此标准,则无法确定哪个角色成为授予者角色。

    3. 如果一个活跃角色拥有全局 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 列指定执行授予的授予者角色的类型:ROLEDATABASE_ROLEAPPLICATION_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 |
+---------------------------------+-----------+------------+------------+------------+--------------+--------------+----------------------+--------------+
Copy

列出授予 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

列出已授予 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

列出已授予 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

列出已对 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

列出已授予名为 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)                                                        |
+-------------------------------+-----------+------------+----------------------------------------------------------------------------------------------------------------------------------------+
语言: 中文