GRANT CALLER

向角色授予 调用方授权。如果角色拥有的可执行文件以受限调用方权限运行,则它只能以调用方授权指定的调用方权限运行。

GRANT CALLER 命令的变体如下:

  • GRANT CALLER – 授予特定对象的调用方授权。语句创建的每个调用方授权都允许可执行文件以指定的权限运行。

  • GRANT ALL CALLER PRIVILEGES – 授予特定对象的调用方授权。语句创建的调用方授权允许可执行文件以调用方的所有权限运行。

  • GRANT INHERITED CALLER – 当同一类型的所有当前和未来对象共享共同架构、数据库或账户时,授予对上述内容的调用方授权。语句创建的每个调用方授权都允许可执行文件以指定的权限运行。

  • GRANT ALL INHERITED CALLER PRIVILEGES – 当同一类型的所有当前和未来对象共享共同架构、数据库或账户时,授予对上述内容的调用方授权。语句创建的调用方授权允许可执行文件以调用方的所有权限运行。

语法

GRANT CALLER <object_privilege> [ , <object_privilege> ... ]
  ON <object_type> <object_name>
  TO { ROLE | DATABASE ROLE } <grantee_name>

GRANT ALL CALLER PRIVILEGES
  ON <object_type> <object_name>
  TO { ROLE | DATABASE ROLE } <grantee_name>

GRANT INHERITED CALLER <object_privilege> [ , <object_privilege> ... ]
  ON ALL <object_type_plural>
  IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
  TO { ROLE | DATABASE ROLE } <grantee_name>

GRANT ALL INHERITED CALLER PRIVILEGES
  ON ALL <object_type_plural>
  IN { ACCOUNT | DATABASE <db_name> | SCHEMA <schema_name> | APPLICATION <app_name> | APPLICATION PACKAGE <app_pkg_name> }
  TO { ROLE | DATABASE ROLE } <grantee_name>
Copy

参数

object_privilege [ , object_privilege ... ]

可执行文件可以运行的对象权限。有关特定对象类型的权限列表,请参阅 访问控制权限

使用以逗号分隔的列表指定多个对象权限。

ON object_type object_name

在访问指定对象 (object_name) 时,允许可执行文件以指定的 object_privilege 运行。使用 object_type 的单数形式,例如 TABLEWAREHOUSE

ON ALL object_type_plural IN ACCOUNT . ON ALL object_type_pluarl IN DATABASE db_name . ON ALL object_type_plural IN SCHEMA schema_name . ON ALL object_type_plural IN APPLICATION app_name . ON ALL object_type_plural IN APPLICATION PACKAGE app_pkg_name

在访问指定类型的对象时,允许可执行文件以对象级权限运行。使用对象类型的复数形式,例如 TABLESWAREHOUSES

您可以使用 GRANT 语句控制对当前账户中所有对象的访问权限,或者仅控制对指定数据库、架构、应用程序或应用程序包中对象的访问权限。

TO ROLE grantee_name . TO DATABASE ROLE grantee_name

要使用调用方授权保护的可执行文件的所有者。

如果您指定数据库角色,则权限仅限于与数据库角色位于同一数据库中的对象。

访问控制要求

用于执行此操作的 角色 必须至少具有以下 权限

权限

对象

备注

MANAGE CALLER GRANTS

账户

账户级 MANAGE CALLER GRANTS 权限仅涉及调用方授权。它不允许您向角色授予权限。

任何权限

所有指定的对象

对于调用方授权中指定的对象,您至少需要拥有一个权限。例如,授予对表的调用方授权要求您对该表至少拥有一个权限。

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

示例

访问 v1 视图的 owner_role 所拥有的可执行文件可以使用对视图的 SELECT 权限运行:

GRANT CALLER SELECT ON VIEW v1 TO owner_role;
Copy

访问 db.sch 架构中任何表的 owner_role 所拥有的可执行文件可以使用调用方的 SELECT 和 INSERT 权限运行。

GRANT INHERITED CALLER SELECT, INSERT ON ALL TABLES IN SCHEMA db.sch TO ROLE owner_role;
Copy

访问当前账户中架构的 owner_role 所拥有的可执行文件可以使用对架构的所有调用方权限运行。

GRANT ALL INHERITED CALLER PRIVILEGES ON ALL SCHEMAS IN ACCOUNT TO ROLE owner_role;
Copy

访问 db.sch1.t1 表的 db.r 数据库角色所拥有的可执行文件可以使用对表的 SELECT 权限运行。

GRANT CALLER SELECT ON TABLE db.sch1.t1 TO DATABASE ROLE db.r;
Copy

访问 my_db 数据库的 owner_role 所拥有的可执行文件可以使用对该数据库的所有调用方权限运行。

GRANT ALL CALLER PRIVILEGES ON DATABASE my_db TO ROLE owner_role;
Copy
语言: 中文