Snowflake Native App 的安全要求和最佳实践

本主题介绍提供商在开发 Snowflake Native App 时必须遵循的安全要求和最佳实践。所有符合 自动安全审查 中描述的条件的应用程序必须符合以下部分中概述的安全要求:

备注

随着 Snowflake 继续监控新的潜在风险,安全要求可能会发生变化。

应用程序代码的安全要求

应用程序包中包含的应用程序代码必须符合以下安全要求:

  1. 除 Snowflake 提供的库外,您的应用程序不得从应用程序包之外加载或执行任何代码。所有应用程序代码(包括所有库依赖项和设置代码)都必须包含在应用程序包中定义的应用程序版本中。

  2. 所有应用程序代码都必须是非混淆的,这意味着代码必须是人类可读的。此要求包括精简的 JavaScript 代码。

    备注

    如果应用程序需要使用精简的 JavaScript 代码,该应用程序必须包含相应的源映射文件,该文件可用于恢复未精简的代码。

  3. 所有具有严重或重大通用漏洞披露 (CVE) 的依赖项或库必须更新为安全版本(如果有)。

应用程序功能的安全要求

以下安全要求适用于应用程序的功能:

  1. 所有应用程序必须向客户提供以下信息作为列表的一部分:

    1. 所有应用程序的功能和特性。

    2. 应用程序连接到的所有互联网端点和 URLs。

    3. 应用程序中的所有外部函数。

    4. 应用程序记录、收集或存储的所有使用者数据。

      1. 应用程序应禁止所有非必需的 Cookie。

      2. 应用程序应向使用者传达所有必需的 Cookie

  2. 应用程序的功能应与应用程序列表中所宣传的一样。

  3. 所有应用程序安装和设置说明必须包含在应用程序列表中。

  4. 应用程序不得存储或要求任何纯文本客户密钥。

  5. 应用程序和互联网之间的任何通信都应通过具有有效 TLS 证书的 HTTPS 连接进行。

  6. 应用程序不得具有任何可能对 Snowflake 及其客户或第三方造成危害的功能。危害包括但不限于:

    1. 数据泄露和/或丢失;

    2. 限制使用者对数据的访问权限,除非明确设计为应用程序功能的一部分,例如数据访问策略的数据掩码。

    3. 资源消耗过多。

    4. 任意代码注入/执行。

  7. 应用程序的所有连接,包括基于 Web 的用户界面和 APIs,必须首先使用 Snowflake 提供的身份验证方法进行身份验证。Snowflake 身份验证成功后,必须向用户呈现任何应用程序特定的身份验证。

  8. 应用程序不应创建任何公共端点,这些端点允许在未首先通过 Snowflake 成功身份验证的情况下连接到应用程序。

应用程序权限的安全要求

以下安全要求适用于应用程序设置的权限:

  1. 所有应用程序都必须在清单文件中提供以下信息:

    1. 应用程序对所有对象所需的所有权限。

    2. 所有 API 集成。

  2. 应用程序应该只要求应用程序运行所需的最低权限集。

开发和发布应用程序包的最佳实践

为了简化 Snowflake Native App 的开发和发布流程,Snowflake 建议创建两个独立的应用程序包:

  • 开发应用程序包

    开发应用程序包用于快速迭代和测试目的。它应该将其 DISTRIBUTION 属性设置为 INTERNAL。这可确保应用程序包保持在内部,不会分发给外部使用者或分发给 Snowflake 进行扫描和批准。

    通过将此包与生产包分开,开发人员可以快速进行更改并测试新功能,而无需触发每次迭代的安全审查过程。

  • 生产应用程序包

    生产应用程序包旨在发布应用程序包并将其分发给 Snowflake 进行扫描和批准,以及分发给外部使用者。生产应用程序包应将其 DISTRIBUTION 属性设置为 EXTERNAL

    只有通过了提供商安全审查的版本才应添加到此包,确保应用程序在提供给使用者之前符合所需的安全标准。

通过遵循将开发和生产包分开的最佳实践,开发人员可以保持高效的开发生命周期,同时确保仅向外部使用者发布和分发安全且经过批准的应用程序版本。

语言: 中文