Skip to main content

アーティファクト構成証明

成果物構成証明の使用とセキュリティ上の利点について説明します。

概要

構成証明を使用することで、ビルドするソフトウェアに対して検証不可能な証明と整合性の保証を作成できます。 さらに、ソフトウェアを使用するユーザーは、ソフトウェアがビルドされた場所と方法の確認ができます。

ソフトウェアで成果物の構成証明を生成する場合は、ビルドの実績を確立し、次の情報など暗号署名付き要求を作成します。

  • アーティファクトに関連付けられているワークフローへのリンク。
  • リポジトリ、組織、環境、コミット SHA、およびアーティファクトのトリガー イベント。
  • 証明の確立に使用する OIDC トークンからのその他の情報。 詳しくは、「OpenID Connect」をご覧ください。

関連するソフトウェア部品表 (SBOM) を含む構成証明を生成することもできます。 ビルドを、その中で使用されるオープンソースの依存関係の一覧に関連付けることで、透明性は提供され、コンシューマーがデータ保護標準に準拠できるようになります。

成果物構成証明の SLSA レベル

SLSA フレームワークは、サプライ チェーンのセキュリティを評価に使用される業界標準です。 これは、レベルに編成されています。 各レベルは、ソフトウェア サプライ チェーンのセキュリティと信頼性の程度を表します。 アーティファクト構成証明自体が、SLSA v1.0 構築レベル 2 を提供します。

これにより、アーティファクトとその構築命令間のリンクが提供されますが、既知の検査済みの構築命令を使用して構築を要求することで、この手順をさらに進めることができます。 これを実現するのに良い方法は、組織全体の多くのリポジトリが共有する再利用可能なワークフローで構築を実行することです。 再利用可能なワークフローは、SLSA v1.0 構築レベル 3 を満たすために、構築プロセスと呼び出し元のワークフローの間で分離を提供できます。 詳しくは、「Using artifact attestations and reusable workflows to achieve SLSA v1 Build Level 3」をご覧ください。

SLSA レベルの詳細については、「SLSA セキュリティ レベル」を参照してください。

GitHub が成果物構成証明を生成する方法

アーティファクト構成証明を生成するために、GitHub は Sigstore を使用します。これは、構成証明を介してソフトウェアのアーティファクトに署名して検証するための包括的なソリューションを提供するオープンソース プロジェクトです。

アーティファクト構成証明を生成するパブリック リポジトリ では、Sigstore Public Good Instance が使用されます。 生成された Sigstore バンドルのコピーについては GitHub と共に格納され、インターネット上でパブリックに読み取り可能な不変の透過性ログにも書き込まれます。

アーティファクト構成証明を生成するプライベート リポジトリ では、GitHub の Sigstore インスタンスを使用します。 GitHub の Sigstore インスタンスは Sigstore Public Good Instance と同じコードベースを使用していますが、透過性ログはなく、GitHub Actions とのみフェデレーションします。

構成証明を生成すべきとき

構成証明を生成するだけではセキュリティ上の利点はありません。利点を実現するには、構成証明を検証する必要があります。 署名の対象と頻度について検討する方法に関するガイドラインを次に示します。

以下に署名する必要があります。

  • ユーザーが gh attestation verify ... を実行することを期待しているリリース対象のソフトウェア。
  • ユーザーが実行するバイナリ、ユーザーがダウンロードするパッケージ、または詳細な内容のハッシュを含むマニフェスト。

以下には署名しないでください。

  • 自動テスト用の頻繁な構築。
  • ソース コード、ドキュメント ファイル、埋め込みイメージなどの個々のファイル。

成果物構成証明の検証

アーティファクト構成証明を発行するソフトウェアを使用する場合は、GitHub CLI を使用してそれらの構成証明を確認できます。 構成証明ではソフトウェアの構築場所と方法に関する情報が提供されるため、その情報を使用して、サプライ チェーンのセキュリティを昇格させるセキュリティ ポリシーを作成して適用できます。

警告

アーティファクト構成証明 は、アーティファクトがセキュリティで保護されている保証_ではない_ことに注意することが重要です。 代わりに、アーティファクト構成証明によって、ソース コードとそれらを生成した構築命令にリンクされます。 ポリシーの条件を定義し、コンテンツを評価してそのポリシーを評価して、ソフトウェアを使用する際に情報に基づいたリスクを判断するのは、ユーザーの責任です。

次のステップ

ビルドの成果物構成証明の生成と検証を始めるには、「Using artifact attestations to establish provenance for builds」をご覧ください。