授予 Snowflake Native App 的访问权限

本主题介绍使用者如何允许 Snowflake Native App 在其账户中创建和访问对象。这包括授予应用程序请求的权限或使用引用来允许访问现有对象。

关于应用程序请求的权限和引用

在简单的 Snowflake Native App 中,应用程序所需的所有对象都是在安装过程中运行安装脚本时在 APPLICATION 对象内部创建的。应用程序所需的所有对象都是在已安装的应用程序中创建和访问的。使用者无需在其账户中执行任何操作。

但是,某些应用程序可能会要求使用者在其账户中执行以下类型的操作:

  • 创建数据库或仓库。

  • 执行任务。

  • 访问现有对象,例如表。

Snowflake Native App 可以请求进行两种类型的访问:

  • 允许应用程序执行某些账户级操作的权限。应用程序可以请求以下全局权限:

    • EXECUTE TASK

    • EXECUTE MANAGED TASK

    • CREATE WAREHOUSE

    • MANAGE WAREHOUSES

    • CREATE DATABASE

    某些应用程序可能还会请求 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 权限。有关详细信息,请参阅 授予 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 权限

  • 允许应用程序访问对象的引用,这些对象已在使用者账户中,并且位于 APPLICATION 对象之外。提供商在 manifest.yml 文件中定义应用程序所需的引用。

    安装应用程序后,使用者可以通过创建 引用 将对象与应用程序关联,以授予对象访问权限。

    应用程序可以请求访问以下类型的对象及其相应的权限:

    对象类型

    允许的权限

    TABLE

    SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES

    VIEW

    SELECT、REFERENCES

    EXTERNAL TABLE

    SELECT、REFERENCES

    FUNCTION

    USAGE

    PROCEDURE

    USAGE

    WAREHOUSE

    MODIFY、MONITOR、USAGE、OPERATE

    API INTEGRATION

    USAGE

使用者可以使用 Snowsight 审批这些请求,或者按以下部分所述,运行 SQL 命令来审批这些请求。

备注

如果您不授予所请求的权限或将所请求对象的引用关联到应用程序,则应用程序的某些部分可能无法正常运行。

使用 Snowsight 管理访问请求

如果提供商在 Snowflake Native App 中实施用户界面,使用者可以使用 Snowsight 执行以下操作。

  • 查看和授予全局权限。

  • 授予对使用者账户中现有对象的访问权限。

授予全局权限

要在安装应用程序后授予权限或创建引用,请执行以下操作:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Data Products » Apps

  3. 选择应用程序。

  4. 选择工具栏中的 Security 图标。

  5. 选择 Privileges 选项卡。

    应用程序请求的账户级权限显示在 Account level privileges 下面

  6. Account-level privileges 部分中,选择 Review,然后切换您要授予的每项权限的滑块。

  7. 选择 Save

授权访问特定对象

如果提供商为 Snowflake Native App 实施用户界面,使用者可以使用 Snowsight 授予对其账户中对象的访问权限。

要授予对特定对象的访问权限,请执行以下操作:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Data Products » Apps

  3. 选择应用程序。

  4. 选择工具栏中的 Security 图标。

  5. 选择 Privileges 选项卡。

  6. Privileges to objects 部分,选择要授予其访问权限的对象旁边的 Add

  7. 选择 Select Data,然后选择要授予其访问权限的数据产品。

  8. 选择 Done

撤消对象的权限和访问权限

要撤消对象的权限或移除对象的访问权限,请执行以下操作:

  1. 登录 Snowsight

  2. 在导航菜单中,选择 Data Products » Apps

  3. 选择应用程序。

  4. 选择工具栏中的 Security 图标。

  5. 选择 Privileges 选项卡。

    • 要撤消全局权限,请选择 Edit 按钮,然后切换您要撤消的权限的滑块。

    • 要撤消对特定对象的访问权限,请选择 Delete 按钮,然后选择 Revoke Privilege

备注

如果撤消权限或移除对象的访问权限,可能会导致应用程序变得不稳定或停止运行。

使用 SQL 命令管理应用程序的权限

如果应用程序开发者没有实施用于授予权限的界面,您必须使用 SQL 命令管理应用程序的访问请求。

查看应用程序请求的权限

如果提供商指定应用程序所需的权限,权限请求将包含在要安装的应用程序内。您可以在安装应用程序后查看这些权限。

要查看应用程序所需的权限,请按如下示例所示运行 SHOW PRIVILEGES 命令:

SHOW PRIVILEGES IN APPLICATION hello_snowflake_app;
Copy

向 Snowflake Native App 授予权限

使用者确定应用程序请求的权限后,可以向应用程序授予这些权限。

例如,要向应用程序授予 EXECUTE TASK 权限,请按如下示例所示运行 GRANT PRIVILEGE 命令:

GRANT EXECUTE TASK ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

向 Snowflake Native App 授予 MANAGE WAREHOUSES 权限

MANAGE WAREHOUSES 权限 允许应用程序在使用者账户内创建、修改和使用仓库。要向应用程序授予 MANAGE WAREHOUSES 权限,请按如下示例所示使用 GRANT

GRANT MANAGE WAREHOUSES ON ACCOUNT TO APPLICATION hello_snowflake_app;
Copy

授予 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 权限

某些应用程序可能会请求使用者授予账户中 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 权限。要授予此权限,只能使用 SQL 命令,不能使用 Snowsight 授予。如果应用程序请求此权限,则提供商应将此请求传达给使用者,例如,在应用程序的 README 文件中。

要授予 SNOWFLAKE 数据库的 IMPORT 权限,请运行以下命令:

GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE TO APPLICATION hello_snowflake_app;
Copy

备注

IMPORTED PRIVILEGES 权限允许应用程序访问与关联到使用者账户的使用情况和成本有关的信息。在授予此权限之前,使用者应确保希望与应用程序共享此信息。

手动授予对象的访问权限

当提供商在 manifest.yml 文件中定义对象引用时,此引用的定义将作为已安装应用程序的一部分包含在内。使用者可以在其账户中创建对象的引用,以授权应用程序访问该对象。如果提供商未创建用于允许访问使用者账户中的对象的用户界面,则使用者可以手动授予访问权限。

如果使用者具有所请求的对象权限,则可以创建对象引用,以与应用相关联。例如,如果对象(例如表)需要 SELECT 和 INSERT 权限,则使用者必须使用具有表的 SELECT 和 INSERT 权限的角色来创建引用。要查看对象类型以及需要授予每个对象的特定权限,请参阅 查看应用程序请求的引用

备注

引用不会授予对象的任何权限。如果用于创建引用的角色失去了对象的权限,则引用将不再有效。使用者必须执行以下操作之一:

  • 为创建引用的角色恢复所需权限。

  • 使用所需对象权限的角色重新创建引用。

查看应用程序所请求的引用

使用者可以通过运行 SHOW REFERENCES 命令来查看应用程序所请求的引用,如以下示例所示:

SHOW REFERENCES IN APPLICATION hello_snowflake_app;
Copy

此命令显示在应用程序中定义的所有引用的列表。它还显示使用者角色要创建引用所必须具有的对象权限。

创建引用并将引用关联到应用程序

在查看应用程请求的 引用 时,使用者可以通过运行 SYSTEM$REFERENCE 系统函数来创建引用,如以下示例所示:

SELECT SYSTEM$REFERENCE('table', 'db1.schema1.table1', 'persistent', 'select', 'insert');
Copy

此命令会创建引用并返回对象的标识符。标识符类似于以下示例:

ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D

使用者将此标识符传递给回调存储过程,以将引用关联到应用程序。

备注

使用者必须为应用程序请求的每个引用运行此命令。

要将引用关联到应用程序,您必须将通过调用 SYSTEM$REFERENCE 系统函数返回的标识符传递给回调存储过程。回调过程是提供商在 Snowflake Native App 中创建的存储过程,用于将引用关联至应用程序。

要使用回调过程,请运行以下命令:

CALL app.config.register_single_reference(
  'consumer_table', 'ADD', 'ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D');
Copy

在此示例中,register_single_reference() 存储过程将使用标识符 ENT_REF_TABLE_16617302895522_2CDD20F5C047A5B87B2CE36F6837715786AF9F2D 的引用关联到应用程序。

备注

提供商可以在应用程序中包含不同的回调过程。应在应用程序的 README 文件中加以指定。

只需一步即可创建引用并将其关联至应用程序

查看应用程序请求的 引用 之后,使用者可以创建引用并将其关联到应用程序,方法是将 SYSTEM$REFERENCE 系统函数作为实参,传递到回调存储过程。

以下示例显示了将 SYSTEM$REFERENCE 系统函数作为实参传递到回调存储过程所用的语法:

CALL app.config.register_single_reference(
 'consumer_table', 'ADD', SYSTEM$REFERENCE('table', 'db1.schema1.table1',
 'PERSISTENT', 'SELECT', 'INSERT'));
Copy

此示例创建引用,并将标识符传递给回调函数,从而将引用关联到应用程序。

语言: 中文