Skip to content
Latchkey

build provenanceとは?

build provenanceは、artifactがどのように、どのpipelineによって、どのソースコミットからbuildされたかを記録した、署名付きで改ざんが検出可能な記録です。

バイナリそれ自体は、それがどこから来たのかを何も教えてくれません。provenanceは検証可能な声明、すなわち「このartifactはこのworkflowによって、このコミットから、これらの入力でbuildされた」を添付します。そのため利用者は、artifactの出所を仮定するのではなく信頼できます。

provenanceが証明するもの

provenanceドキュメントは、ソースリポジトリとコミット、builder(CIシステムとworkflow)、buildの入力、そして生成されたartifactのダイジェストを記録します。これらはすべて暗号的に署名されており、検出されずに改変することはできません。

検証の方法

利用者は、信頼されたbuilderのアイデンティティに対して署名を照合し、artifactのダイジェストとソースの主張が一致することを確認します。build後に何かがすり替わっていれば、検証は失敗します。

小さな例

GitHubのbuild-provenance証明は、imageダイジェストXがworkflow YによってコミットZからbuildされたことを記録します。deployの前に、検証者は実行中のimageのダイジェストが、あなたのリポジトリとworkflowからの証明と一致すること、未知のソースからのものではないことを確認します。

SLSAとCIの位置づけ

SLSAのようなフレームワークがprovenanceのレベルを定義します。provenanceが生成される場所はCIです。なぜなら、pipelineこそがソース、入力、builderを権威をもって知る唯一の場所だからです。プラットフォームはそれをますます自動的に生成するようになっています。

provenanceと署名

署名はartifactが変更されておらず、あなたのものであることを証明します。provenanceはそれがどのようにbuildされたかを記述します。両者は補完し合います。artifactに署名し、provenanceの声明にも署名する - そして両者が揃うことで、利用者はビットとその出所の両方を信頼できます。

重要なポイント

  • provenanceは、artifactがどのように、何からbuildされたかを記録した署名付きの記録です。
  • 利用者は盲目的に信頼するのではなく、出所を検証できます。
  • CIがそれを生成します。SLSAのようなフレームワークがprovenanceのレベルを定義します。

関連ガイド