経歴
SLSA (Supply-chain Levels for Software Artifacts) は、改ざんの防止、整合性の向上、パッケージとインフラストラクチャの保護を目的としたセキュリティ フレームワークです。 SLSA の中核となる概念は、ソフトウェア アーティファクトが次の 3 つの要件を満たしている場合にのみ信頼できるということです。
- アーティファクトには、その起源と構築プロセスを説明する来歴文書が必要です (L1)。
- 出所文書は信頼でき、下流 (L2) で検証される必要があります。
- ビルド システムは信頼できるものである必要があります (L3)。
SLSA フレームワークは、ソフトウェア サプライ チェーンの安全性を表すレベルを定義します。これらのレベルは、これらの要件の実装レベルに対応します (上記では L1 ~ L3 として示されています)。
筆記者の valint slsa
コマンドを使用して出所文書を作成できます。次に、このツールを使用して SLSA レベルを達成する方法について説明します。
注: ここでは SLSA V1.0 フレームワークを参照します。
SLSA L1
この 必要条件 SLSA L1 の場合は次のものが含まれます。
- ソフトウェア制作者は一貫したビルド プロセスに従います。
- ビルド プラットフォームは、アーティファクトがどのように構築されたかを説明する来歴データを自動的に生成します。
- ソフトウェア制作者は、出所データを消費者に配布します。
SLSA L1 を達成するためのチェックリスト:
- CI システムを使用してソフトウェアを構築します。ソース管理されているビルド スクリプトを使用することをお勧めします。
- アクティブ化
valint slsa
コマンドをビルド スクリプトの一部として使用して、来歴ドキュメントを作成します。注目してください。valint slsa
コマンドを使用すると、来歴文書に追加情報を追加できます。必要に応じて来歴文書の内容を調整できます。
SLSA L2
この 必要条件 SLSA L2 の場合は次のものが含まれます。
- SLSA L1 要件。
- ビルドは、来歴自体を生成して署名するホストされたビルド プラットフォーム上で実行されます。
- 出所の下流検証には、出所の信頼性の検証が含まれます。
SLSA L2 を達成するためのチェックリスト:
- SLSA L1 チェックリスト。
- (開発者マシンでビルドを実行するのではなく) ホストされたビルド サービスを使用します。
- 署名された来歴文書を作成します (署名されていない出典文書の代わりに、SLSA L1 にはこれで十分です) これは、次のコマンドを実行することで実現できます。
valint slsa ... -o attest
。筆記者の 勇敢な このツールには幅広い署名機能が備わっています。企業の場合は、X.509 PKI キーと証明書を使用することをお勧めします。 - を使用して、下流の出所文書の信頼性を検証します。
valint verify
指示。検証には、署名と署名 ID に加え、SLSA 来歴文書の内容を保証するその他の検証ルールが含まれる場合があります。いくつかの例は Scribe's にあります。 ポリシーカタログ.
注: 検証は、構築されたソフトウェアの消費者が行う必要があります。内部コンプライアンスのために、検証はテスト パイプラインの一部として実行できます。
SLSA L3
SLSA L3 要件
この 必要条件 SLSA L3 の場合は次のものが含まれます。
- SLSA L2 要件。
- ビルド プラットフォームには、次のような強力な制御が実装されています。
- 同じプロジェクト内であっても、実行が互いに影響を与えないようにします。
- 来歴の署名に使用されるシークレットに、ユーザー定義のビルド ステップからアクセスできないようにします。
さらに、ビルド プラットフォームを信頼するには、次のことを行う必要があります。 ビルドプラットフォームを確認する。出典ドキュメントが信頼できるという意味で、ビルド プラットフォームは信頼される必要があります。 偽造できない そしてビルドは次のようになります 分離された。このような検証により、次の要件が導き出されます。
- それを確認する プラットフォームの使用は中断されません 偽造不可能性と孤立 要件。
- たとえば、分離の検証は、パイプライン内のキャッシュの使用を評価することで実行できます。
- 来歴文書の偽造不可能性を確保するには、専用のビルド パイプラインで生成して署名することをお勧めします。
- その ビルドプラットフォームの信頼性.
- SaaS CI の場合は、ビルド プラットフォーム ベンダーと検証を行う必要があります。ソフトウェア製作者がビルド システムの展開を担当する場合、ベンダーの自己認証と展開側面の分析の実行を組み合わせることが推奨されます。
- たとえば、セルフホスト型 CI を展開する場合、ベンダー認証ではビルドが互いにどのように分離されているかを宣言する必要があり、展開分析では CI システムのアクセス許可とログ監査を検証する必要があります。
これらの要件を満たすことは CI プラットフォームに依存しており、完全に自動化することができず、ビルド システムとパイプラインの専門的なセキュリティ分析が必要であるため、困難です。そのため、SLSA フレームワークは、組織が SLSA L2 から SLSA L3 への準拠に徐々に進化することを具体的に提案しています。
この記事をここまで読んで、SLSA L3 が自分に適していると判断した場合は、袖をまくってください。ここで推奨するチェックリストを次に示します。
SLSA L3 を達成するためのチェックリスト:
- SLSA L2 チェックリスト。
- CI システムを評価します。目標は、次の質問に答えることです。
- どのような条件下で、権限のないエンティティがビルド システムを回避できるのでしょうか?
- どのような条件下でビルドが相互に影響を与える可能性がありますか?
回答が得られたら、残りのリスクを管理します。
- 来歴文書の生成を分離します。
- 来歴ドキュメントの作成を別のパイプラインに分離し、できれば別のビルド サービス上で行います。
- このパイプラインには、来歴文書の署名に使用されるシークレットのみを公開します。
- このパイプラインで出典ドキュメントのコンテンツを作成または検証します。検証の場合は、ビルド プラットフォームまたは他の信頼できるソースから直接収集されたデータを使用して、パイプライン内で生成された Provenance ドキュメントのすべての可能なフィールドを検証します。
- 来歴ドキュメントの作成を別のパイプラインに分離し、できれば別のビルド サービス上で行います。
- 他のパイプライン実行からビルド パイプラインが分離されていることを確認します。
- キャッシュと共有ボリュームの使用を確認します。
- 他のパイプラインと共有されるシークレットによって、パイプラインが相互に影響を与えることができないことを確認します。
- パイプラインの実行が相互に影響を及ぼさないことを確認する
- たとえば、1 つのパイプラインを通じて実行されたインストールが他のパイプラインの実行に影響を与えないようにします。これは、一時的なビルド ランナー (ビルドごとに作成されるコンテナーなど) を使用するか、ビルド ランナーが毎回所定の状態から開始することを確認することによって実行できます。
Scribe ツールを使用して SLSA L3 を実現するには、次のことをお勧めします。
- Provenance ドキュメントを作成するために必要なすべての証明書を生成するためのビルド パイプラインを計測します。たとえば、ビルド中にインストールされる依存関係のリストが必要な場合があります。このリストは次の方法で生成できます。
valint bom dir:
指示。さらに、パイプラインで来歴証明書を作成します。valint slsa
- 以下を実行する別の信頼できる出所生成パイプラインを作成します。
- ビルド パイプラインで作成されたものに基づいて、信頼できる出所ドキュメントを生成します。
- ビルド サービスからデータを収集し、それを使用して来歴ドキュメントを検証および更新します。
- ビルド パイプラインで作成された証明書の内容を確認します。たとえば、ビルド パイプラインからの SBOM 証明書と、個別にサンプリングされた SBOM 証明書を比較して、ビルド ランナーの内容を検証します。
- ビルド パイプラインから収集された証明書を使用して、来歴ドキュメントを更新します。
- 来歴文書の更新は、
valint slsa
- ビルド サービスから収集されたデータを評価して、ビルドが分離されたことを確認します。たとえば、キャッシュとシークレットの使用を検証します。
- ビルド パイプラインで作成されたものに基づいて、信頼できる出所ドキュメントを生成します。
このようなデータの収集と評価を実行するために、Scribe はビルド実行に対する証明書を作成し、必要な検証を実行するツールを提供します。
---
よし。準備は万端のようですね。もちろん、お手伝いが必要な場合は、 ご連絡ください。私たちはお手伝いをするためにここにいますので、喜んでアドバイスしたり、積極的にお手伝いしたいと思っています。
このコンテンツは、エンドツーエンドのソフトウェア サプライ チェーン セキュリティ ソリューションの大手プロバイダーである Scribe Security によって提供されており、ソフトウェア サプライ チェーン全体のコード成果物とコード開発および配信プロセスに最先端のセキュリティを提供しています。 詳しくはこちら。