列出 Snowflake Marketplace 上应用程序的准则和要求¶
概述¶
这些准则定义了在 Snowflake Marketplace 上发布应用程序的强制执行标准,面向 Snowflake Native Apps 和连接应用程序。
原生应用程序¶
在 Snowflake Marketplace 上发布¶
当您的应用程序包准备好在 Snowflake Marketplace 上发布时,必须将其提交给 Snowflake 以进行审核和批准。
备注
除了在应用程序包的 Snowflake Marketplace 属性设置为 :doc:` 时运行的 </developer-guide/native-apps/security-overview>自动化安全扫描 DISTRIBUTION 之外,在 EXTERNAL 上发布应用程序时还需要完成审批流程。有关详细信息,请参阅 :ref:`label-native_app_listing_approval_flow。
在创建列表之前,请确认您了解强制执行的要求,并确保您的应用程序包符合每项要求。如果应用程序包不符合这些要求,您的提交可能会遭到拒绝。
如果您收到针对所提交应用程序包的拒绝通知,请执行建议的更改,然后重新提交应用程序包以供审批。
Snowflake Marketplace 上 Snowflake Native Apps 的标准¶
Snowflake Native App 功能审查流程可确保在 Snowflake Marketplace 上发布的应用程序的质量。为了清楚说明此流程评估的内容,以下标准适用于所有通过 Snowflake Marketplace 分发的 Snowflake Native Apps。
立即可供使用
应用程序功能必须在使用者账户中提供,并且应用程序在安装后必须可以正常运行。
独立
应用程序必须在 Snowflake 上提供产品体验,并通过 Snowflake 功能满足外部需求。
以数据为中心
应用程序应该基于以数据为中心的用例,此类用例应利用存储在 Snowflake 中的数据。
透明、简单且安全
应用程序必须使用 Snowflake 功能来披露应用程序的资源和访问要求,并简化使用者的配置流程。
强制执行的标准¶
Snowflake 使用以下要求来确定 Snowflake Native App 是否符合在 Snowflake Marketplace 上发布的标准。向 Snowflake Marketplace 提交附有应用程序包的列表时,会验证这些要求。
立即可供使用
应用程序不得是宣传功能的外壳应用程序。应用程序必须提供宣传的功能。
应用程序必须包含使用应用程序功能的清晰框架和说明。
应用程序不应崩溃、冻结或存在其他功能异常。
应用程序必须列出所有必需的凭据,提供商在提交应用程序以供测试时必须与 Snowflake 共享所需凭据。
如果应用程序无法立即使用,则必须为使用者记录预期的工作流程,以便使用者能够完整安装并配置该应用程序。
独立
应用程序不得是直通式。例如,它们不得将使用者重定向到外部服务以启用应用程序的核心功能。
安装后,必须可直接从 Snowflake 访问应用程序界面。
应用程序不能使用 Snowflake Marketplace 作为分发平台来交叉销售外部应用程序或服务。
访问外部服务并利用用户身份验证的应用程序应符合以下标准:
应用程序可能会要求使用者在其 Snowflake 账户中创建服务用户,仅用于访问外部服务。
可接受的身份验证方法有:编程访问令牌 (PAT)、OAuth 或密钥对。必须仅向服务用户授予应用程序运行所需的最低权限。
需要用户身份验证的应用程序永远不应要求使用者执行以下身份验证操作:
输入使用者的 Snowflake 用户名和密码。
创建私钥/公钥并共享私钥。
以数据为中心
应用程序必须通过以下方式之一来利用 Snowflake 数据:
共享来自应用程序提供商账户的数据。
使用来自 Snowflake Marketplace 的数据集。
访问消费者账户中的数据。
透明且简单
应用程序包的清单文件中必须列出应用程序所需的全部账户级别权限和引用。
Snowflake Native App 的所有资源需求必须在该应用程序的 marketplace.yml 文件中列出。应用程序必须在安装和设置过程中创建这些资源。
应用程序包清单文件中所列的所有账户级别权限和引用均必须通过|sf-web-interface| 或 Python Permission SDK 向使用者申请。
应用程序必须提供自述文件。不包含 Streamlit 或自定义用户界面的应用程序必须在自述文件中包含以下信息:
对应用程序功能的描述。
安装应用程序后,使用者为配置应用程序而必须执行的步骤。
应用程序使用的存储过程和用户定义的函数。
应用程序所需的权限。
向使用者展示如何使用应用程序的示例 SQL 命令。
所有必需的 SQL 命令都必须使用 Snowflake 传送并格式化为代码块。
如果应用程序提供示例数据,则必须包括有关如何使用示例数据的过程。
如果应用程序包包含 Streamlit 应用程序,但不包含 readme 文件,您必须配置默认 Streamlit 应用程序。
发布 Snowflake Native App 时的最佳实践¶
除了向 Snowflake Marketplace 提交应用程序包的要求外,Snowflake 还建议在发布 Snowflake Native App 时采用以下最佳实践:
确保将所有必要的文件上传到您提交的应用程序版本的指定暂存区,包括:
清单文件。
安装脚本。
README 文件。
应用程序包需要的任何外部存储过程或用户定义的函数。
应用程序包需要的任何 Streamlit 文件。
任意外部源代码,包括 Python、Java 等。
确保您正在开发的应用程序版本通过 自动安全扫描。
使用 CREATE APPLICATION 命令,在本地创建应用程序对象,测试应用程序包的新版本。
在提交列表以进行审批之前,请先审查列表的所有部分。
确保列表、readme 文件和 Streamlit 应用程序中没有拼写错误或其他文本错误。
针对试用列表的建议¶
在应用程序试用列表到期时,Snowflake 会自动暂停该应用程序,以避免使用者承担额外的计算成本。Snowflake 仅会暂停应用程序所拥有的、当前处于活动状态的对象。Snowflake 不会修改已暂停对象的状态。
在试用列表转换为完整列表或付费列表时,Snowflake 会尝试通过恢复任务、容器和计算池来重新启用应用程序。Snowflake 仅恢复将
auto_resume属性设置为 false 的服务和计算池。
针对具有容器的应用程序的建议¶
计算池应与 Snowpark Container Services 作业一起设置为自动暂停,以避免计算节点处于空闲状态。
为了在升级期间获得更高的可用性并减少冷启动延迟,Snowflake 建议设置大于 1 的
MIN_NODES参数。如果在同一个应用程序中需要跨不同服务的连接,请使用服务的 DNS 名称,而非配置外部访问集成。
针对事件共享的建议¶
提供商应该配置应用程序,使其发出符合 支持的事件定义 的日志消息和跟踪事件,以确保使用者了解收集哪些信息。
强制性事件定义应该仅限于应用程序所需的日志消息和跟踪事件。应避免过多或不必要的强制性事件定义。
在版本升级中添加新的强制性事件定义时,必须要求使用者重新启用应用程序的事件定义。
使用 Python 权限 SDK 以允许使用者共享可选事件。
连接应用程序¶
Snowflake 允许 SaaS 提供商列出其在 Snowflake Marketplace 上的连接应用程序。连接应用程序是安全连接到 Snowflake 使用者账户的集成 SaaS 应用程序,以在其工作流程中读取或引入指定数据。连接应用程序让使用者能够直接通过外部 UI 与其 Snowflake 数据进行交互。
在 Snowflake Marketplace 上发布连接应用程序的要求¶
合作伙伴网络层: 提供商必须是 Snowflake Partner Network (SPN) 的成员并持有 Select、Premier 或 Elite 层的名称。
CSID 要求: 每个连接应用程序都必须使用连接字符串标识符 (CSID)以启用完整的遥测和使用情况跟踪。鼓励提供商将每个应用程序整合到一个 CSID;但是,必要时也可以支持多个 CSIDs。CSID 最初必须通过 SPN 提交,随后将在您的列表提交中需要,并在审核流程中进行验证。
安全透明度: 作为列表流程的一部分,提供商必须填写一份简短的 安全和数据处理证明。
列表类型: 所有连接应用程序列表都必须利用公开的付费列表,并使用标准优惠或专属优惠履行交易。
Snowflake Marketplace 上连接应用程序的持续标准¶
生态系统贡献: 连接应用程序应为 Snowflake Data Cloud 生态系统 做出有意义的贡献,帮助推动数据协作、使用或工作负载采用。
活动的合作伙伴关系: 提供商必须是 Snowflake 生态系统的 活跃贡献者。要保持名列 Marketplace 之上,提供商必须保持其处于合作伙伴网络中的“Select”或更高层级,并且其应用程序必须继续使生态系统获益。如果提供商不再为生态系统做出贡献(由 Snowflake 自行决定)或不再符合合作伙伴资格标准,则 Snowflake 可能会移除列表。