セキュリティ レベル

SLSA は、サプライ チェーンのセキュリティ保証を強化する一連のレベルに編成されています。これにより、ソフトウェアが改ざんされておらず、ソースまで安全に追跡できるという確信が得られます。

このページは、SLSA レベルとトラックの概要を説明し、その意図を説明します。各レベルの規範的な要件については、要件を参照してください。SLSA の概要については、SLSA について を参照してください。

レベルとトラック

SLSA レベルは トラック に分割されます。各トラックには、サプライ チェーンのセキュリティの特定の側面を測定する独自のレベルのセットがあります。トラックの目的は、無関係な側面をブロックすることなく、セキュリティの 1 つの側面での進歩を認識することです。トラックを使用すると、SLSA 仕様を進化させることもできます。以前のレベルを無効にすることなく、トラックを追加できます。

トラック/レベル 要件 フォーカス
Build L0 (none) (n/a)
Build L1 パッケージがどのように構築されたかを示す来歴 間違い、ドキュメント
Build L2 ホストされたビルド プラットフォームによって生成された署名付きの来歴 ビルド後の改ざん
Build L3 強化されたビルド プラットフォーム ビルド中の改ざん

注: 仕様の 以前のバージョン では、単一の名前のないトラック、SLSA 1 ~ 4 が使用されていました。バージョン 1.0 では、ビルド トラックに重点を置くためにソース アスペクトが削除されました。将来のバージョン ではソース トラックが追加される可能性があります。

ビルド トラック

SLSA ビルド トラックは、パッケージ アーティファクトの 来歴 における信頼性と完全性のレベルの向上を説明します。来歴は、どのエンティティがアーティファクトを構築したか、どのようなプロセスを使用したか、および入力が何であったかを説明します。最低レベルでは来歴が存在することのみが必要ですが、より高いレベルでは、ビルド、来歴、またはアーティファクトの改ざんに対する保護が強化されます。

ビルド トラックの主な目的は、アーティファクトが期待どおりにビルドされたことを 検証 できるようにすることです。消費者は、特定のパッケージについて予想される来歴がどのようになるかを知る何らかの方法を持っており、各パッケージ成果物の実際の来歴をそれらの期待と比較します。そうすることで、いくつかのクラスの サプライ チェーンの脅威 を防ぐことができます。

各エコシステム (オープン ソースの場合) または組織 (クローズ ソースの場合) は、これがどのように実装されるかを正確に定義します。これには、期待値を定義する手段、どのような来歴形式が受け入れられるか、再現可能なビルドが使用されるかどうか、来歴がどのように配布されるか、いつ検証が行われるかなどが含まれます。失敗すると何が起こるか。実装者向けのガイドラインは、requirements にあります。

Build L0: 保証なし

概要

要件なし —L0 は SLSA がないことを表します。

対象

単体テストなど、同じマシン上で構築および実行されるソフトウェアの開発またはテスト ビルド。

要件

該当なし

利点

該当なし

Build L1: 来歴が存在します

概要

パッケージには、それがどのように構築されたかを示す来歴があります。間違いを防ぐために使用できますが、回避したり偽造したりするのは簡単です。

対象

ビルド ワークフローを変更せずに、改ざん防止以外の SLSA の利点を簡単かつ迅速に得たいと考えているプロジェクトや組織。

要件
  • ソフトウェア プロデューサーは、他の人が「正しい」ビルドがどのようなものであるかについての期待を形成できるように、一貫したビルド プロセスに従います。

  • ビルド プラットフォームは、アーティファクトがどのようにビルドされたかを説明する 来歴 を自動的に生成します。これには、どのエンティティがパッケージをビルドしたか、使用したビルド プロセス、ビルドへのトップレベルの入力が何であったかが含まれます。

  • ソフトウェア制作者は、できればパッケージ エコシステムによって決定された規則を使用して、消費者に来歴を配布します。

メリット
  • 正確なソース バージョンとビルド プロセスを知ることで、プロデューサーとコンシューマーの両方がソフトウェアのデバッグ、パッチ、再構築、分析を容易にします。

  • 検証 を使用すると、上流リポジトリに存在しないコミットからビルドするなど、リリース プロセス中のミスを防ぐことができます。

  • 組織がソフトウェアのインベントリを作成し、さまざまなチームで使用されるプラットフォームを構築するのを支援します。

メモ
  • 来歴が不完全であるか、L1 で署名されていない可能性があります。より高いレベルでは、より完全で信頼できる来歴が必要になります。

Build L2: ホスト型ビルド プラットフォーム

概要

来歴を偽造したり、検証を回避したりするには、明示的な「攻撃」が必要ですが、これは簡単に実行できる場合もあります。洗練されていない敵や、法的リスクや経済的リスクに直面している敵を阻止します。

実際には、これは、来歴を生成して署名1するホストされたプラットフォーム上でビルドが実行されることを意味します。

対象

Build L3 で必要なビルド プラットフォーム自体の変更を待ちながら、ホスト型ビルド プラットフォームに切り替えることで SLSA による適度なセキュリティ上のメリットを得たいと考えているプロジェクトおよび組織。

要件

Build L1 のすべてに加えて:

  • ビルドは、来歴自体を生成して署名1するホストされたビルド プラットフォーム上で実行されます。これは、オリジナルのビルド、事後の再現可能なビルド、または来歴の信頼性を保証する同等のプラットフォームである可能性があります。

  • 来歴の下流検証には、来歴の信頼性の検証が含まれます。

利点

Build L1 のすべてに加えて:

  • デジタル署名1 によってビルド後の改ざんを防止します。

  • 解雇のリスクに直面する従業員など、セキュリティ管理を回避することで法的または財務的リスクに直面する敵対者を阻止します。

  • 監査および強化が可能な特定のビルド プラットフォームにビルドを制限することで、攻撃対象領域を削減します。

  • さらなる強化作業 (Build L3) を並行して実行しながら、サポートされているビルド プラットフォームへのチームの大規模な移行を早期に行うことができます。

Build L3: 強化されたビルド

概要

来歴を偽造したり検証を回避するには、ほとんどの攻撃者の能力を超えた脆弱性を悪用する必要があります。

実際には、これは、強力な改ざん保護を提供する強化されたビルド プラットフォーム上でビルドが実行されることを意味します。

対象

ほとんどのソフトウェア リリース。Build L3 では通常、既存のビルド プラットフォームに大幅な変更が必要です。

要件

Build L2 のすべてに加えて:

  • ビルド プラットフォームは、以下のための強力な制御を実装します。

    • 同じプロジェクト内であっても、実行が相互に影響を与えないようにします。
    • 来歴の署名に使用される秘密マテリアルがユーザー定義のビルド ステップからアクセスできないようにします。
利点

Build L2 のすべてに加えて:

  • 内部関係者の脅威、資格情報の漏洩、または他のテナントによるビルド中の改ざんを防止します。

  • 攻撃者にビルド プロセスの困難なエクスプロイトを実行させることで、侵害されたパッケージ アップロードの認証情報の影響を大幅に軽減します。

  • パッケージが公式のソースとビルド プロセスからビルドされたという強い信頼性を提供します。

  1. 来歴の信頼性を検証する別の手段も受け入れられます。