运行自动安全扫描¶
本主题介绍了如何使用 Native Apps Framework 提供的自动安全审查。本主题还提供了创建安全应用程序包和应用程序的准则和最佳实践。
备注
在某些情况下,当应用程序未通过自动安全审查时,可能会对应用程序代码进行额外的人工审查,以确认失败状态或替换该状态以批准该应用程序。
此人工审查可能需要长达五个工作日。
关于 Native Apps Framework 安全要求¶
所有符合 关于自动安全扫描 中描述的条件的 Native Apps Framework 应用程序必须符合以下部分中概述的安全要求:
应用程序代码的安全要求¶
应用程序包中包含的应用程序代码必须符合以下安全要求:
除 Snowflake 提供的库外,您的应用程序不得从应用程序包之外的任何地方加载或执行任何代码。所有应用程序代码(包括所有库依赖项和设置代码)都必须包含在应用程序包中定义的应用程序版本中。
所有应用程序代码都必须是非混淆的,这意味着代码必须是可读的。此要求包括精简的 JavaScript 代码。
备注
如果应用程序需要使用精简的 JavaScript 代码,该应用程序必须包含相应的源映射文件,该文件可用于恢复未精简的代码。
所有具有严重或重大通用漏洞披露 (CVE) 的依赖项或库必须更新为安全版本(如果有)。
应用程序功能的安全要求¶
以下安全要求适用于应用程序的功能:
所有应用程序必须向客户提供以下信息作为列表的一部分:
所有应用程序的功能和特性。
应用程序连接到的所有互联网端点和 URLs。
应用程序中的所有外部函数。
应用程序记录、收集或存储的所有使用者数据。
应用程序的功能应与应用程序列表中所宣传的一样。
所有应用程序安装和设置说明必须包含在应用程序列表中。
应用程序不得以纯文本形式存储或要求提供任何客户密钥。
应用程序和互联网之间的任何通信都应通过具有有效 TLS 证书的 HTTPS 连接进行。
应用程序不得具有任何可能对Snowflake 及其客户或第三方造成危害的功能。危害包括但不限于:
数据泄露和/或丢失;
限制使用者对数据的访问权限,除非明确设计为应用程序功能的一部分,例如数据访问策略的数据掩码。
资源消耗过多。
任意代码注入/执行。
应用程序权限的安全要求¶
以下安全要求适用于应用程序设置的权限:
所有应用程序都必须在清单文件中提供以下信息:
应用程序对所有对象所需的所有权限。
所有 API 集成。
应用程序应该只要求应用程序运行所需的最低权限集。
建议的安全最佳实践¶
除了自动安全扫描所施加的安全要求之外,Snowflake 还建议在使用 Native Apps Framework 时遵循以下最佳实践。遵循这些最佳实践有助于降低应用程序在安全审查期间被阻止的可能性。
遵循安全的软件开发生命周期 (SDLC) 实践。
在开发生命周期期间审查应用程序代码是否存在漏洞,并在创建应用程序版本之前修复这些漏洞。
审查第三方库是否存在漏洞并将第三方库更新为最新的安全版本。
每季度至少审查并更新一次应用程序中的所有第三方库。
遵循如下所述的 Snowflake 安全最佳实践:
关于自动安全扫描¶
当发生以下任一情况时,将启动自动安全扫描:
提供商将版本添加到应用程序包,该版本已将 DISTRIBUTION 参数设置为 EXTERNAL,新版本会进行自动扫描。
提供商对已定义版本的应用程序包设置 DISTRIBUTION=EXTERNAL。应用程序包的所有版本都会进行自动扫描。
使用 ALTER APPLICATION PACKAGE 命令设置应用程序包的 DISTRIBUTION 属性,如以下示例所示:
ALTER APPLICATION PACKAGE HelloSnowflakePackage
SET DISTRIBUTION = EXTERNAL;
查看自动安全审查的状态¶
使用 SHOW VERSIONS 命令查看自动安全审查的状态,如以下示例所示:
SHOW VERSIONS IN APPLICATION PACKAGE HelloSnowflakePackage;
review_status
列显示了自动安全审查的以下状态之一:
NOT_REVIEWED
IN_PROGRESS
APPROVED
REJECTED
备注
如果应用程序通过了自动安全扫描,其状态将更新为 APPROVED。如果应用程序未能通过自动安全扫描,Snowflake 将进行人工审查。经过人工审查后,应用程序状态将更新为 APPROVED 或 REJECTED。