保护提供商的知识产权¶
本主题介绍 Snowflake Native App Framework 如何通过编辑或删除有关 Snowflake Native App 共享的对象的信息来保护提供商数据。
关于 Snowflake Native App Framework 中的知识产权保护¶
当使用者安装 Snowflake Native App 时,不允许他们查看应用程序对象中的对象,除非提供商使用应用程序角色授予对象的权限。
通常,在使用者使用架构、视图查询对象元数据,或者使用 Snowsight 查看这些查询的 Query Profile 或 Query History 时,Snowflake Native App Framework 会编辑有关应用程序对象内的对象的信息。
从查询配置文件中隐去的信息¶
在以下上下文中,Snowflake Native App Framework 编辑 查询配置文件 中的信息:
在安装或升级应用程序时运行的查询。
源自应用程序所拥有的存储过程的查询。
包含应用程序所拥有的非安全视图或函数的查询。
对于以上任何类型的查询,Snowsight 都会将查询配置文件数据合并到单个空节点中,而不是显示完整的查询配置文件树。
从查询历史记录中隐去的信息¶
对于与 Snowflake Native App 相关的查询,query_text
和 error_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 |
✔ |