Snowflake Native App 的安全要求和最佳实践¶
本主题介绍提供商在开发 Snowflake Native App 时必须遵循的安全要求和最佳实践。所有符合 自动安全审查 中描述的条件的应用程序必须符合以下部分中概述的安全要求:
备注
随着 Snowflake 继续监控新的潜在风险,安全要求可能会发生变化。
应用程序代码的安全要求¶
应用程序包中包含的应用程序代码必须符合以下安全要求:
除 Snowflake 提供的库外,您的应用程序不得从应用程序包之外加载或执行任何代码。所有应用程序代码(包括所有库依赖项和设置代码)都必须包含在应用程序包中定义的应用程序版本中。
所有应用程序代码都必须是非混淆的,这意味着代码必须是人类可读的。此要求包括精简的 JavaScript 代码。
备注
如果应用程序需要使用精简的 JavaScript 代码,该应用程序必须包含相应的源映射文件,该文件可用于恢复未精简的代码。
所有具有严重或重大通用漏洞披露 (CVE) 的依赖项或库必须更新为安全版本(如果有)。
应用程序功能的安全要求¶
以下安全要求适用于应用程序的功能:
所有应用程序必须向客户提供以下信息作为列表的一部分:
所有应用程序的功能和特性。
应用程序连接到的所有互联网端点和 URLs。
应用程序中的所有外部函数。
应用程序记录、收集或存储的所有使用者数据。
应用程序应禁止所有非必需的 Cookie。
应用程序应向使用者传达所有必需的 Cookie
应用程序的功能应与应用程序列表中所宣传的一样。
所有应用程序安装和设置说明必须包含在应用程序列表中。
应用程序不得存储或要求任何纯文本客户密钥。
应用程序和互联网之间的任何通信都应通过具有有效 TLS 证书的 HTTPS 连接进行。
应用程序不得具有任何可能对 Snowflake 及其客户或第三方造成危害的功能。危害包括但不限于:
数据泄露和/或丢失;
限制使用者对数据的访问权限,除非明确设计为应用程序功能的一部分,例如数据访问策略的数据掩码。
资源消耗过多。
任意代码注入/执行。
应用程序的所有连接,包括基于 Web 的用户界面和 APIs,必须首先使用 Snowflake 提供的身份验证方法进行身份验证。Snowflake 身份验证成功后,必须向用户呈现任何应用程序特定的身份验证。
应用程序不应创建任何公共端点,这些端点允许在未首先通过 Snowflake 成功身份验证的情况下连接到应用程序。
应用程序权限的安全要求¶
以下安全要求适用于应用程序设置的权限:
所有应用程序都必须在清单文件中提供以下信息:
应用程序对所有对象所需的所有权限。
所有 API 集成。
应用程序应该只要求应用程序运行所需的最低权限集。
建议的安全最佳实践¶
除了自动安全扫描所施加的安全要求之外,Snowflake 还建议在开放 Snowflake Native App 时遵循以下最佳实践。遵循这些最佳实践有助于降低应用程序在安全审查期间被阻止的可能性。
遵循安全的软件开发生命周期 (SDLC) 实践。
在开发生命周期期间审查应用程序代码是否存在漏洞,并在创建应用程序版本之前修复这些漏洞。
审查第三方库是否存在漏洞并将第三方库更新为最新的安全版本。
每季度至少审查并更新一次应用程序中的所有第三方库。
遵循如下所述的 Snowflake 安全最佳实践:
适用于带容器的应用程序的建议的安全最佳实践¶
除了 建议的安全最佳实践 中概述的核心 Snowflake Native App 的安全最佳实践外,以下安全最佳实践也适用于带容器的应用程序:
限制外部依赖项和库的使用,以最小化应用的攻击面,降低供应链漏洞的风险。
遵循容器镜像硬化要求,例如使用最小基础镜像、删除不必要的包以及安全地配置运行时环境。
对所有容器间和外部通信使用安全通信协议和加密。
生成容器活动和数据访问模式的全面日志记录和审计。
定期更新和修补容器镜像,以解决已知的漏洞和安全问题。
仅实现所需的权限,以最小化容器化应用程序的攻击面。
使用适当的加密和访问控制,安全地管理密钥和敏感数据。
在提交应用程序以供审查之前进行彻底的安全测试和漏洞评估。
对安全事件做出快速响应,并在事件响应期间与 Snowflake 协作。
提供清晰准确的应用程序功能、依赖项和安全控制的文档。
教育并指导使用者安全使用和配置其应用程序。
开发和发布应用程序包的最佳实践¶
为了简化 Snowflake Native App 的开发和发布流程,Snowflake 建议创建两个独立的应用程序包:
开发应用程序包
开发应用程序包用于快速迭代和测试目的。它应该将其 DISTRIBUTION 属性设置为
INTERNAL
。这可确保应用程序包保持在内部,不会分发给外部使用者或分发给 Snowflake 进行扫描和批准。通过将此包与生产包分开,开发人员可以快速进行更改并测试新功能,而无需触发每次迭代的安全审查过程。
生产应用程序包
生产应用程序包旨在发布应用程序包并将其分发给 Snowflake 进行扫描和批准,以及分发给外部使用者。生产应用程序包应将其 DISTRIBUTION 属性设置为
EXTERNAL
。只有通过了提供商安全审查的版本才应添加到此包,确保应用程序在提供给使用者之前符合所需的安全标准。
通过遵循将开发和生产包分开的最佳实践,开发人员可以保持高效的开发生命周期,同时确保仅向外部使用者发布和分发安全且经过批准的应用程序版本。