Skip to content
Latchkey

buildの整合性とは何か? artifactが改ざんされていないことを信頼する

buildの整合性とは、artifactがまさに期待されるソースから、まさに期待されるプロセスによって、途中で改ざんされることなくbuildされたという保証です。

あなたはソースコードをレビューし最終artifactを信頼しますが、その間に何が起きたのでしょうか? buildの整合性はそのギャップに関するものです。あなたが配布するバイナリが、あなたがレビューしたソースから、誰も破壊工作していないbuildを通じて本当に生まれたことを証明します。これはSolarWindsのようなサプライチェーン攻撃が、build途中で改ざんすることによって特に狙った特性です。

途中で何が問題になりうるか

  • 悪意のある依存関係がbuild中にコードを注入する。
  • 侵害されたbuildサーバーが出力を書き換える。
  • artifactがbuild後release前にすり替えられる。
  • 汚染されたbuild scriptが生成されるものを変える。

整合性の確立

buildの整合性はいくつかのプラクティスから構築されます。buildが改ざんされないように堅牢化された分離済みのbuild環境、artifactがどう作られたかを記録する署名付き来歴、そして同じソースが同じバイナリを生むことを誰でも確認できる再現可能なbuildです。

downstreamでの検証

利用者は来歴とattestationをチェックして整合性を検証します。このartifactは有効な署名付き来歴を持っているか? 期待されるソースとbuilderを指しているか? そのdigestは一致するか? deploymentゲートは、artifactを受け入れる前にこれらすべてを要求できます。

証拠としての再現可能なbuild

buildが再現可能なら、同じソースをbuildする2つの独立した当事者はバイト単位で同一のartifactを得ます。これにより、releaseされたバイナリが隠された追加なしにソースと真に対応することを誰でも確認でき、最も強力な整合性の証拠となります。

build環境が基盤

あらゆる整合性の保証は信頼できるbuilderの上に成り立ちます。build環境が改ざんされうるなら、その来歴と署名は侵害されたプロセスを証明することになります。分離されたエフェメラルなbuild環境 (Latchkeyのランナーのような) は、各buildにクリーンで封じ込められた基盤を与え、整合性の主張を意味あるものにします。

重要なポイント

  • buildの整合性は、改ざんされていないbuildを通じてartifactがソースと一致することを保証します。
  • 堅牢化されたbuilder、署名付き来歴、再現可能なbuildがそれを確立します。
  • downstreamのゲートは、artifactを受け入れる前に来歴とattestationを検証します。

関連ガイド