向用户定义函数授予权限¶
本主题列出了对象使用 UDF 或 UDTF 执行特定 SQL 操作所需的最低权限。
本主题内容:
向 UDFs 和 UDTFs 授予权限¶
若要对 UDF 或 UDTF 执行 SQL 操作,必须已为执行该操作的人员分配了已授予所需权限的角色。这些 SQL 操作包括:
创建函数,例如使用 CREATE FUNCTION 或 Snowpark API。
拥有该函数以删除、更改和管理对该函数的访问,无论是通过 SQL 还是 Snowpark API。
调用函数,无论是使用 SQL 还是 Snowpark API。
必须为角色分配与函数相关的对象的权限,包括数据库和架构,以及(如果需要)保存函数依赖关系的暂存区。
要向角色授予对象权限,请使用 GRANT 语句。
以下示例中的代码向 my_role
授予 my_java_udf
函数的 USAGE 权限。
GRANT USAGE ON FUNCTION my_java_udf(number, number) TO my_role;
创建 UDFs 或 UDTFs¶
创建、管理和执行 UDF 或 UDTF 需要一个至少具有以下权限的角色:
对象 |
权限 |
备注 |
---|---|---|
数据库 |
USAGE |
|
架构 |
USAGE、 CREATE FUNCTION |
|
暂存区 |
USAGE(外部暂存区)或 READ(内部暂存区) |
如果函数依赖于暂存区的文件或从暂存区中的文件读取,则为必填项。这将包括以下暂存文件:
|
拥有 UDFs 或 UDTFs¶
创建 UDF 或 UDTF 之后,函数所有者(即具有对函数拥有 OWNERSHIP 权限的角色的人员)必须至少具有以下权限:
对象 |
权限 |
备注 |
---|---|---|
数据库 |
USAGE |
|
架构 |
USAGE |
|
暂存区 |
USAGE(外部暂存区)或 READ(内部暂存区) |
如果函数依赖于暂存区的文件或从暂存区中的文件读取,则为必填项。这将包括以下暂存文件:
|
函数 |
OWNERSHIP |
调用 UDFs 或 UDTFs¶
调用 UDF 或 UDTF 的角色必须至少具有以下权限:
对象 |
权限 |
备注 |
---|---|---|
数据库 |
USAGE |
|
架构 |
USAGE |
包含此表中架构级对象的架构。如果对象包含在多个架构中,则每个架构都需要拥有 USAGE 权限。 |
暂存区 |
USAGE(外部暂存区)或 READ(内部暂存区) |
如果函数依赖于暂存区的文件或从暂存区中的文件读取,则为必填项。这将包括以下暂存文件:
|
函数 |
USAGE |
当函数所有者以外的任何人调用该函数时,这是必需的。函数的 USAGE 权限必须授予一个分配给调用该函数的人员的角色。 |