LoginSignup
1
0

FRSCA (Factory for Repeatable Secure Creation of Artifacts)解説 : 1. FRSCAとは?

Last updated at Posted at 2024-03-03

近年、ソフトウェアサプライチェーンへの攻撃増加に伴い、ソフトウェアサプライチェーンセキュリティが注目を集めています。この背景から、本記事ではFRSCAというビルドパイプラインのリファレンス実装について解説を行います。
FRSCAは企業でも注目されており、FRSCAをベースにしたセキュアビルドパイプラインの実装が国際会議で発表されています。以下のURL
Beyond Guidelines - Designing and Implementing Robust Build Pipelines
から、動画視聴、スライドがダウンロードできます。

FRSCAとは?

FRSCA (Factory for Repeatable Secure Creation of Artifacts)テキスト1とは、CNCFが公開しているSoftware Supply Chain Security Paperに基づいたオープンソースのリファレンス実装です。FRSCAでは全てのビルドがサプライチェーンセキュリティのベストプラクティスに従うことを保証するため、セキュアなビルドを実行するためのパイプラインの実装例を定義しています。FRSCAはオープンソースであり、(https://github.com/buildsec/frsca) で公開されています。

FRSCAの目的

FRSCAはビルドの保護を重要視しています:

  • ビルドの保護
    • FRSCAの実装はビルド、パイプライン、署名、可視性、アイデンティティ、およびポリシーのツール群を用いて実現されます。
    • 設置したビルドサービス群だけでなく,実際に実行しているビルドが安全であることを確認すること、期待通りのビルドが実行されているかも重要視しています.
  • 保護されたビルドを実行するための抽象化 (ビルドプロセスの可視性の低下)
    • これは、他者が自分が実行するビルドについて簡単には理解できないようにすることです。抽象化して,他の人にビルドプロセスをわかりづらくさせることでビルドの保護に繋がります。

FRSCAの原理

FRSCAは次の原理に従い、設計されています

  • End-Userにとってできる限りシンプルになるように作ること.
  • ゼロトラストをそれぞれのコンポーネントで適用すること.
  • セキュアに実行されるべきだが,それ以外(安全性が必ずしも必要ないとき)はフレキシブルであること.
    • 例えば、もし,SBOMが必要となる状況だとしても,それにCyclone DXかSPDX,どれを使うかは気にしない.
  • できる限り自動化すること.
    • シンプルかつ簡単であり,ユーザーがメンテナンスに多大な負担を負わないようにする.

FRSCAの実装方法

FRSCAの実装はビルド、パイプライン、署名、可視性、アイデンティティ、およびポリシーのツール群を用いて実現されます。FRSCAでは以下のツールを使用し、パイプライン実装を提案しています。それぞれのツールの詳しい解説は他の方の記事を参考にしてください。表中では、FRSCAのサンプルパイプラインで実際に使用されているツールを全て載せています。2

ツール名 使用用途 FRSCAで必須か? 代用ツール
Gitea ソースコードリポジトリ GitHub,GitLab
Tekton Pipelines CI/CDパイプラインの構築
Tekton Triggers イベントトリガー
Kaniko コンテナイメージビルドツール コンテナ内でビルドが行える Docker, Buildpacks
Syft SBOM生成ツール Trivy
Grype 脆弱性検知ツール Trivy, Vuls
Tekton Chains パイプラインの監視、署名
Sigstore 署名 Sigstoreは署名系ツールセットCosign・Fulcio・Rekorの名称
SPIFFE/Spire ワークロードの識別 ワークロードにに変更があった場合それを検知する
Kyverno ポリシー
Vault シークレット管理
Helm プロビジョニング Kubernetes リソースのデプロイを行う
CUE プロビジョニング tektonのパイプラインの記述を論理的に書くことができる

FRSCAパイプラインはKubernetes基盤の上に作られます。パイプラインをTekton Pipelinesで作成し、パイプライン中のタスク (ビルド、SBOM生成、脆弱性検知、署名、認証)はTekton Tasksによって、すべてコンテナ内で実行されます。各コンテナにそれぞれのタスクを実行するためのツールがインストールされています。

FRSCAサンプルパイプラインのアーキテクチャについて

ここでは、FRSCAのリポジトリで公開されている実際に動かすことができるサンプルパイプラインについて説明します。

以下の図がFRSCAのサンプルパイプラインのアーキテクチャです。
pipeline.drawio.png
このサンプルパイプラインは以下のように実行されます。

  1. 開発者がソースコードをリポジトリへpushします。
  2. そのpushイベントをTekton Triggersが検知し、それを契機にパイプラインを実行します
  3. a. Tekton Tasksによって生成された各Taskが実行されます
    b. Tekton Chainsによって、パイプライン中の各実行結果が観測・記録され、Provenance3が生成されます。このとき、ChainsはSpire、Sigstoreと連携しており、ワークロードの識別、Provenanceへの署名 (Attestationという)を行います。
  4. ビルドされたアーティファクトは本番環境へデプロイされます
  5. パイプラインの実行によって生成されたアーティファクト (SBOM, Provenance, Attestationなど)はメタデータストアへ保管されます。ここで、このサンプルパイプラインではttl.shという一時的なレジストリを使用しています。4

以上、FRSCAについて概要を説明しました。全てについて理解できているわけではないため、間違いもあるかもしれません。今後は、FRSCAサンプルパイプラインの実行やProvenance、Attestationをどうやって生成しているのか?、署名や認証をどう行っているかを詳しく解説したいと考えています。

  1. フレスカと呼びます

  2. 必ずしもFRSCAで必須ではないツールもあり、他のツールを使用することもできます。

  3. Provenanceとは誰がいつどこで何を使ってどうやってビルドしたかを記録したメタデータのこと。ここでは、ビルドプロセスのことをProvenanceと呼んでいます。

  4. サンプルパイプラインでは一時的にttl.shを使用していましたが、FRSCAではdocker resistoryやGUACを利用することが提案されており、メタデータストアに何を利用するかは今後も検討が必要です。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0