ビルドの信用
#セキュリティ #ソフトウェア開発
from ゼロトラストネットワーク ―― 境界防御の限界を超えるためのセキュアなシステム設計
ビルドサーバーは標的型攻撃を受けやすい
ビルドサーバーは昇格された権限を持ち、本番環境で直接実行されるコードを生成するため
強力な保護を適用することが重要
ビルドシステムの信用のために通常は 3 点の確認
ビルドしたソースコードが意図したソースコードであること
ビルドプロセスとその設定が意図したとおりのものであること
ビルド自体が正常に実行されており、改ざんされていないこと
ビルドプロセスはデリケートなので、その責務を外部に委任する場合は伸長に判断すべき
信用できる出力のためにはまずは信用できる入力
VCS の信用についてはソースコードの信用を参照
VCS との通信は認証されたチャンネル (TLS など) を使う
さらなるセキュリティ強化のためには、タグやコミットに署名し、ビルドサーバーはその署名を検証する
ビルドの設定もビルドシステムの入力のひとつ
成果物の信用のために、ビルド成果物のハッシュ値を生成
下流にビルド成果物と一緒にハッシュ値を送ることで、下流でビルド成果物の破壊や改ざんを検知できる
再現可能なビルド (reproducible build) はビルドパイプラインへの攻撃を阻止する最善のツール
リリース用バージョン番号と成果物バージョン番号を別にする