福岡のホームページ制作会社

  1. 業務で開発したコードをGitHubで公開すると何がまずいのか?

COLUMNコラム

業務で開発したコードをGitHubで公開すると何がまずいのか?

昨日から、こちらの記事の内容が話題になっています。


三井住友銀行などのソースコードが流出 “年収診断”したさにGitHubに公開か


記事の内容については、三井住友銀行(SMBC)の委託先企業に務めるエンジニアの方が、
同行のシステムに関連するソースコードを、GitHubに無断で公開したというものです。


無断で公開したと聞くと確かにまずそうな感じがしますが、
無断公開した事でどのようなリスクが考えられるのでしょうか?


今回は記事内に出てきている、「GitHub」や「GitHubとGit」の違い、
「GitHub」に公開した場合、どのようなリスクがあるのかまとめてみたいと思います。


Gitとは?



GitHubをGoogleで検索を行うと、GitHubは「ソースコード管理サービス」と結果が出てきます。


確かにGitHubは「ソースコード管理サービス」なのですが、
それらの検索内容を読み進めていくと、似たような言葉でGitという単語が出来てます。


GitHubを理解する際、まずはGitを理解しておく必要があります。


Gitは「ソースコードのバージョン管理を行うためのツール」です。


Gitは無料のオープンソース化されたツールで、
以下のURLからダウンロードして使うことができます。


https://git-scm.com/


Gitは自分が使っているPCにインストールして使うツールになります。


そんな、Gitをインストールしてプログラム開発をすると、どんなメリットがあるのか?
大きく分けて2つのメリットがあります。


1.変更履歴を全て残すことが出来る


皆さんは誰かと同じファイルを編集していて、いつの間にかファイルが過去状態に戻っていたり、
自分が編集した箇所が消えてたりした経験はありませんでしょうか?

私も昔、チームで共有していたファイルを、何時間も掛けて一生懸命編集したのに、
その変更を後から上書きされた上に、戻せなくなり泣きそうになった事があります。

Gitを使うとファイルに変更を加えた際に、「誰が」「何時」「どんな変更を加えたのか」が全て記録されます。
また、変更履歴が残っているので、過去の時点に戻す事も可能です。

Gitの使い方などをまとめると長期連載化してしまうので、こちらのサイトを参考にしていただければと思います。

2.チームでファイルを共有して編集が可能



会社にいるとチームで仕事をする事がほとんどです。


チームで同じファイルを共有して編集した時に、
自分が変更した内容が他のメンバーが編集した箇所と被っていた場合、
どうするのが良いでしょうか?


私は編集した箇所が被っている事がそれぞれの編集者に通知されて、
被った箇所はどちらが正しい状態か、編集者同士で話あって、正しい状態を決めるのが
一番良いのではないかと思います。


Gitにはこの機能が備わっており、もし自分が編集した箇所が、
他のメンバーと被っていた場合に、通知してくれます。


これらのメリットからもわかるように、Gitはチームでファイルを共同編集する時に、
一番力を発揮してくれるツールになります。


GitHubとは?



GitHubはWebブラウザで接続可能な「ソースコード管理サービス」です。
自分のPCからGitで編集した内容を、GitHubに反映(push)する事で、チームのメンバーと、
変更した内容や履歴を共有する事ができます。


また、チームのメンバーがGitHubに反映(push)した内容を、自分のPCに落としたり(pull)出来るサービスになっています。


インターネットに繋がっていれば、場所を選ばずにソースコードを共有できるため、
リモートワークで、チーム開発を行う場合などは必須のサービスとなっております。


以下のURLからアクセス可能で、アカウントを作成すれば、
基本機能は無料で使えます。


https://github.co.jp/


※チームでプログラム開発を行う機能は、有料版で提供してたりするので、
 必要に応じて、有料版を契約するのが良いかと思います。


また、GitHubの他に同じようなサービスは複数あり、
「bitbucket」や「GitLab」などがそれらにあたります。


GitHubにソースコードを公開すると、どういったリスクがあるのか?



GitHubでソースコードを管理する際に、
その内容を「Public(公開)」か「Private(非公開)」にするか選択することが出来ます。


「Public」にした場合は、その内容はGitHubアカウントを持っている
全ユーザーが参照出来るようになります。


「Private」にした場合、管理者からアクセスの許可を与えられたGitHubアカウントしか、
参照出来ないようになっています。


オープンソースなどより良いものを皆で作るためにソースコードを、
「Public」にしているものもありますが、基本的に仕事でソース管理を行う場合は、
「Private」で設定を行います。


記事の内容にもありましたとおり、今回問題となっているのは、
三井住友銀行(SMBC)のシステムや、その他のクライアントのソースコードを、
「Public」にして全てのユーザーが参照出来るようにしていたことにあります。


この場合のリスクとして、私が思いついた限り、以下のようなリスクがあると考えております。


1.ソースコード内にデーターベースやAPIへの認証情報が直書きで記載されていた場合、そこから個人情報などの情報漏洩につながる可能性がある
2.ソースコードのバグをついて攻撃される可能性がある
3.ソースコードを使って、同業者が同じようなシステムを構築・販売してしまう


1.に関しては、認証情報を変更すれば対応出来るかもしれませんが、
2.に関しては範囲が膨大なので、かなりのリスクとなる事が予想されます。
(記事内にSMBCより「顧客情報の流出やセキュリティに影響がないことを既に確認している」との発表があったとあるので、2.に関してはある程度の確認を済ませているのかと思われます。)


3.に関してはシステムの内容にもよりますが、ものによってはそのシステムの価値を著しく下げてしまう可能性があります。
(例えば、誰も思いつかないような革新的なアプリを開発していたのに、そのソースコードが公開された事で、同じようなアプリが乱立して、そのアプリの価値が下がってしまう場合など)


また、その他にもプログラムの著作権などの問題もあるため、かなり大変な事になる事が予測されます。


まとめ


コロナ禍でリモートワーク化が加速する中で、
「GitHub」などの「ソースコード管理サービス」はなくてはならないサービスだと思います。


ただ、インターネットに公開されているサービスを扱う際は、
正しい使い方などを把握していないと、とんでもない事態に発展する可能性があることを、
今回の事案で再認識する事が出来ました。


リモートワーク関連で新しいサービスを導入する際は、注意が必要となりそうですね。


長々と書いてしまいましたが、最後まで読んでいただきありがとうございます。


この記事を書いた人 長濱 靖知 Creative & Development Division