Skip to content
Latchkey

provenance とは? - artifact がどこから来たかを証明する

provenance とは、artifact がどう build されたか、つまりどのソースから、どのプロセスで、どのプラットフォーム上で、いつ build されたかを記録する、改ざんが検出可能なメタデータです。

build artifact をダウンロードするとき、それが本当に信頼するソースから来たもので、途中ですり替えられていないと、どうやって分かるでしょうか。provenance がそれに答えます。それは build の署名済み記録です。入力、builder、commit、ステップ。provenance があれば、artifact の出所を鵜呑みにするのではなく検証できます。

provenance が記録するもの

  • build が使用したソースリポジトリと正確な commit。
  • build プラットフォームと builder の識別情報。
  • 実行された build ステップまたはレシピ。
  • タイムスタンプと、生成された artifact への参照。

なぜ署名される必要があるのか

署名されていないメタデータは、攻撃者が偽造できる単なる主張にすぎません。provenance は build プラットフォームによって署名されるため、消費者はそれが改変されていないこと、そしてそれが名指しする builder から本当に来たことを検証できます。

in-toto 標準

provenance は一般に in-toto attestation 形式を用いて表現されます。これは「この builder が、これらの入力から、この artifact を生成した」という標準的な構造です。形式を標準化することで、検証ツールは準拠したどのプラットフォームからでも provenance を取り込めます。

provenance を検証する

消費者(またはデプロイの gate)は、artifact が provenance を持つこと、署名が有効であること、記録されたソースと builder が期待どおりであることを確認します。不一致、または provenance の欠如は、その artifact を拒否する理由になります。

CI で生成する

build プラットフォームは、artifact が生成されるにつれて provenance を生成し、主張されたレシピではなく実際の入力を捕捉します。強化され分離された builder が、その provenance を信頼できるものにします。攻撃者には、それが記述する build を改ざんする機会がなかったからです。

重要なポイント

  • provenance は、artifact がどう build されたかを正確に記述する署名済みメタデータである。
  • ソース、commit、builder、ステップを記録し、出所を検証できるようにする。
  • in-toto 形式がそれを標準化し、署名がそれを改ざん検出可能にする。

関連ガイド