向用户定义函数授予权限

本主题列出了对象使用 UDF 或 UDTF 执行特定 SQL 操作所需的最低权限。

本主题内容:

向 UDFs 和 UDTFs 授予权限

若要对 UDF 或 UDTF 执行 SQL 操作,必须已为执行该操作的人员分配了已授予所需权限的角色。这些 SQL 操作包括:

  • 创建函数,例如使用 CREATE FUNCTIONSnowpark 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;
Copy

创建 UDFs 或 UDTFs

创建、管理和执行 UDF 或 UDTF 需要一个至少具有以下权限的角色:

对象

权限

备注

数据库

USAGE

架构

USAGE、 CREATE FUNCTION

暂存区

USAGE(外部暂存区)或 READ(内部暂存区)

如果函数依赖于暂存区的文件或从暂存区中的文件读取,则为必填项。这将包括以下暂存文件:

  • 包含 UDF 处理程序代码的文件。有关暂存区处理程序和内联处理程序的更多信息,请参阅 将处理程序代码保持内联或保留在暂存区

  • 处理程序代码需要作为依赖项的库,包括 JAR 文件、Python 模块、.zip 文件等。有关更多信息,请参阅 为代码提供依赖项

  • 包含由处理程序中的代码读取的内容的文件。这包括由处理程序处理的非结构化数据。

拥有 UDFs 或 UDTFs

创建 UDF 或 UDTF 之后,函数所有者(即具有对函数拥有 OWNERSHIP 权限的角色的人员)必须至少具有以下权限:

对象

权限

备注

数据库

USAGE

架构

USAGE

暂存区

USAGE(外部暂存区)或 READ(内部暂存区)

如果函数依赖于暂存区的文件或从暂存区中的文件读取,则为必填项。这将包括以下暂存文件:

  • 包含 UDF 处理程序代码的文件。有关暂存区处理程序和内联处理程序的更多信息,请参阅 将处理程序代码保持内联或保留在暂存区

  • 处理程序代码需要作为依赖项的库,包括 JAR 文件、Python 模块、.zip 文件等。有关更多信息,请参阅 为代码提供依赖项

  • 包含由处理程序中的代码读取的内容的文件。这包括由处理程序处理的非结构化数据。

函数

OWNERSHIP

调用 UDFs 或 UDTFs

调用 UDF 或 UDTF 的角色必须至少具有以下权限:

对象

权限

备注

数据库

USAGE

架构

USAGE

包含此表中架构级对象的架构。如果对象包含在多个架构中,则每个架构都需要拥有 USAGE 权限。

暂存区

USAGE(外部暂存区)或 READ(内部暂存区)

如果函数依赖于暂存区的文件或从暂存区中的文件读取,则为必填项。这将包括以下暂存文件:

  • 包含 UDF 处理程序代码的文件。有关暂存区处理程序和内联处理程序的更多信息,请参阅 将处理程序代码保持内联或保留在暂存区

  • 处理程序代码需要作为依赖项的库,包括 JAR 文件、Python 模块、.zip 文件等。有关更多信息,请参阅 为代码提供依赖项

  • 包含由处理程序中的代码读取的内容的文件。这包括由处理程序处理的非结构化数据。

函数

USAGE

当函数所有者以外的任何人调用该函数时,这是必需的。函数的 USAGE 权限必须授予一个分配给调用该函数的人员的角色。

语言: 中文