CI/CDパイプラインの概要

CI/CDパイプラインの重要性

「DS-310政府情報システムにおけるクラウドサービスの適切な利用に係る基本方針」 [4]は、クラウド・バイ・デフォルト原則の適用効果として、政府情報システムにおける「効率性」「セキュリティ水準」「技術革新対応力」「柔軟性」「可用性」といった非機能要件の向上を見込んでいる。同文書は、クラウド環境下での政府情報システム運営を最適化するにあたって「アジャイル的な手法を重視すべきである」とも述べている。これはソフトウェアベースのシステム提供が開発フェーズから運用フェーズに移行したとしても、絶えず変化する業務環境や技術への適応のために継続的な改善を必要とするからである。また、それらの変化のスピードが速くなっているため、継続的な改善をするための業務を、品質を維持したままより高頻度に「自動化」していかなければならない。

一般的に、改善したシステムをリリースする場合、作業者がソースコードや設定ファイルに対する作業を実施し、品質保証をした上で、情報システム管理者等が成果物の生成と実行環境への配送及び実行[^1]をするといった一連の業務プロセスを経る。この一連の作業工程を自動化したシステム・コンポーネントが、CI/CDパイプラインである。したがって、CI/CDパイプラインは、クラウド・バイ・デフォルト原則の政府情報システムに則った運営には不可欠である。

CI/CDパイプラインは重要であると同時にリスクの高いシステム・コンポーネントである。第1に、実行環境への配送及び実行が可能ということは、本番環境へのリリース権限を有しているためである。第2に、CI/CDパイプラインが取り扱うソースコードは、アプリケーションの元となるソースコードだけでなく、IaaS等のインフラを管理する設定ファイルやIaCテンプレートファイルも含むためである。つまり、CI/CDパイプラインは、アクセス権限や暗号鍵といった重要なリソースを変更可能であり、また、エンドユーザーが実際に利用するシステムをリリース可能な高い権限を有するシステム・コンポーネントである。

今後の政府情報システムにおける改善を迅速的且つ継続的に実施するにあたり、CI/CDパイプラインは必要不可欠であると同時に、政府情報システムを侵害する経路となる重大なリスクにもなり得る。政府情報システムの開発・運用・保守を内製する場合でも、業務委託をする場合でも、CI/CDパイプラインを標的とするような脅威を想定し、リスク管理をしなければならない。

CI/CDパイプラインの全体像

CI/CDパイプラインの概要図を次に示す。

CI/CDパイプラインは次のようなフェーズがある。

  • ローカル作業フェーズ: 主に作業者がソースコードや設定ファイルに対する作業と検証を行うフェーズである。作業者は手元の端末や統合開発環境(IDE)で作業をし、その内容をソースコード管理システムに送る。

  • ビルドフェーズ: 最新のソースコードや設定ファイルを元とした成果物の生成、検証・テスト、保管を行うフェーズである。CI/CDパイプラインのうち、CIがこれに当たる。

  • デリバリフェーズ:成果物の実環境への配送と実行を行うフェーズである。CI/CDパイプラインの内、CDがこれに当たる。

また、情報を保管するストレージには次のようなものがある。ソースコード管理システム(SCM): ソースコードのバージョン管理をするシステムである。ソースコードを変更した主体と差分を変更履歴として保存する。

  • アーティファクトリポジトリ:ビルドフェーズで生成した成果物を保管するシステムである。

  • シークレットマネージャー:アクセストークンやサービス同士の通信で利用するサービスアカウントのシークレットを保管する。

これらストレージは保管する以外にも、様々な機能を有することがある。例えば、アーティファクトリポジトリは保管された成果物のセキュリティスキャンを実行する機能を有するものも多い。

先述した図に記載されていないが、CI/CDパイプライン、CI/CD、各種ストレージは、それぞれがアクセス制御管理機能を有する。

また、それぞれの提供形態は、SaaSのような第三者によるサービス提供や政府情報システム管理下のサーバやコンテナホスト等でホスティング[^2]する形態が主に考えられるが、これらに限定されるものではない。