ソースコードとドキュメントの管理

開発現場ではソースコードと設計書や仕様書などのドキュメントを使用します。
これらは開発現場の資産であり、外に流出することのないように、適切に管理をする必要があります。
流出は、資産が単に外に流れただけでなく、知識と悪意を持った第三者にシステムを攻撃されるリスクにもなります

Gitと流出対策

多くの開発現場では、ソースコードやドキュメントは分散型バージョン管理システムのGitで管理されます。
Gitを使用する際には、資材が外部に流出しないように注意する必要があります。

  • プライベートリポジトリ
    GitHubやGitlabのようなOSSのGitシステムを用いて資材を管理する場合は、リポジトリの公開設定としてパブリックとプライベートがあります。
    セキュリティを意識する場合は必ずプライベートを使用します。

    プライベートに設定すると、プロジェクトの管理者に招待されたユーザーのみが、リポジトリにアクセスできるようになります。
    パブリックに設定すると、リポジトリはURLを知る誰でも資材にアクセス可能になり、資材を全てダウンロードできる状態になります。

    プロジェクトの方針であえてソースコードを公開し、ブラッシュアップのために有志を募るなどの特別な場合を除いて必ずプライベートに設定します。

  • SSHの使用
    OSSのGitで資材にローカルPCで取得する場合、大きく分けて公開鍵認証のsshか、httpsを使用した方法があります。どちらも一長一短ありますが、基本的には公開鍵認証のsshを推奨します。

    公開鍵認証のsshは以下のような方式です。
    ①ローカルPCでパスワード付きの秘密鍵と公開鍵を生成
    ②公開鍵をOSSのGitに登録
    ③ローカルPCからGitアクセス時にローカルPCの秘密鍵(+パスワード)とGitの公開鍵の組み合わせで認証
    この方法は秘密鍵ファイルとそのパスワードが同時に流出しない限りは、不正アクセスの心配のない非常にセキュアな方式です。

    httpsの場合は公開鍵認証のsshの①②の過程がなく、③の認証の代わりにOSSのGitのログインIDとパスワード(GitHubの場合は個人アクセストークン)で認証を行います。こちらの方式の方が、公開鍵認証のsshより手順が少なくて、アクセス時の認証も明確に速いです。GitHubではこちらの方式が推奨されています。

    基本的にはこの方式でもセキュリティ上は問題ないですが、ログインIDとパスワードなどが流出した場合には、資材への不正アクセスの危険性があり、公開鍵認証のsshの方がセキュリティ上はより強固です。
    そのため、このカリキュラムでは公開鍵認証のsshを推奨します。

その他の流出経路

 開発する上では資材が流出するケースを解説していきます。

  • メール/SNS
    私用や社用問わず、メールやSNSは流出のリスクになります。メールの宛先間違いや、私用のSNSでの開発資材のアップロードでの流出のリスクは当然として、社内メール、社内SNSでも注意が必要です。基本的にどの現場でも開発資材はプロジェクト関係者にしか閲覧できないようになっていますので、プロジェクト外の人に閲覧されるリスクがある状態で、メールやSNSに資材のファイルそのものをアップロードすること、ソースコードを貼り付けるのは控えましょう。

    例外としてはドキュメントの受け渡しや、開発者間のコード共有をメールやSNSで行う場合などがありますが、セキュリティとしてはGitなど別の手段を講じた方が賢明です。

  • 外部記憶装置
    USBフラッシュメモリやSDカードなどの外部記憶装置も流出の原因になります。資材が入った状態の外部記憶装置は紛失や盗難によって流出のリスクに晒されています。外部記憶装置は極力使用しないことを推奨します。もし使用する場合でも外部記憶装置を本当に使わなければいけないか、別の代替手段はないか検討しましょう。
    昨今はリモートワーク用に外部から安全に現場のPCにリモート接続できるサービスも増えているため、スタンドアローンのシステムからデータを現場のイントラネットに移すというような特殊なケース以外であれば外部記憶装置の代替手段はあるはずです。

  • フリーWi-Fi
    リモート作業時に使用するWi-Fiも流出のリスクになります。外出先でのフリーWi-Fiは使用するべきではありません。鍵なしや通信の暗号化がされておらず通信内容を盗み見られる可能性やそもそもデータを盗むために設置された悪意のあるフリーWi-Fiの可能性があります。また原則外出先でフリーWi-Fiは使用せず、職場のWi-Fiや自身の携帯回線のテザリングかポケットWi-Fiなど身元が確かなものを使用しましょう。

  • ショルダーハッキング
    外出先でのリモート作業は流出のリスクになります。特に注意すべきは第3者によるショルダーハッキング、つまり覗き見です。これの対策は、角度がつくと不透明になるシートを貼るなどがありますが、そもそも外出先などの第三者のいる空間で作業をすること自体を控えるのが賢明です。

  • 外部サイト/フリーソフト
    外部サイトやフリーソフトの利用も流出のリスクになります。インターネット上にはJSONやSQLをきれいに整形したり、貼り付けた文字数をカウントしたりできる便利なサイトやフリーソフトがたくさんあります。しかしそう言ったサイトやフリーソフトにプロジェクトの情報を入力すると、悪意ある開発者やその脆弱性を突いた第三者などに情報を抜き取られる可能性があります。JSONにはサーバーとの通信に関する情報が含まれる可能性がありますし、SQLはそのままDBの情報が記載されており取り扱いは慎重にしなければなりません。便利でも危険なのでそう言ったサイトや、身元不明のフリーソフトは利用せず、別の手段を使用することを推奨します。

    目次に戻る