ディストリビューションの信用
from ゼロトラストネットワーク ―― 境界防御の限界を超えるためのセキュアなシステム設計
ディストリビューション (配布) : ビルド成果物を選択してパイプラインの下流のステージに提供すること
成果物をリリース対象に昇格させる方法
バージョン番号をユーザーに知らせる必要がある (バイナリの中にバージョン番号を含める) vs ビルドプロセスの最後までバージョン番号が決まらない
ビルド成果物の、簡単に変更できる場所にバージョン番号を格納して、それを変更する ← 望ましくない
公開されるバージョン番号とビルド番号をリリースエンジニアが明確に区別するのが良い
同じリリースバージョンを持つビルド成果物が複数生成されるが、ビルドには一意なビルド番号が付与される
nobuoka.icon リリース用バージョン番号と成果物バージョン番号を別にする、という話っぽい?
昇格されたビルドであることを利用者に伝える必要もある
方法はいくつかある
リリース専用の鍵で署名する
リリースされたバージョンとそのハッシュ値を、署名付きのマニフェストで公開する
APT (Advanced Packaging Tool) などのパッケージディストリビューションシステムの多くはこの手法
ソフトウェア配布システム (ソフトウェアディストリビューションシステム) において、完全性と真正性の検証に使われる主要な機構はハッシュ化と署名
ソフトウェアリリースのハッシュ化 : バイナリからハッシュ値が計算され、配布される
リリースの署名 : 作成者が、リリースのハッシュ値に秘密鍵で署名する。 それにより、ソフトウェアが正当な関係者によってリリースされたことを利用者が検証できる
APT の例
リポジトリには、パッケージ自体と、リポジトリ内のパッケージ全体の情報である Packages ファイルと、リポジトリ自体のメタ情報である Release ファイルが含まれる
パッケージのハッシュ値を Packages ファイルがもつ
Packages ファイルのハッシュ値を Release ファイルが持つ
Release ファイルは発行者によって署名されている
ミラーを含む配布ネットワーク (ディストリビューションネットワーク) の信用を確認するために、Release ファイルの署名を使用できる