Adoptium® セキュアソフトウェア開発プラクティス

Adoptium プロジェクトは、ミッションクリティカルな環境で使用される高品質な Java ランタイムを提供しています。プロジェクトおよびユーザーにとって、提供するソフトウェアが安全でセキュアであることは非常に重要です。Adoptium は、確立されたセキュアソフトウェア開発プラクティスに基づいた、根本的かつ健全なセキュアソフトウェア開発プラクティスに従っており、成果物の完全性を検証することができます。

セキュア開発プラクティス

セキュア開発の目標は以下の通りです:

  • コミュニティ、プロセス、テクノロジーがセキュアなソフトウェア開発のために設計されていることを確保する。

  • プロセスおよびソフトウェアのすべてのコンポーネントを改ざんや不正アクセスから保護する。

  • セキュリティの脆弱性を最小限に抑えた、高度にセキュアなソフトウェアを生産する。

  • 脆弱性に適切に対応し、将来的に同様の脆弱性が発生しないようにする。

Adoptium は以下のプラクティスを遵守することで、これらのセキュアエンジニアリング目標を達成しています:

プロベナンスと信頼できるソース

Adoptium は信頼できるソースリポジトリからソースをビルドし、信頼できる場所から依存関係とツールを取得します。Temurin ビルドプロジェクトには、リリースをビルドするためのオープンソースプログラム(「レシピ」)が含まれています。これらのビルドスクリプトは、信頼できるプロバイダーから提供された仮想マシンおよびオペレーティングシステム上で実行され、信頼できる場所からコンパイラやインストーラーなどのツールを使用します。ランタイム自体は、OpenJDK および強固なガバナンスと監視の歴史を持つ著名なサードパーティプロジェクトが管理するソースコードからビルドされており、生成されるバイナリに期待されるコードと動作のみが含まれるようにしています。

Adoptium は、各ソフトウェアリリースのすべてのコンポーネントのプロベナンスデータを収集、保護、管理し、ソフトウェア部品表(SBOM)として共有します。潜在的な問題を特定するために、各依存関係の完全性を定期的に検証し、プロベナンスを確認しています。

バージョン管理とタグ付け

Adoptium プロジェクトが管理するすべてのコードは、Eclipse Foundation によって管理された Adoptium 組織配下の GitHub バージョン管理リポジトリに保存されています。コードはオープンソースであり、コミュニティによる精査が可能ですが、コードの変更へのアクセスは選出された強力な認証を持つコミッターに限定されています。リポジトリのバージョン管理機能を使用して、各コミッターのアカウントに対する説明責任とともにコードへのすべての変更を追跡し、変更が安全でセキュアであることを確認するために、二次レビュー、追加の自動化チェック、コミュニティの監視を必要とします。

Eclipse Temurin のリリースは、OpenJDK でリリース品質としてタグ付けされたバージョン管理されたソースからビルドされ、生成されたバイナリは GitHub リポジトリのタグ付きリリースとして公開されます。これらのリリースアーティファクトは、Adoptium API、ウェブサイト、およびリポジトリを通じてエンドユーザーおよび再配布者に直接提供されます。

Infrastructure as Code

インフラストラクチャがセキュアに管理されることを確保するために、Infrastructure as Code(IaC)の原則を使用してマシンを定義およびプロビジョニングします。Adoptium のビルドおよびテストインフラストラクチャの大部分は、大規模なクラウドサービスプロバイダーによって運営される仮想マシン上で実行されます。Adoptium は、Adoptium インフラストラクチャプロジェクトのバージョン管理下に保存された IaC 定義を使用して、これらのマシンの要件と構成を定義します。これにより、コミュニティは Adoptium のアーティファクト生成に使用されるインフラストラクチャの詳細を確認し、同じビルドおよびテストソフトウェアを実行するために信頼するマシンに同じ定義を再利用することができます。

IaC はゼロトラストアーキテクチャに従って環境のホスティングインフラストラクチャをセキュアにするための対策を設定・実装するレジリエンスを提供し、ハードウェアプロビジョニングの変更を定義し、異なるサプライヤー上でインフラストラクチャを実行する可用性を確保することで、毎日の結果相互検証能力を持ちます。

再現可能なビルド

Adoptium のセキュアエンジニアリングプラクティスの重要な部分は、コミュニティメンバーが生成されたビルドを検証できることです。これは、同じソース、ツール、マシン構成があれば誰でもバイト単位で同一の結果を生成できることを意味するバイナリ検証可能な再現可能ビルドによって実現されています。ソースコード、ビルドスクリプト、インフラストラクチャが適切に定義され、バージョン管理されていることを確保しています。Adoptium バイナリを再現する方法に関する情報を公開し、同じ入力とプロセスを使用してビルド結果が一致することを確認することで他者がビルドを検証することを奨励しています。

Adoptium は Eclipse Temurin ビルドのプロベナンスのためのソフトウェア部品表(SBOM)の証明を提供しています。SBOM は各 Temurin リリースアーティファクトとともに利用可能です。

テストとコード署名

Adoptium は、広範なソフトウェアテストスイートを使用して Eclipse Temurin リリースを検証および確認します。これらのテストは Adoptium AQAvit プロジェクトによって管理されています。これらのテストは、バイナリがミッションクリティカルな本番使用に対応していることを確保するように設計されています。AQAvit テストは、リリース前に各バイナリの機能的な正確性、セキュリティ態勢、パフォーマンス特性、耐久性を確認します。

AQAvit テストには、プロジェクト内部で開発されたものとサードパーティのテストスイートおよびアプリケーションの両方が含まれており、バイナリが期待通りに動作することを確保します。品質保証はリリースプロセス全体を通じて段階的に行われ、異常が迅速に特定および対処されるように開発作業の夜間テストが行われ、さらに厳密なリリーステストも実施されます。

Java 仕様の適合性テストと AQAvit 品質保証テストは、Eclipse Temurin バイナリがリリース準備完了となる前に合格する必要があります。すべてのリリーステストが完了した場合にのみ、サポートメタデータとソフトウェア部品表とともにバイナリが公開されます。Adoptium はリリースバイナリが公式 Adoptium リリースであることを一意に識別できる暗号的にセキュアなコード署名を提供します。

監査と検証

Adoptium リリースのすべての側面は、Oracle Technology Compatibility Kit(TCK)を使用した Java 互換性テストを除き、公開の場で実施されます。TCK はオープンコードではなく、Oracle とのライセンスでは互換性テストを公開の場で実施することが許可されていません。ただし、AQAvit テストはすべてオープンソースコードであり、結果は公開精査のために提供されます。ソースコードはオープンソースリポジトリに保管されており、使用されるツールはインフラストラクチャファイルに記載されています。プロジェクトのビルド、テスト、公開活動の監査と検証を歓迎します。

Temurin リリースバイナリにはすべて、API、ウェブサイト、Github リリースリポジトリを通じてエンドユーザーが利用可能な対応する暗号ハッシュがあります。バイナリは、確立された認証機関によって発行された Eclipse コード署名証明書で署名されており、ユーザーのオペレーティングシステムやその他のツールやサービスが使用前に署名の有効性を確認できます。

Adoptium はすべてのセキュリティ脆弱性を真剣に受け止め、Eclipse Foundation 脆弱性報告ポリシーに従っています。製品またはセキュアソフトウェア開発プラクティスにおける潜在的または実際の脆弱性の通知は、その報告ポリシーに従う必要があります。

edit icon

このドキュメントの改善にご協力ください!

すべてのAdoptiumドキュメントはオープンソースです。誤りや不明な点がありましたらお知らせください。

ドキュメント著者
tellisongdams
Join our Slack channel to discuss and reach out to maintainers.Join Slack