artifact attestation とは? - build に関する署名済みの主張
artifact attestation とは、build artifact について、それがどう build されたかや何を含むかといった検証可能な事柄を主張する、署名済みの声明です。
attestation とは、特定の artifact に結び付けられた暗号的に署名された主張です。「このイメージは、この commit から、このパイプラインによって build された。」「このバイナリは、この SBOM を持つ。」「このパッケージは、これらのチェックを通過した。」署名され、artifact の digest に結び付けられているため、それが届いた経路を信頼せずとも、誰でもその主張を検証できます。
attestation vs provenance
provenance は attestation の一種です。artifact がどう build されたかについての主張です。attestation はより広い概念であり、SBOM、テスト結果、スキャン結果を含む、artifact に関する検証可能な任意の事実についての署名済みの声明です。
何が attest されるか
- build provenance: ソース、builder、プロセス。
- artifact のコンポーネントを列挙する SBOM。
- 脆弱性またはポリシーのスキャン結果。
- 必要なチェックが通過したことの確認。
artifact にどう結び付くか
attestation は、artifact をその名前やタグではなく、コンテンツの digest によって参照します。つまり、それが作られた正確なバイト列に対してのみ有効であり続けます。artifact をすり替えれば、attestation はもはや一致しません。
デプロイ時に検証する
デプロイの gate は、artifact を通す前に有効な attestation を要求できます。正しい signer、一致する digest、期待される主張です。これにより「このイメージが正当であることを願う」が「暗号的に検証した」に変わります。
CI で attestation を生成する
build プラットフォームは、artifact が生成されるにつれて attestation を発行し、builder の識別情報で、しばしば Sigstore のようなサービスを通じてキーレスに署名します。信頼でき分離された builder が、それらの attestation を意味あるものにします。主張が、攻撃者が改ざんできなかった build を記述しているからです。
重要なポイント
- artifact attestation は、artifact の digest に結び付けられた署名済みで検証可能な主張である。
- provenance は attestation の一種であり、SBOM やスキャン結果も別の種類である。
- デプロイの gate は、artifact を受け入れる前に有効な attestation を要求できる。