エンジニアの理解不足によりGitHub経由で過去に手掛けた三井住友銀行(SMBC)やNECなどのソースコードが流出した事件は、開発者にとって厄介な事態を引き起こす懸念がありそうです。
GitHubは企業での開発現場でも使われており、よくわかっていない上司が問題の本質を理解しないまま禁止を出してしまうと、開発効率の低下と混乱を引き起こす可能性に警鐘が鳴らされました。
確かにソースコード流出は企業の信頼やセキュリティに対して大きな問題を突きつける可能性がありますが、そもそも使い方もわからずサービスを利用していることが原因だったのも事実です。改めてGitHubか何であるのかを正しく理解した上で、利用に関するポイントを詰めておきましょう。
Contents
話題になったGitHubとは?
「GitHub」はソフトウェア開発に欠かせないソースコードのバージョン管理をクラウド上の「Git」リポジトリで行い、さらにブラウザ上のツールを使ってバグやWikiを共有することでチーム開発を支援するWebサービスです。
高度な機能を使用する場合には費用がかかりますが、基本的な機能であれば無料で利用でき、作成するリポジトリの数や共同開発者の数にも制限はありません。
GitHubに登録されているリポジトリの数は、2021年時点で1億以上あるとも言われ、マイクロソフト社が開発する有名なエディタの「VSCode(Visual Studio Code)」もGitHub上で開発が進められており、その他にも多くの企業がGitHubを採用しています。
ソースコード流出で問題となった点は?
1月29日、三井住友銀行(SMBC)は同行のシステムのソースコードが流出した事件が話題になりました。
流出の原因は、委託先のシステムエンジニアが自分で書いたソースコードから年収を診断できるWebサービスを利用するため、自身のGitHubリポジトリに委託開発を行った同行のシステムのソースコードをアップロードしたことでした。
さらにTwitterで「転職の準備のために現在あるコードを全てアップした」とつぶやいた事で他のTwitterユーザがソースコードの流出に気付き、情報が多くの人に拡散され、世間を騒がす大きな問題となりました。
公開されたソースコードに個人情報が含まれておらず、同行もQAページで「公開されたソースコードにお客さまの個人情報が含まれているという事実はございません。」と発表しています。
しかし、業務内で作成したソースコードはたとえ自身が書いたコードであっても個人の所有物にはならず、エンジニアが所属する企業か委託元の顧客企業に帰属するため、今回のソースコード流出は情報漏えいのインシデントにあたります。
情報漏えいとなった理由
今回のソースコード流出が発生した理由には、大きく次の2つの要因が考えられます。
1つ目は、GitHubなどを始めとするITサービスに対するエンジニアの知識不足です。昨今ではAWSやAzureなどを使ったクラウド開発なども増え、知識不足に起因する設定ミスなどで著作物や個人情報が外部に流出する事件が多く発生しています。
2つ目は、ソースコードなどの著作物に対する情報漏えい対策不足です。個人情報(氏名、住所、クレジットカード番号など)に対するセキュリティ意識が高い企業は多いのですが、ソースコードなどの著作物に対する情報漏えい対策が行き届いていない企業は多いと考えられます。
一部の大企業などでは端末やクラウド利用監視ソリューションを導入して対策をしていますが、日本のIT業界は多重下請け構造であり、主にプログラム開発を行うのは下請けの中小企業であるため、そういったソリューションの導入には手が回らないのが実情です。
また、今回の流出問題では多重請負の途中にある業者が倒産していると、責任追及が途切れてしまうという業界構造の問題も発覚しました。
GitとGitHubの違い
「Git」と「GitHub」は名前が似ており混同してしまいがちですが、簡単にこの2つの違いについて説明していきましょう。
まず、Gitとはソースコードのバージョンを管理するシステムのことで、ソースの変更履歴をリポジトリで管理し、ある時点との差分を確認したり、過去のバージョンにソースを戻したりすることを可能にします。
それに対して、GitHubはGitリポジトリをクラウド上にホスティングするWebサービスで、ソース管理に加えてバグの管理やWikiによる情報共有などのコラボレーションツールも提供して開発者を支援するものです。
また、GitHubは公開されているオープンソースプロジェクトのコードを閲覧、スター(★)による評価、他人のリポジトリを自分のリポジトリにコビーするフォーク機能などのコミュニティ機能も備えています。冒頭でも述べたように、高度な機能を使わない限りGitリポジトリや各種ツールが無料で使えるため、多くの開発者に利用されています。
GitHub利用は運用ルールの厳守が必要
ソフトウェア開発ではソースコードのバージョン管理を行い、変更履歴の追跡を行うことはとても重要で、GitやSVNなどのバージョン管理システムは今や開発者に必要不可欠なツールとなっています。
一部のモラルに欠ける人の為にGitHubの利用を禁止し、開発効率を低下させるのは好ましくないため、ルールを厳守しながら運用していくことが必要です。
ルールの策定にあたり、まずは企業におけるGitHub管理者を立て、「リポジトリ作成」「公開/非公開の設定」「共同開発者の登録/管理」などを行い、プロジェクトを離れたメンバーがいれば速やかに共同開発者から削除を行います。さらに、必要に応じてGitHubのセキュリティログなども監視して不正な操作がないかも確認します。
開発者においては、Gitの「プッシュ」「プル」「コミット」などの基本操作に対する知識に加えて、クラウド上にあるGitHubでは設定ミスやルールから外れた操作をすると、気付かないうちにソースコードなどが漏洩してしまうリスクを事前に理解しておく必要があります。
また、運用ルールとして「git-flow」などを用いたブランチ管理、セキュリティ面の運用ルールとして職場以外からのGitHubへのアクセス禁止などのルールを設けて、それを厳守するようにします。
GitHubは機能豊富なので事前知識も大事ですが、それと同じぐらい運用ルールの策定も大事であることを理解しておきましょう。
GitHubに限らずどのサービスでも情報漏洩はおきうる
世の中には多種多様なWebサービスがあり、そのいくらかが基本無料で提供されています。無料サービスが悪いというわけではありませんが、そのサービスを利用した時点で何かしらの情報漏えいに繋がる可能性はゼロではないことに注意が必要です。
無料のWebサービスは広告収入やサービス利用者から集めた情報で利益を上げていることもあるため、サービスを利用する前に「なぜ、そのサービスは無料で提供できるのか?」を考えてみましょう。
そして、答えの多くは利用規約から見つけることができるため、最初に利用規約を一読することで、どのようなリスクがあるのか事前に知っておきましょう。
今回のGitHub以外でも、メールの操作ミスや仕様の理解不足による設定ミスなど、人的ミスによる情報漏えいは過去幾度も起こっており、クラウドソーシングやテレワークなど、自宅から業務データにアクセスする機会は増えています。
自分が業務で触れている情報がどんなものであるか、どのように扱うべきかを改めて見直し、Webサービスは正しく理解して取り扱うようにしておきましょう。