ガバメントクラウドにおけるリポジトリ運用の課題と対策
はじめに
2024年7月、AWS CodeCommitのサービスが終了するのでは、という情報が流れて、AWSユーザを中心に騒ぎとなりました。その状況を振り返りつつ、標準準拠システムの構成管理のあり方について考えをまとめています。
ただし、自治体標準化に関するステークホルダーは複雑で、事業者といっても立場が全く違います(パッケージ開発ベンダもあれば、運用のみを行うベンダもいますし、それぞれの担当とするスコープも異なります)。システム開発においてはアーキテクチャやミドルウェアの制約に依存してCI/CDなどの施策がやりづらい場合もありますし、各事業者の社内のセキュリティポリシー上、インターネット公開された外部SaaSの利用が禁止されているケース等もあります。新しいツールは学習コストもかかります。構成管理システムの選定にはこれらを考慮して決定していきますので、一概にこの方式が望ましい、と決められるものではないため注意が必要です。
なお、本記事では以下については取り扱いません。専門用語はそのまま説明なく用いますのでご承知おきください。
構成管理の基本的な知識(Gitとは、SVNとは、Git Hubとは等)
自治体標準化及びガバメントクラウドの基本的な知識
AWSの基本的な知識
また、AWSやガバメントクラウド等の要件についても随時見直される可能性があります。本記事の内容を業務で活用される場合は、最新の情報を再度確認をお願いします。
CodeCommitの新規停止について
AWSチーフエヴァンジェリストのJeff BarrさんがXにてCodeCommitを含むいくつかのサービスの終了について、投稿しています。
この件について、クラスメソッドさんのブログに経緯や状況がまとめられています。
なお、X上でp0nさんが以下投稿されているように、Organizations内のアカウントであれば過去にCodeCommitリポジトリがないメンバーアカウントでも制限なく新規リポジトリが作成できたようです。
ガバメントクラウドでは特に問題なく利用できる可能性があります。
なお、AWSでは、既存ユーザ向けにCodeCommitから他のGitホストサービスへの移行手順が紹介されています。
自治体市場における現状のリポジトリ運用の整理
さて、一般的なシステム開発において、ソースコードの構成管理(SCM)はリポジトリを運用することが多いです。最近はGitが一番人気ですが、その他、SVN(Subversion)やかつてのTFS(Team Foundation Server)のTFVCをそのまま利用していることもあるでしょう。
あまり望ましくないですが、人力での構成管理としてファイルサーバを利用しているケースもあるとおもいます。
自治体標準化における「標準準拠システム」の構成管理については概ね以下の状況になっていると予想されます。
構成管理手法
ASP事業者がなんらかの構成管理システムを運用しており、標準準拠システムについても同一環境を継続利用する。
あるいは、ASP事業者は標準準拠システムの開発に合わせて構成管理環境を一新して、新規のリポジトリの運用を開始する。
構成管理対象:
パッケージ資産:業務アプリケーションのシステム本体およびオプションの資産のことを指します。
顧客固有資産:ここまではパッケージ資産をカスタマイズしたもの(標準化後はカスタマイズは抑止されるため、基本的には存在しない)や、特定顧客向けに外付けで開発した資産のことを指します。
構成管理主体:
パッケージ資産:
原則、ASP事業者が構成管理する。
顧客固有資産:
ケース1:ASP事業者が構成管理する。
ケース2:自治体が独自に構成管理する。
構成管理システムを検討する上で参照すべきドキュメント
次に、構成管理システムを検討する上で参照すべきドキュメントについて確認していきます。
情報セキュリティポリシーガイドライン上の定義
第一に確認したいのが総務省の発出している「地方公共団体における情報セキュリティポリシーに関するガイドライン」です。
ここではR5年3月版を参照します。ページ数「iv-20」から説明がされていますので一部抜粋します。
一定の制限のもと、インターネット経由で標準準拠システムの修正プログラム適用が認められます。これはとても大きいですね。各社の制限もありますが、GitHubなどの活用が可能です。
ただし、業務システムと直接通信することはできないため、間に更新サーバ・連携サーバの設置が必要です。また、URLフィルタリングなども求められるほか、中から外に取りに行くケースのみ認められると解釈できます。
ガバメントクラウド推奨構成上の定義
これについてはガバメントクラウド推奨構成でも、同様の記載が確認できます。
AWSであれば、本番アカウントとは別に運用管理アカウントを設けること、NAT GatewayやNetwork Firewallなどを組み合わせることなどが記載されていますので、参考にすべきでしょう。基本的にはこの構成に合わせて実装することが望ましいです。
ガバメントクラウドの利用について上の定義
続いて「ガバメントクラウドの利用について」です。現在、2.1版が最新です。
また注釈として以下が説明されている。
ガバメントクラウド上ではASP事業者の利益につながる行為は禁止され、標準準拠システムの開発を行ってはならないと定義されています。ビルドサーバはともかくとして、リポジトリサーバについては、開発環境とは別と考えて良いと思います。
ガバメントクラウド概要解説上の定義
続いて概要解説です。
概要解説上、第3章において「開発環境は提供しない」とありますが、CI/CD環境の提供は認める旨の記載があります。CIだけでも認めるのか、CDもセットじゃないといけないのか、等の定義はありません。手動ビルドを行う場合はビルドサーバはNGで、自動ビルドを行う場合はビルドサーバはOK、と考えられると思います。
なお、CI/CDについて地方自治体向けの定義はありませんが、政府向けにまとめた以下が参考になるでしょう。
ガバメントクラウド利用概要(AWS編)上の定義
続いて利用概要です。ガバメントクラウド利用概要(AWS編)を見ていきます。
開発環境について概要解説と同様の記載がありますがこちらは省略します。ここでは、CI/CDの実践において一部構成で必要になる「アクセスキー」についての記載を確認します。
ガバメントクラウドでは「予防的統制」として、いくつかの操作が制限されますが、特にアクセスキーの作成が制限される点に注目します。
例えばGitHub Actionsなどでアクセスキーを利用してAWS環境にアクセスし、自動デプロイを行うことが考えられますが、これは制限されそうです。ドキュメントにも「早期段階でアクセスキーを利用しない方式を検討する必要がある。」とあります。
構成管理システムはどうするべきか
それでは、標準準拠システムにおいて構成管理システムをどう使うのが良いかを考えます。
なお、現在の構成管理システムが社内のイントラネット上にあり、インターネット接続されていないケースではガバメントクラウドの接続は個別に結線しない限り難しいのでいったんここでは取り扱いません。
先述した構成管理上の定義を振り返ると
一定の制限のもと、インターネット経由で修正プログラムを適用が認められる(OS・ミドルウェア・アプリケーションのいずれもOK)。業務サーバから直接取得することはできない。
推奨構成に従うとベター。
単純な開発環境の構築はNG。CI/CD環境であればOK。方式は問わない
アクセスキーは使ってはならない
と整理されます。パターンに応じて見ていきましょう。
現在の構成管理をそのまま利用する場合(GitHub+GitHub Actions編)
仮に現在GitHubやGitHub Actionsを利用しており、それをそのまま使いたい場合にはどんな課題が考えられるでしょうか。
解釈はいくつかあると思いますが、概ね以下の整理になると思います。
本番アカウントからGitHub上のリポジトリの直接参照はできない(本番アカウントではインターネット接続が一律禁止されるため)。
運用管理アカウント側にGitリポジトリを設置(GitLabやGitHub Enterpriseをホストしてもよいし、単純なGitのBareリポジトリを運用してもよい)し、GitHub上のリポジトリとミラーリングさせることは可能。
GitHub Actionsワークフローでの認証について、アクセスキーが使用できないため、利用は不可能と考えられる。他の手法として、外部IdP連携も考えられるが、こちらもOrganizationsが自由に操作できない以上、実現は困難とおもわれる(ただし、この点についてはデジタル庁に相談すれば例外的に認められる可能性はある)。このため、CDは自前でやるか、CodePipelineなどAWSのサービスを利用する。
なので、もう少しシンプルにまとめ直すと以下の方式が良さそうです。
GitHubのリポジトリをそのまま使う
運用管理アカウント側にGitリポジトリを設置し、GitHub上のリポジトリとミラーリングさせる
GitHubとの通信はガバメントクラウド推奨構成に従う
CD部分は運用管理アカウント側に個別に作りこむ
この方法は制約が多いガバメントクラウド環境下では、比較的実現可能性が高い選択肢と言えるでしょう。ただし、CDの再作り込みは判断が分かれそうです。
リポジトリを変更する場合(ガバメントクラウド以外の環境編)
次に現行のリポジトリ運用を見直す場合です。インターネット経由での接続が可能な場合は、なるべくそれを選んだほうが良いでしょう。基本的には「現在の構成管理をそのまま利用する場合(GitHub+GitHub Actions編)」の最後のまとめを参考に検討とすると良いと思います。GitHubでなくても、セルフマネージドGitとして、GitLabやGitHub Enterpriseオンプレ版などを EC2上に構築・運用することも良い選択です。
変更先もオンプレの場合は先述の通り割愛します。従来通りの運用です。
リポジトリを変更する場合(ガバメントクラウド編)
ではガバメントクラウドに移行させる場合はどうでしょうか。CI/CDとセットでの導入が必須なのは忘れてはいけないポイントです。
そもそも今回のガバメントクラウドの移行にあわせて、このリポジトリをわざわざガバメントクラウドに移管させる必要はありません(認証や閉域接続など、利用における制限がいろいろあるので、不自由な環境での開発はなるべく避けたいと思われる)。一方で、効率化のために以下のようなケースで、ガバメントクラウド上に一部機能を移管させる可能性もあります。
CI/CDパイプラインをガバメントクラウド上で完結させたいケース
CI/CDパイプラインまではやらないが、効率的なシステム保守(パッチ適用の自動化など)のためにガバメントクラウド上にリポジトリを再現したいケース ※アーティファクト(成果物)のみをミラーリングする等も考えられる。
このあたりはASP事業者によってアプリケーションの開発・保守の取り組み状況、開発体制上の優先度などによって判断が変わってくるため、どちらがよいということではありません。
また、移行先についてですが、ガバメントクラウド上での現実的な選択肢としては、セルフマネージドGitとして、GitLabやGitHub Enterpriseオンプレ版などを EC2上に構築・運用することが考えられます。
CodeCommitについては避けたほうが良いと思います。今のところ、ガバメントクラウド(AWS)環境はデジタル庁の運営するOrganizationsの配下のメンバーアカウントが払い出されるようですので、今後も候補のひとつとしてCodeCommitリポジトリを利用することも可能と思われます。ただ、やはりサービスとしては終息に向かっており、他のサービスへの移行手順もAWS社はブログで公開していることから、移管先の候補からは外しておくほうが無難でしょう。
共闘プラットフォーム内での調査結果
現状の状況について、共闘プラットフォームに参加されている事業者に匿名でアンケートをとってみました。ご協力いただいた事業者の皆様ありがとうございました。
ただ、回答数(全体6票、うち事業者は5票)が少なく、それぞれに担当範囲も異なりますので、結果の解釈は注意が必要です。参考程度としてください。
CodeCommitの騒動が標準化プロジェクトに影響ありと答えた回答はなし。
影響あり 0%
影響なし・ほか 100%(5票)
標準化プロジェクトに合わせて、パッケージ資産の構成管理の仕組みを変更するか。
既存の構成管理の仕組みをそのまま利用する 50% (2票)
構成管理の仕組みを変更する(ガバクラ以外) 50% (2票)
構成管理の仕組みを変更する(ガバクラ) 0%
パッケージ資産の構成管理システムと設置場所
オンプレGit 0%
オンプレSCM(Git以外)25% (1票)
セルフマネージドGit(パブリッククラウド)25% (1票)
セルフマネージドSCM(Git以外)かつパブリッククラウド 0%
SaaS型Git 25% (1票)
CSP提供サービス 25% (1票)
顧客固有資産の構成管理主体
ASP事業者が担う 100% (3票)
自治体が独自に管理する 0%
標準化プロジェクトに合わせて、顧客固有資産の構成管理の仕組みを変更するか。
既存の構成管理の仕組みをそのまま利用する 0%
構成管理の仕組みを変更する(ガバクラ以外) 100% (3票)
構成管理の仕組みを変更する(ガバクラ) 0%
顧客固有資産の構成管理システムと設置場所
オンプレGit 0%
オンプレSCM(Git以外)33.3% (1票)
セルフマネージドGit(パブリッククラウド)0%
セルフマネージドSCM(Git以外)かつパブリッククラウド 0%
SaaS型Git 33.3% (1票)
CSP提供サービス 33.3% (1票)
冒頭書いたようにサンプルサイズが小さいため、傾向は推しはかれませんので注意してください。
まとめると、まずCodeCommitの新規停止はさほど影響を感じている人はいませんでした。既存の構成管理は、そのままか、移管するケースでも設置場所はガバクラ以外です。顧客固有資産についてもASP事業者が構成管理するようです。
SCMはGitとGit以外で2:1、オンプレとクラウドで2:1、という比率でした(しつこいようですが、回答数が少ないため参考程度の数値としてください)。
ガバメントクラウド認定要件の見直しについて
最後に余談ですが、CodeCommitの件で気になるのがガバメントクラウドの認定要件です。
この中でマネージドサービス技術要件詳細について2025年度末時点で全要件を満たす必要があります。
そして「別紙1_基本事項及びマネージドサービスの技術要件詳細」に以下の記載があります。
もしAWS CodeCommitが2025年度末までにサービス終了することになれば、「直ちにガバメントクラウドに関する検証作業等の参加資格の対象から除外する」とされていますので、AWSがガバメントクラウド認定ではなくなります。そのための他のCSPへの移行費用はAWSが負担しなければなりません。
今はまだリポジトリ作成もできるようなので、要件外にはならないと思いますが、AWS本体の判断が気になります。
今後この技術要件詳細が見直されるかどうかはわかりませんが、さくらインターネットさんはこの全要件を達成するために今頑張って開発を進めている最中ですから、AWSに合わせて特定の要件が除外されるようではたまったもんじゃないですよね。もちろん国がAWSを有利にさせるために仕様を作っているわけではないはずなので、そのような心配は無用でしょう。
まとめ
さて、今回の記事では、ガバメントクラウド環境の様々な制約を基に、構成管理手法について考えをまとめました。これからこのタイミングで構成管理システムを見直すことはないと思いますが、保守効率化などの観点から見直せそうなポイントがあれば参考にしてみてください。
最後に、ガバメントクラウドの仕様やルールは随時変更される可能性があるため、定期的に最新情報を確認しましょう。必要に応じてリポジトリ運用方法の見直しが必要になるケースがありえますが、構成管理システムの移管は大変なので、慎重に検討しましょう。