2021年一次予選の問題文は次のとおりです。
貴方は情報セキュリティに関する専門家としてコンサルティング業務を行っています. 顧客企業から次のような相談が来ましたので,この相談に対してアドバイスをしてください.
―――――――――――――――――――――――――――――――――――――――――――――
私どもの会社は、新型コロナウィルスが猛威を振るう中でリモートワークを促進するためのアプリケーションを開発し、好評を得ています。リモートワークアプリでは一般業務における共同作業を支援する機能を多数備えていますが、これらの技術を発展させて、新たな共同作業支援アプリを開発しました。新サービスは、近年ニーズが高いWebサービス開発をリモートワークで実施する、リモートWebサービス共同開発サービスになります。まだサービス開始したばかりですが、興味を持っていただける企業がいくつかあり、少数の企業様にサービスを提供しています。
このサービスはクラウドベースの開発・実行環境となっており、開発プロジェクトに適した環境のパラメータ(開発言語、ライブラリ、実行環境等)を入力することで、Webサービスを実行するための仮想マシンと、開発環境であるdockerコンテナのイメージを自動生成してくれます。仮想マシンは常時クラウド上で実行されており、開発したプログラムコードをその上で実行することで、Web上でサービスの動作テストをすることができます。一方、開発メンバは開発環境のdockerイメージを使って自身のPC上でdockerコンテナを起動するだけで、すぐに共同開発作業に参加できます。このdockerイメージは開発プロジェクトの専用ページからダウンロードできるのですが、その際に自分の好みのツール等を入力していただくことで、各メンバの嗜好に合わせてカスタマイズされた、各メンバ専用のdockerイメージを作成することも可能です。これにより、好みのエディタやツール等をメンバ毎に選ぶことができます。もちろん、コンテナに直接接続して開発していただくこともできますが、お好みのWebブラウザからコンテナにアクセスしていただきますと、エディタやファイルマネージャ、ビデオ会議機能が統合された、より快適な環境で作業していただくことができます。また、クラウド上の仮想マシンにはこの開発用dockerコンテナからしか接続できず、通信路も暗号化されますので、セキュリティの面でも安心してご利用いただけます。
共同開発作業においては、仮想マシンと各メンバのdockerコンテナの全てが同じソースコードを共有しており、誰かがコードを編集すると素早く同期され、最新の修正が反映される仕組みです。つまり、複数のメンバが同じファイルを同時に編集することができるようになっており、作業場所が離れていても常に最新のソースコードを共有している状態になります。一方でソーシャル面においては、各メンバはビデオ会議により接続され、音声と動画を用いたシームレスなコミュニケーションが可能になります。開発チームはビデオ会議で接続されて自由にコミュニケーションをとりながら、一体感をもってコーディングを進めることができます。これは、メンバがそれぞれ異なる場所で作業しながら、チーム内のコミュニケーションを補い、お互いの知識を集約した効率の良い開発を行うために効果を発揮します。例えば、最近ではペアプログラミングやモブプログラミング等の技法が話題になっていますが、このような生産性を向上する方法論も適用できると思います。
本サービスの特徴的な点は、メンバのdockerコンテナ上で部分的に実行環境が構築されており、Webサービスにおける任意のモジュール単位の実行テストを実施できることです。メンバを複数のサブグループに分割して各モジュールを担当するような場合には、各サブグループにファイルの編集・閲覧権限を柔軟に設定して、サブグループ毎に独立した開発活動ができるようになります。このために、デバッグのためにモジュール単位の実行シミュレーションがdockerコンテナの中でできるようになっています。つまり、モジュールのデバッグ作業は個人のPC内で完結しますので、各メンバが並行してデバッグ作業を実施できるようになっています。もちろん、グループ内の誰かがコードを編集している最中に他の人がコンパイルや実行をしてしまうとエラーになりますから、このような現象を防ぐために、メンバが一部のファイルの同期を一時的に解除してローカルで試行錯誤をする機能などが搭載されています。これらの機能と、ビデオ会議をグループに分割できる機能を併用することで、柔軟にグループ編成を変更しながら開発作業を同時並行に実施することができます。
チームメンバも柔軟に編成できるように工夫されています。開発メンバの作業場所が分散している状況では、IPアドレス等による所属企業の認証は十分に機能しません。そこで、多要素認証等により十分にセキュリティが確保されたG社のアカウントを用いたソーシャルログインを採用しました。つまり、開発メンバにはG社のメールアドレスを取得してもらい、そのメールアドレスを本サービスに登録することで開発チームに招待します。招待された開発メンバは、そのアカウントにより、OAuthを用いたソーシャルログインを通じて開発プロジェクトにログインできます。このことにより、自社の社員だけでなく下請け企業のエンジニアや、場合によってはクラウドソーシング等で集めたエンジニア等もチームに含めることができ、状況に応じた自由な開発チームの編成に対応できます。
招待された開発メンバは、先述の通り、ダウンロードしたdockerイメージを使ってdockerコンテナを起動することで、開発プロジェクトに参加します。dockerコンテナを起動すると、自動的にファイルが同期されてチームに合流できますが、作業場所のネットワークに応じて柔軟に接続動作を変更できます。例えば、外出先のカフェ等で作業をしている場合は、通信コストがかかるかもしれません。そのような場合には、ビデオ会議の動画や音声をOFFにして通信量を節約することが可能です。万一オフラインの場合にはdockerコンテナだけでも開発はでき、再接続時には同期されて自動的に最新の編集内容が反映されるので、場所を問わずに開発作業を行えます。また、自宅のWi-Fi接続が安定しないことはよくありますが、本システムではこれにも対応します。つまり、ブロードバンド環境下では、まず音声を、ついで映像を優先して通信し、余った帯域でファイル同期を行います。さらに、dockerイメージがあれば作業ができますので、自宅とオフィスなど複数のPCで作業をすることも可能で、常に一台のノートPCを持ち歩かなくても開発作業ができます。このように、働く場所を問わず、その環境に応じて柔軟に対応してくれる利便性は、在宅で働く方には評判が良く、他社と差別化する機能と自負しています。
サービス開始から暫くの間は特に問題は起こらず、顧客からも一定の支持を得ていたのですが、先日ある顧客から、開発したプログラムコードが改変されているというクレームがありました。自分が開発したコードが勝手に書き換えられており、誤った動作をするように変更された箇所があるとのことです。もちろん、チーム開発なので他の人にも編集権限は設定されていましたが、彼らに聞いても知らないと言っているそうです。また、セキュリティホールがあることを発見して修正した箇所が、元のコードに戻されていたこともあるそうです。悪意ある外部の誰かによってコードが編集されていると思われるので、早急に本サービスのセキュリティについて調査をするようにと要求をしておられます。本プロジェクトのチームリーダに聞いたところ、プロジェクトは60人月程度で完成させる開発案件であり、納期に余裕がないため外部からも急いで人を集めて編成したチームだそうですが、一人一人面接をして技術力に信頼がおけそうな人を選んだので問題はないはずだと言っています。実際に、この問題以外はプロジェクトは順調に進んでおり、スケジュールの半分以上を問題なく消化できているそうです。
このようなトラブルが起こると我々のサービスの信頼感は崩れますし、先方のシステムの納期にも余裕がなく、チームメンバも動揺しているとのことで、すぐにでも解決をして欲しいとのことです。どのような原因の可能性があり、どのように調査や対応をすれば良いのでしょうか。今後の対処方法について、アドバイスをいただけると助かります。また、もし本サービスの設計に問題等ありましたら今後の改善につなげたいと思いますので、お気づきの点がありましたらご指導ください。
お手数をおかけしますが、どうぞよろしくお願いします。
〇×フューチャーシステムズ 大熊猫三郎