Documentation
Adoptium® 安全软件开发实践

Adoptium 项目为关键任务环境提供高质量的 Java 运行时。确保我们交付的软件既安全又可靠,对项目和我们的用户都至关重要。Adoptium 遵循一套基于既定安全软件开发实践的基础、完善且安全的软件开发实践,这些实践可以被验证,以确立我们交付成果的完整性。

安全开发实践

我们的安全开发目标是:

  • 确保我们的社区、流程和技术是为安全软件开发而设计的。

  • 保护流程和软件的所有组件免受篡改和未经授权的访问。

  • 生产安全性良好且在整个过程中安全漏洞最少的软件。

  • 对漏洞做出适当反应,并防止未来发生类似漏洞。

Adoptium 通过坚持以下实践来满足这些安全工程目标:

出处和信任源

Adoptium 从信任的源码库构建源码,并从信任的位置获取依赖项和工具。Temurin 构建项目包含用于构建我们版本的开源程序或“配方”。这些构建脚本在项目从信任的供应商处获取的虚拟机和操作系统上运行,并使用来自信任位置的编译器和安装程序等工具。运行时本身是从由 OpenJDK 和其他著名的第三方项目维护的源代码构建的,这些项目具有强大的治理和监督历史,以确保生成的二进制文件仅包含预期的代码和行为。

Adoptium 为每个软件版本的组件收集、保护、维护并共享出处数据,形成软件物料清单 (SBOM)。我们定期验证完整性并检查每个依赖项的出处,以识别潜在问题。

版本控制和标签

Adoptium 项目维护的所有代码都存储在 Adoptium 组织下的 GitHub 版本控制库中,并由 Eclipse 基金会管理。我们的代码是开源的,可供社区审查,但更改代码的权限仅限于选定的且经过强身份验证的提交者 (committer)。我们利用代码库的版本控制功能来跟踪对代码所做的所有更改,并对个人提交者的账户负责,同时要求二次审查、额外的自动检查和社区监督,以确保更改是安全且可靠的。

Eclipse Temurin 版本是从 OpenJDK 中标记为发布质量的版本控制源构建的,生成的二进制文件作为标记版本发布在我们的 GitHub 库中。这些发布产物通过 Adoptium API、网站和代码库直接提供给最终用户和再分发者。

基础设施即代码

为了确保我们的基础设施得到安全管理,我们使用基础设施即代码 (IaC) 的原则来定义和配置机器。Adoptium 的大部分构建和测试基础设施运行在大型云服务提供商运营的虚拟机上。Adoptium 使用 IaC 定义来定义这些机器的需求和配置,这些定义保存在 Adoptium 基础设施项目的版本控制下。这使社区能够检查用于生产 Adoptium 产物的基础设施细节,并重复使用这些定义来配置他们信任的机器,以便运行与项目相同的构建和测试软件。

IaC 提供了弹性,可以按照零信任架构配置和实施安全措施,以确保存储环境的基础设施安全,定义硬件配置的变化,并具备在不同供应商上运行我们基础设施的能力,从而确保我们有能力每天交叉检查结果。

可重复构建

Adoptium 安全工程实践的一个重要部分是社区成员能够验证我们生产的构建。这通过二进制验证的可重复构建成为可能,这意味着使用相同的源码、工具和机器配置,任何人都可以生产出逐字节相同的结果。我们确保我们的源代码、构建脚本和基础设施都经过良好定义并受版本控制。我们发布有关如何重现 Adoptium 二进制文件的信息,并鼓励其他人通过检查其构建结果在输入和过程相同的情况下是否匹配来验证这些构建。

Adoptium 为 Eclipse Temurin 构建的出处提供软件物料清单 (SBOM) 证明。SBOM 与我们的每个 Temurin 发布产物一起提供。

测试和代码签名

Adoptium 使用广泛的软件测试套件来验证和确认 Eclipse Temurin 版本。这些测试由 Adoptium AQAvit 项目维护。这些测试旨在确保二进制文件已准备好用于关键任务的生产环境。AQAvit 测试在发布前检查每个二进制文件的功能正确性、安全地位、性能特征和耐用性。

AQAvit 测试既包括项目内部开发的测试,也包括第三方测试套件和应用程序,以确保二进制文件的行为符合预期。质量保证贯穿发布流程的各个阶段,除了严格的发布测试外,还对开发工作进行夜间测试,以确保异常情况能够被快速识别和解决。

在 Eclipse Temurin 二进制文件准备发布之前,必须通过 Java 规范合规性测试和 AQAvit 质量保证测试。只有当所有发布测试都完成后,二进制文件才会与相关的元数据和软件物料清单一起发布。Adoptium 提供加密安全的代码签名,确保发布二进制文件可以唯一地被识别为 Adoptium 的官方版本。

审计和验证

Adoptium 发布的所有方面都是公开进行的,除了使用 Oracle 技术兼容性套件 (TCK) 的 Java 兼容性测试。TCK 不是开源代码,我们与 Oracle 的许可不允许公开进行兼容性测试。然而,AQAvit 测试全是开源代码,结果可供公众审查。源代码保存在开源库中,所使用的工具在我们的基础设施文件中有所描述。我们欢迎对项目的构建、测试和发布活动进行审计和验证。

Temurin 发布二进制文件都有相应的加密哈希,最终用户可以通过 API、网站和 GitHub 发布库获取。二进制文件由 Eclipse 代码签名证书签名,该证书由既定的证书颁发机构颁发,以便我们用户的操作系统或其他工具和服务在使用前确认签名的有效性。

Adoptium 认真对待所有安全漏洞,并遵守 Eclipse 基金会漏洞报告政策。有关产品或安全软件开发实践中潜在或实际漏洞的通知必须遵循该报告政策。

文档作者
tellisongdamsNickJavaDev88
edit icon

帮助我们完善这些文档!

所有 Adoptium 文档均为开源。发现错误或不清楚的内容?

gradient overlay mobile
message icon

Connect with the community

Join our Slack channel to discuss work and reach out to project maintainers.