GitHubは便利だけど、情報漏洩のリスクがあるのも事実です。
この記事を読めば、GitHubのセキュリティ対策の実践的な方法がわかるので、安心してGitHubを利用できるようになります。
具体的には、セキュリティポリシーの作成、アクセス制限、権限管理、暗号化などの対策を実施することで、GitHub上のソースコードを確実に保護できます。
こうしたセキュリティ対策を徹底すれば、GitHubのメリットを生かしつつ、リスクを回避することが可能なのです。開発者コミュニティの知見も取り入れながら、安全なシステム開発環境を構築していきましょう。
2014年 大学在学中にソフトウェア開発企業を設立
2016年 新卒でリクルートに入社 SUUMOの開発担当
2017年 開発会社Jiteraを設立
開発AIエージェント「JITERA」を開発
2024年 「Forbes 30 Under 30 Asia 2024」に選出
GitHubとは?
GitHubでは、Gitというバージョン管理システムを使って、プログラムのソースコードを保存したり、チームで共有したりすることができます。
具体的には以下のようなことができます。
- ソースコードの変更履歴を追跡
- Gitによってソースコードの差分をすべて記録できる
- 誰がいつ何を変更したかログが残る
- 複数人でのコード編集をコントロール
- ブランチによる並行作業
- Conflictの解決
- プルリクエストによるレビュー
- Issue(課題)の追加やプルリクエストによるコードレビュー
- 機能追加やバグ修正のIssueを立てる
- プルリクエストでコードをレビューし、フィードバックする
- プロジェクトのWiki作成やREADMEファイルでのドキュメント共有
- プロジェクトの概要説明
- ドキュメントや開発ガイドラインの共有
- コミット履歴やコードの変更状況を見える化
- オープンソースライセンスの選択
- ユーザー登録によるアクセス制御
- 組織アカウントによる大規模開発
GitHubはこうした機能によって、チームスケールやプロジェクトスケールを問わず、開発を効率的に進めることを実現しています。
開発者コミュニティにとっても、GitHubは欠かせないインフラとして、多くの人々を結びつける場所となっています。
GitHubの使い方や料金に関しては以下の記事で解説しています。
GitHubのセキュリティの危険性
GitHubのセキュリティに関する危険性には、次のようなリスクが挙げられます。
対策をとってセキュリティを高めましょう。
誤って公開リポジトリに機密情報を含めるリスク
GitHubでの開発中に担当者が誤って公開リポジトリに機密情報を含めてしまうことはよくあるセキュリティリスクです。
APIキーやパスワード、機密データなどの情報が公開されると、悪意のあるユーザーに不正利用される可能性があります。GitHubはリポジトリを公開設定にしてしまうと第三者が閲覧できてしまうため、一度公開された情報がすぐに拡散されることも考えられます。
以下のような対策を行い、機密情報のセキュリティを守りましょう。
- .gitignore ファイルを利用して機密情報が含まれるファイルを追跡対象から外す
- 環境変数を利用する
ユーザーのアカウント情報が盗まれるリスク
GitHubユーザーのアカウント情報が盗まれるリスクも十分にあり得ます。特に多要素認証(MFA)を設定していないアカウントは、パスワードが漏洩して不正アクセスされる可能性があります。
アカウント情報が盗まれないように、次の対策を行いましょう。
- 強力なパスワードの使用
- 定期的なパスワード変更
- 多要素認証の設定
使用するライブラリやパッケージの脆弱性リスク
GitHubで公開されているライブラリやパッケージを利用する際、脆弱性によってセキュリティリスクが生じることがあります。
ライブラリやフレームワークを導入することで開発の速度を上げることはできますが、最新のセキュリティパッチを適用していない場合、攻撃の的になることがあります。そのため、セキュリティの脆弱性が公開されているライブラリは使用を避けるか、安全なバージョンにアップグレードするようにしましょう。
レビュー不足のコードがマージされるリスク
GitHubを使用しているプロジェクトは、コードレビューが品質保証の重要な手段となります。
しかし、十分なレビューが行われずにコードがマージされると、未発見のバグやセキュリティの脆弱性が本番の環境に侵入してしまうリスクがあります。
期限が迫っているプロジェクトや、リソースが不足している場合に発生しやすいリスクです。レビューが不十分だと、将来的に複雑なバグを引き起こし、修正コストが高くつくことがあります。
このリスクには、次のような対策を行いましょう。
- 複数の承認を必須とするポリシーを設定する
- 自動化されたテストとレビュープロセスを導入する
不正アクセスのリスク
GitHubアカウントやリポジトリへの不正アクセスは、重大なセキュリティインシデントにつながる可能性があります。
不正アクセスは、弱いパスワード、古いセキュリティ設定、ソフトウェアの脆弱性を突かれることによって発生することがよくあります。一度アクセスを許してしまうと、機密情報の漏洩、コードの改ざん、さらにはサービス妨害(DoS)攻撃に利用されることも。
このリスクには、次のような対策を行いましょう。
- 強力なパスワードの設定
- 二要素認証の利用
- 定期的なセキュリティ監査
お気軽にご相談ください!
GitHubの安全性を高めるセキュリティ策
GitHubも適切に使えば十分に安全です。社内のルール作りが大切です。
- セキュリティポリシーを作成し社内の意識を高める
- セキュリティポリシーの必要性や実効性のあるポリシー作成のポイント
- Webサイトのアクセスを制限
- SSH鍵や個人アクセストークンを定期的に交換
- デリケートなデータを保護・削除
- 権限付与を慎重に行う
- SECURITY.mdファイルを作成
- リポジトリのセキュリティチェックリストを作成
- インシデント発生時の対応計画を作成
- PR(プルリクエスト)のセキュリティチェックを行う
- プロジェクトに適したGitHubのプランを使用
- 強力なパスワードと2要素認証(2FA)を使用する
- コードを定期的にレビューする
- セキュリティ警告に注意する
セキュリティポリシーを作成し社内の意識を高める
GitHub利用において、社内でセキュリティポリシーを定める意義は大きいです。
具体的には以下の通りです。
- 機密情報の取り扱いルールを明確化
- アクセス権限の管理方針を示す
- 情報漏洩時の対応フローを策定
- 利用者の役割と責任を明示
このため、形式主義的な規則の羅列ではなく、社員一人ひとりが自身の役割を自覚しやすい実効性のあるポリシーを作成することが大切です。
分かりやすい表現と具体例を用い、ガイドラインとしての側面を併せ持つ内容にすることをおすすめします。
セキュリティポリシーの必要性や実効性のあるポリシー作成のポイント
GitHubの利用において、セキュリティポリシーを策定する意義は大きいです。社員一人ひとりが、セキュリティを常に意識できるからです。
具体的なメリットとしては、機密情報の取り扱いをルール化できること、情報漏洩時の対応手順が明確になること、利用者の役割と責任が明示されることなどがあげられます。
実効性のあるポリシー作成のポイントとしては、形式主義的な禁止事項の羅列にならないことが大切です。社員自身が、自分事として捉え行動規範に取り込めることが重要視されます。
具体的には、分かりやすい表現を用いること、イメージしやすい事例を引用すること、文章量を精査すること等がポイントとなります。社内文化に合わせ、セキュリティと生産性のバランスを取った内容とすることが望まれます。
Webサイトのアクセスを制限
会社のネットワークから、GitHubへのアクセスをIPアドレス制限することで、セキュリティを高められます。
具体的には、社内システムからGitHub上のリポジトリにアクセスできるIPアドレスを、社内の開発部門のみに限定します。
こうすることで、仮に社内ネットワークがマルウェアに感染したとしても、開発IPアドレス以外からはGitHubサーバーにアクセスできないようになります。
たとえば、営業部門のPCがマルウェアに感染していたとしても、GitHub上のソースコードにはアクセスできないため、情報流出リスクを抑えられます。
SSH鍵や個人アクセストークンを定期的に交換
GitHubを利用する際に使用する、SSH鍵や個人アクセストークンは、定期的に変更する必要があります。
これらの鍵やトークンは、GitHub上のリポジトリなどにフルアクセスできる重要な情報です。誤って第三者に漏洩してしまった場合の影響範囲は計り知れません。
例えば、SSH鍵が漏洩すると、悪意ある攻撃者にリポジトリの消去や改ざん、マルウェア添付といった行為を許してしまうことになりかねません。
このため、プロジェクトごとに発行しているSSH鍵や個人アクセストークンは、せめて半年に一度は変更するなど、定期的に更新していくことが望まれます。たとえ流出の兆候がなくても定期変更を心がけましょう。
デリケートなデータを保護・削除
GitHub上で、機密性の高い重要データを管理する場合、十分なアクセス制限とデータ削除が欠かせません。
個人情報保護法上の「要配慮個人情報」や、企業の業務上の機密に指定される情報等は、アクセスを絶対に社外に漏らしてはいけません。
このため、やむを得ずGitHub上に保存せざるを得ない場合は、権限を付与するメンバーを社内の必要最小限の人数に限定したプライベートリポジトリの使用が必須です。
併せて、そうした機密データが含まれるコミットログなどの履歴情報についても完全削除を心がける必要があります。
使命を終えた古いデータについても、定期的に削除し、GitHubのリポジトリ容量の枯渇化を図ることが望まれます。
権限付与を慎重に行う
GitHub上でのリポジトリや、企業アカウントの権限付与は、内部不正防止の観点からも慎重に行う必要があります。
基本的な原則として、アクセス権限は業務上必要最小限の範囲で付与するという「最小特権の原則」に基づくべきです。
例えば、システム管理者への一括全リポジトリへの管理者権限付与は危険であり、ある特定プロジェクトのみを担当するエンジニアであれば、関連するリポジトリのみに読み取りやプルアクセスといった、制限付きの権限を付与することが望ましいです。
権限に明確なスコープの制限を設けることで、情報漏洩リスクを抑制できます。単純ミスや内部不正による、大きな事故を防ぐうえでも重要なポイントだと言えます。
SECURITY.mdファイルを作成
GitHubで公開リポジトリを運用する際に、そのリポジトリのトップディレクトリにSECURITY.mdファイルを配置しておくことがセキュリティ対策として重要です。
このファイルでは、ソフトウェアの脆弱性を発見された場合の報告手順や、連絡先情報を明示しておきます。報告者は、この手順に従って脆弱性を開示することができます。
脆弱性が報告されることで、企業としても迅速に対応を取ることができるため、被害を最小限に食い止めることが期待できます。
報告された内容が意図的な攻撃であったとしても、報告用の連絡チャンネルを分離しておけば、サービスへの攻撃そのものを未然に防ぐことも可能です。
このように、GitHub上のセキュリティ対策として、SECURITY.mdファイルの存在意義は非常に大きいと言えます。
リポジトリのセキュリティチェックリストを作成
GitHub上のリポジトリを安全に運用するため、日常的に点検すべきセキュリティ項目をチェックリスト化するメリットは大きいです。
例えば以下のような点をリストに含めて確認していきます。
- 機密データが含まれていないか
- 過剰なアクセス権限が付与されていないか
- ログ記録が有効になっているか
- 入力値検証の実施など、コーディング時の脆弱性対策がとられているか
セキュリティチェックの項目選定にあたっては、過去のインシデント事例や業界動向なども参考に、最新の状況に即した内容としましょう。
こうした取り組みを通じ、リポジトリのセキュリティ水準を着実に向上させるとともに、開発者のセキュリティ意識の醸成にも繋がります。
インシデント発生時の対応計画を作成
コードや機密データの流出など、アクシデントが実際に発生した場合、迅速な対応にあたるためには事前の準備が欠かせません。
対応計画には以下のような内容を定めることが望まれます。
- 情報漏洩が発覚した場合の初動対応手順
- 影響範囲の解析方法や、外部連携先の特定
- 法令等に基づく、公表要件の整理
- 再発防止策の検討プロセス
また、漏洩データの内容に応じた法的対応の判断基準や、信頼回復のための社内外のコミュニケーションプロセスについても事前に定めておきましょう。こうした準備が、対応の迅速化や社会的信頼の維持に繋がります。
PR(プルリクエスト)のセキュリティチェックを行う
GitHub上で開発を進める際、コードの変更差分を含んだプルリクエストを、マージする前に必ずセキュリティ面からも確認することが大切です。
具体的に確認する項目としては、以下が挙げられます。
- 機密情報がコード中に、ハードコーディングされていないか
- 入力値の検証がしっかりと実装されているか
- 権限のチェック処理が組み込まれているか
- エラーハンドリングが適切に行われているか
こうしたチェックを、各プルリクエストごとに確実に行うことで、コードミスや脆弱性が混入するリスクを下げることができます。加えて、頻繁なコードレビューを通じた開発者のスキルアップも期待できるでしょう。
プロジェクトに適したGitHubのプランを使用
GitHubでは、プロジェクトの性質やチーム規模に応じて複数の優れたプランが用意されています。
無料プランである、Public GitHubはオープンソースを中心に大変優れたサービスですが、商用システム開発には機能面で制限があります。
有料プランのEnterpriseプランを利用することで、プライベートリポジトリの数やストレージ容量の制限が大きく緩和されます。また、アクセスコントロールの細分化により、リポジトリやコードへのアクセス許可を柔軟に変更可能です。
1人から10人程度の小規模チームであればTeamプランを利用し、大規模なチームであればEnterpriseプランを利用することをおすすめします。
機密保持が必要な商用システムを安全に開発するには、GitHubの有料プラン利用が欠かせません。
強力なパスワードと2要素認証(2FA)を使用する
GitHub上の重要なソースコードや機密データが流出する被害を防ぐ第一歩は、不正アクセスを確実に阻止することです。
そのためには複数の対策を組み合わせることが有効です。
具体的には以下が推奨されます。
- 最低12文字以上、記号を含むランダムな強パスワードを設定
- 認証アプリやU2Fなどを用いた、2要素認証の活用
- 一定期間やサインイン回数ごとに定期変更
- パスワードは、社内ルールに沿った複雑度を遵守
こうした対策を徹底することで、GitHubアカウントやリポジトリの不正利用リスクを大きく低減できます。コードや機密データの守るべき資産を確実に保護できるでしょう。
コードを定期的にレビューする
自社やオープンソースのGitHubリポジトリについて、コードやスクリプトを定期的にレビューするプロセスを確立することでセキュリティ効果が高まります。
コードレビューでは、以下の観点から脆弱性の有無を確認していきます。
- 入力値の検証がしっかりと実装されているか
- SQLインジェクションや、XSSなどへの対策がとられているか
- 権限や認証のチェック処理に抜けがないか
- 例外処理が、適切に行われているか
技術者による手作業の目視レビューと併せて、静的解析ツールやログからの動的解析も継続的に行うことが大切です。
こうした継続的プロセスを通じて、脆弱性発見やコーディング能力向上に繋げることを強く推奨します。
セキュリティ警告に注意する
GitHubでは、リポジトリの脆弱性が発見されるとセキュリティ警告が発せられます。このアドバイザには、修正方法の提言も含まれているので、迅速な対応が求められます。
脆弱性として検出されるケースの例は、以下の通りです。
- 入力検証の脆弱性によるSQLインジェクションが可能な状態
- 権限エスカレーション攻撃を許可する認可バイパス欠陥
- サービス運用妨害(DoS)攻撃につながる異常トラフィック増大
このような警告があった際には、ただちにレポジトリへの公開を一時停止し、提言された修正を実施する必要があります。
擬似環境で再現テストを行い、完全に解決を確認するまで公開停止が望まれます。
※サービス運用妨害(DoS)攻撃・・・サーバやネットワークに対して大量のアクセスを仕掛けてシステムをダウンさせ、正規のサービス提供を妨げることを目的としたサイバー攻撃のことです。
GitHubでセキュリティ警告が出るレベルのトラフィックは通常とは異常な状態であるため、ただちに対処が必要です。
ソースコード流出の事例
過去にも、GitHubで管理されていた企業のシステム開発コードが、元社員によって無断で公開される事件が発生しています。
GitHubでの流出事件とその影響
事例では、ある企業を退職したエンジニアが、自分がかつて開発に関わったソースコードを全てGitHubの公開リポジトリにアップロードしました。本来社外秘のはずのコードでしたが、転職活動の一環として年収を測るサービスの利用を目的に公開したとのことです。
しかしこの行為は、守秘義務違反にあたるものでした。公開されたソースコードからシステムの脆弱性が明らかになるなど、その影響は計り知れませんでした。幸い今回は業務への実害こそありませんでしたが、企業の信頼を失墜させる結果となりました。
このように、GitHub上での情報管理を誤ると、重要なソースコードが流出するリスクがあることが分かります。適切なアクセス制御が欠かせません。
情報漏洩のリスクと原因
GitHubを利用する際には、思わぬ個人情報や機密データが流出するリスクがあります。
例えば、ソースコード内やコミットログに不用意に人名やEmailアドレス、アクセストークンといったデータを含めてしまうことで、意図せず秘匿性の高い情報が公開されてしまうことがあります。
また、アカウントやリポジトリの管理権限を誤って職場のメンバーに与えてしまったために、内部資料が勝手にアップロードされてしまうこともあるでしょう。
このような、偶発的な情報漏洩を避けるためには、Github利用における適切なアクセス権限の設定や、コードレビューによる定期的なチェックが欠かせません。
まとめ:GitHubはセキュリティ意識次第で危険を回避できる
GitHubには、脆弱性や情報流出といったリスクがありますが、セキュリティを意識した使い方をすることで、その危険性は大きく減らすことが可能です。
ソースコードやデータを守ることは、システム構築においてもっとも重要な要素の一つです。GitHubを上手く使いこなすことで、安全な開発環境を手軽に実現できるでしょう。
また、GitHubは開発プロジェクトを効率化できたり複数人で共同作業がしやすいメリットがあり、システム開発には外せないツールです。
セキュリティの意識次第で危険を回避でき、使いこなせば大きな成果を出せる必需品と言えるでしょう。
株式会社Jiteraでは、ツールの導入や開発を得意としており、お困りのことがありましたらご相談いただけますと幸いです。
今回の記事のようなセキュリティ対策に関することは、株式会社Jiteraまでお問い合わせください。