GitHubの情報を守るための10のヒント
2021年1月末、一部のモラルに欠けるユーザーが原因となり、大手銀行の業務システムのソースコードが流出したことで注目が集まったGitHub。GitHubはソフトウェア開発の際に使用される一般的なWebサービスです。チームや複数人でソフトウェア開発を行う際、ソースを含め作業記録がすべて残るため、問題発生時に素早く対応ができるツールとして重宝されています。
GitHubでソースコードを管理している企業は多く、そこには社員、特に直接プロジェクトに関わるメンバーのアカウントを厳重に管理するルールが必要です。ソースコードは各プロジェクトや個人にとって大変重要なソースであり、安全性を満たさないGitHubアカウントでそれらにアプローチした場合、深刻な影響を及ぼす重大なセキュリティー問題を引き起こしかねません。今回のブログでは個人・会社のGitHubのセキュリティ対策についてご紹介します。
- デリケートなデータを保護する
- デリケートなデータを削除する
- 権限付与の厳重化
- SECURITY.mdファイル作成
- GitHubアプリの使用
- PR(プレビューリリース)のセキュリティチェック
- プロジェクトに適したGitHubの使用
- SSH鍵や個人アクセストークンの交換
- 常にプロジェクトの安全性について考える
- プロジェクトのインポート時の注意
- まとめ
1.デリケートなデータを保護する
GitHub上のソースコードや資料にデリケートなデータ(ユーザーネーム、パスワード、データベース接続文字列、キー、セキュリティー重要設定など)を保存してはいけません。GitHubには検索機能があるため、保存していた場合それらの情報が流出、悪用されてハッカーの狙いの的となってしまいます。
・git-secretsやgit pre-commit hookを使用してGitHub上にデリケートなデータが上がることを阻止する。詳しくはgit-secrets参照。
・CI/CDの重要データにENV variablesを使用し、Vaultを使って開発環境上のデリケートな情報を管理する。
2.デリケートなデータを削除する
GitHub上のソースコードや資料にデリケートな情報が含まれていることがわかった場合、直ちに安全に削除しましょう。
・万一ユーザーネーム、パスワード、キーなどの情報が漏洩した場合、アカウントもしくはキーを即座に無効化する
・force push rewrite historyのガイドに沿い、GitHub上の情報やデータを完全に削除する。
・情報漏洩時の影響やその範囲の評価を行い、完全に処理する。
3.権限付与の厳重化
ソースコードや情報の漏洩の大部分が人的要因によるものです。私たちは日頃特に気に留めることなく各アカウントにアクセス権を付与していますが、これは非常に大きなリスクを抱えています。GitHubへのアクセス権の付与制限を強化し、最低限のアカウントのみに限定しましょう。また、明確な役割決めや機能に合った権限の付与も大切です。
・会社内のすべてのGitHubアカウントに2要素認証を適用する。
・GitHubアカウントを共同使用したり、アカウントやパスワードを他人に共有しない。
・会社はソースコードにアクセスするすべてのパソコンを管理・チェックし、安全を確保する。
・ソースコードが流出するのを防ぐため、システム内でもう使用しないアカウントや退職した社員のアカウントは削除する。
・個人GitHubアカウントで会社のプロジェクトに参加したり、会社のソースコードにアプローチすることを禁止する。
4.SECURITY.md ファイル作成
プロジェクトにはSECURITY.mdファイルを追加し、順守事項と共にセキュリティコンテンツを十分に記載することが必要です。
・開示ポリシー:セキュリティー問題が発覚した場合、脆弱性の報告時における正確で安全かつ、情報漏洩をさせないプロセスを定める。このプロセスには、“誰に”、“どうやって”、“何に沿って”という項目が含まれる。
・セキュリティー更新ポリシー:プロジェクトのセキュリティー更新についてユーザーに通知する。
・セキュリティ関連の構成:セキュリティー対策がとられた安全なシステムの構築と運営に関する条件。
・既知のセキュリティギャップと将来の機能強化:セキュリティー管理対策がまだ適用されていないことをユーザーへ伝え、ユーザ側からの協力を求める。
5.GitHubアプリの使用
これらのアプリはGitHubではなく第3者によって開発されたものであるため、厳密な管理が必要となります。セキュリティーリスクが潜んでいるため、使用時には注意が必要です。
・アプリが要求している権利や、提供を要求しているアプリやデータについてよく確認する。
・アプリを開発した人物・組織が信頼できるかよく検討する。
・アプリが提示する機能、規約、プライバシーポリシーについて確認する。
6.PR(プレビューリリース)のセキュリティチェック
PRを行う際、ソースコードのセキュリティチェックツールを使います。それらのツールはソースコードを解析し、セキュリティ問題を割り出すことで、プログラマーは早期に修正ができ、今後起こりうるセキュリティ面の不備の発生を防ぎます。
・sonarcloud:CI/CDと統合が可能な静的コード解析であり、エラー、コーディング規則、ソースコード内のセキュリティホールを見つける。
・codeclimate:自動コードレビューツールである。
7.プロジェクトに適したGitHubの使用
プロジェクトそれぞれの需要に適したGitHubを使用することも有効です。セキュリティーの高さや拡張性の高さが求められるプログラムや、保護された状態でスピーディーなビルドが求められるプロジェクトには、Github enterprise がおススメです。
8.SSH鍵や個人アクセストークンの交換
GitHubはSSH鍵やトークンを通してアクセスされます。これらのデータは機密データであり、アカウントオーナーのみ保持できますが、何かが原因となってこれらの情報が漏れたり、紛失してしまうことがあります。なので、鍵やトークンを定期的に交換すれば、万が一情報が洩れてしまっても、攻撃や乗っ取りを防ぎ、情報を守ることができます。
9.常にプロジェクトの安全性について考える
オープンソースプロジェクトの開発をする場合、“隠す“という方法でセキュリティー対策をすることはやめ、すべてをコミュニティに公開し、貢献するようにしましょう。そして、常に安全なセキュリティ対策を用いてアプリを開発しましょう。公開する際は、上記のセキュリティ対策を適用し、よりセキュリティーの高いアプリになるよう、改善し続けることが大切です。
10.プロジェクトのインポート時の注意
プロジェクトインポートは、既存のプロジェクトのインポートにあたり、非常に便利な機能です。しかし、すべてのソースコードをチェックし、ソースコード内のデリケートな情報を削除するよう注意が必要です。
まとめ
ここまで、GitHubにソースコードや資料を保存する際に会社や個人のGitHubの安全性を高める方法について紹介してきました。しかし、以上の対策を十分に行っていたとしても、ユーザーのモラルの欠如や不注意によって、情報漏洩のリスクは常に潜在しています。
弊社2NFソフトウェアもGitHubを用いてソフトウェア開発を行っている企業の一つですが、独自のセキュリティ対策を実施すると同時に、社員の意識向上を目的として日頃からセキュリティ研修を行っております。初めてのオフショア開発を検討されている方にも、安心してお任せいただけます。無料コンサルティングも行っていますので、お問い合わせフォーム より、お気軽にお申し付けください。