保护提供商的知识产权

本主题介绍 Snowflake Native App Framework 如何通过编辑或删除有关 Snowflake Native App 共享的对象的信息来保护提供商数据。

关于 Snowflake Native App Framework 中的知识产权保护

当使用者安装 Snowflake Native App 时,不允许他们查看应用程序对象中的对象,除非提供商使用应用程序角色授予对象的权限。

通常,在使用者使用架构、视图查询对象元数据,或者使用 Snowsight 查看这些查询的 Query ProfileQuery History 时,Snowflake Native App Framework 会编辑有关应用程序对象内的对象的信息。

从查询配置文件中隐去的信息

在以下上下文中,Snowflake Native App Framework 编辑 查询配置文件 中的信息:

  • 在安装或升级应用程序时运行的查询。

  • 源自应用程序所拥有的存储过程的查询。

  • 包含应用程序所拥有的非安全视图或函数的查询。

对于以上任何类型的查询,Snowsight 都会将查询配置文件数据合并到单个空节点中,而不是显示完整的查询配置文件树。

从查询历史记录中隐去的信息

对于与 Snowflake Native App 相关的查询,query_texterror_message 字段在下列情况下通过 查询历史记录 编辑:

  • 安装或升级应用程序时运行的查询。

  • 源自应用程序拥有的存储过程的子作业的查询。

在每种情况下,Snowsight 中查询历史记录的单元格显示空白。

从 SQL 命令和视图中隐去的信息

当使用者使用 SHOW 或 DESCRIBE 命令查看有关应用程序对象或应用程序拥有的对象的信息时,有关实施细节的信息将被隐去。例如,会从这些命令的输出中隐去函数定义和函数正文。

在以下上下文中,会从 ACCESS_HISTORY 视图中隐去有关实施细节的信息:

  • 安装或升级应用程序时生成的查询。

  • 由应用程序拥有的存储过程和用户定义的函数生成的查询。

此外,对于应用程序拥有的视图,将会隐去有关基表的信息。

授予动态表的 MONITOR 或 OPERATE 权限时的注意事项

提供商在向应用程序角色授予动态表的 MONITOR 或 OPERATE 权限时应当小心。这些权限允许使用者查看动态表的元数据,这可能会暴露应用程序的实现细节。有关使用者可以执行哪些操作的更多信息,请参阅 查看动态表元数据的权限

被阻止的上下文函数

要保护与应用程序对象中的对象相关的信息,Snowflake Native App Framework 会阻止以下上下文函数:

上下文函数

在共享内容时被阻止(返回 null)

在 Snowflake Native App 拥有的安装脚本和存储过程以及 UDFs 中被阻止(引发异常)

CURRENT_ROLE

CURRENT_ROLE_TYPE

CURRENT_USER

CURRENT_SESSION

IS_ROLE_IN_SESSION

CURRENT_IP_ADDRESS

CURRENT_AVAILABLE_ROLES

CURRENT_SECONDARY_ROLES

ALL_USER_NAMES

GET_USERS_FOR_COLLABORATION

CURRENT_WAREHOUSE

SYSTEM$ALLOWLIST

保护共享内容

为保护提供商数据内容的隐私和完整性,Snowflake Native App Framework 会实施以下限制:

  • 对于应用程序对象,共享对象是只读的,并且已安装 Snowflake Native App。

  • 共享对象不直接向使用者公开。在 Snowflake Native App 安装或升级过程中,对象仅通过在安装脚本运行期间安装的视图中公开。

  • 只有提供商可以更新共享内容。

  • 只有以下对象可以与应用程序对象或已安装的 Snowflake Native App 共享。这些对象必须具备某些权限:

    • 架构:只能向应用程序包的共享内容授予 USAGE 权限。

    • 表:只能向应用程序包的共享内容授予 SELECT 权限。不能共享具有定义的策略(行访问、掩码、基于标签等)的表。当对象向使用者公开时,可以在对象上定义策略。

    • 视图:只能向应用程序包的共享内容授予 SELECT 权限。不能共享具有定义的策略(包括行访问权限、掩码、基于标签等)的视图。

备注

视图或组成它们的任何视图均不能包含 JavaScript、Java、Python 或 Scala 函数。

有关更多信息,请参阅 允许使用者访问应用程序中的共享对象

语言: 中文