Cloud Build と SLSA によるソフトウェア開発ライフサイクルのセキュリティ保護
Google Cloud Japan Team
※この投稿は米国時間 2021 年 7 月 30 日に、Google Cloud blog に投稿されたものの抄訳です。
ソフトウェア デベロッパーにとって最大の課題の一つは、自社のソフトウェア システムで使用する外部のソフトウェアやプロダクトを十分な情報に基づいて選択しなければならないことです。特定のシステムが適切にセキュリティ保護されているかどうかの評価は非常に難しい場合があります。特に外部のシステムやサードパーティが所有するシステムではその傾向が顕著です。
このいわゆるソフトウェア サプライ チェーンは、ソフトウェア システムへの攻撃が公共、個人双方の利益に損害を与える原因となっていることから、ここ数年でより緻密な調査が行われるようになってきています。Google は OpenSSF とのコラボレーションを通して、ソフトウェア アーティファクトのためのサプライ チェーン レベル(SLSA)を提唱しました。SLSA の新しいフレームワークは、ソフトウェア サプライ チェーンの整合性に関連する基準を形式化したもので、業界とオープンソース エコシステムがソフトウェア開発ライフサイクルの安全性を確保するのに有用です。
自前のソフトウェア開発ライフサイクルでの安全性の確保
SLSA は、一般のソフトウェア サプライ チェーンだけを対象としているのではありません。もともとは、安全なソフトウェア デリバリーのための Google の社内フレームワークから着想を得たものであるため、自前のソフトウェア開発ライフサイクルにも適用できます。
SLSA の各レベルは、ソフトウェア サプライ チェーンの安全性を強化するためのステップを段階的に表しています。ソースおよびビルドの整合性に対する最も一般的な脅威に対処するための付加的なセキュリティ ガイドラインとなります。このガイドラインは Google 独特のものではありません。セキュリティに関連する大きなコミュニティによって策定され、業界全体で採用されるようにコンセンサスを得て成立しました。
SLSA は新しいフレームワークですが、SLSA が提唱するセキュリティ ガイドラインの多くは現在すでに利用可能になっており、実際に採用されています。
SLSA について
SLSA のフレームワークには、ソフトウェア開発ライフサイクルのセキュリティを確保するための新しいツールやコンセプトが数多く導入されています。
アーティファクト - コンテナ イメージ、言語パッケージ、コンパイル済みバイナリなど、ビルド パイプラインの結果として生成されるあらゆるファイル
来歴 - ビルドプロセス、トップレベルのソース、依存関係など、アーティファクトがどのようにビルドされたかに関するメタデータ
ダイジェスト - コンテナ イメージの SHA-256 ハッシュのように、アーティファクトを一意に識別する固定サイズの値を生成する暗号学的ハッシュ関数の結果
証明書 - 特定のアーティファクトまたはアーティファクトのセットが生成された時点でのビルド パイプラインの来歴を記録する暗号署名付きファイル
認証者 - 証明書を生成するシステムまたはプロセス。多くの場合、ビルド パイプラインの一部として、アーティファクト作成後、デプロイ前に組み込まれる
不変の参照 - 特定のコンテナ イメージや言語パッケージなど、常に同一の不変的なアーティファクトを指すことが保証されている URL などの識別子
ビルドの整合性 - 証明書によるビルド パイプラインの出力の検証
これらを組み合わせて使用することで、SLSA フレームワークで設定された標準に準拠したビルド パイプラインを構築できます。
Cloud Build が SLSA 1 をサポート
Google Cloud のホスト型 CI / CD プラットフォームである Cloud Build を使用している場合、すでにソフトウェア デリバリー パイプラインの安全性を確保する最初のステップである SLSA 1 でソフトウェア開発ライフサイクルを運用中の可能性があります。なぜなら、Cloud Build を使用すれば自動化されたビルド パイプラインをデフォルトで作成でき、どの Cloud Build パイプラインでも来歴が自動的に生成されるからです。Cloud Build の来歴はかなり以前から提供されていましたが、ビルド パイプラインの検証目的での使用はさほど一般的ではありませんでした。
ソフトウェア サプライ チェーンが SLSA 1 を満たしているからといって改ざんから完全に保護できるわけではありませんが、初歩的なコードソース特定を行うことができ、CI / CD システムのプロダクトではないソフトウェア デリバリーから保護されるため、脆弱性の管理にも役立ちます。同時に、Cloud Build はホスト型ソフトウェア ビルドシステムの基盤となるもので、検証可能なソース管理や、来歴の自動検証のような手法、Binary Authorization のようなツールを使用して、より高い SLSA レベルに到達できます。
今すぐ始める
完全に自動化されたビルドプロセスの作成、本番環境のワークフローにおけるビルドシステム使用の必須化、Cloud Build を使用したソフトウェア パイプラインの構築といった手法をとれば、最初から SLSA 1 のサプライ チェーンを実現できます。
まずは、Docker イメージの作成と Artifact Registry へのイメージの push に関する Cloud Build クイックスタートの手順と、Cloud Run へのコンテナ化されたアプリケーションのデプロイのクイックスタートの手順を順に実施してください。
SLSA の詳細については、こちらをご覧ください。
デベロッパーとして自社のソフトウェアのセキュリティを向上させる方法についてさらに詳しくお知りになりたい場合は、このトピックを深く掘り下げる、ソフトウェア サプライ チェーンにおける信頼の構築と題するイベントにご参加ください。こちらから登録してライブイベントに参加できます。または、オンデマンドで視聴することも可能です。
-シニア デベロッパー アドボケイト Dustin Ingram