
GitHubのSecret scanningでリポジトリに混入した機密情報を検出してみた
こんにちは!製造ビジネステクノロジー部の小林です。
パスワード、アクセスキー、APIキーなどの機密情報が誤ってリポジトリにコミットされると、セキュリティ上の大きなリスクとなります。GitHubでは、このようなリスクを軽減するために「Secret scanning」という機能を提供しています。本記事では、Secret scanningを利用してリポジトリに混入した機密情報を実際に検出してみました。
Secret scanningとは?
Secret scanningは、GitHubリポジトリ内のコードをスキャンして機密情報を検出する機能です。
公式ドキュメントによるとSecret scanningは以下の条件で利用可能です。
Secret scanning は、次のリポジトリの種類で使用できます。
・GitHub.com 上のパブリックリポジトリ
・GitHub Secret Protection が有効になっている GitHub Team 上の organization 所有リポジトリ
https://docs.github.com/ja/code-security/secret-scanning/enabling-secret-scanning-features/enabling-secret-scanning-for-your-repository
やってみた
今回はパブリックリポジトリを使用して機能を検証します。
Secret scanningの有効化
リポジトリ画面で「Settings」をクリックし、左側のサイドバーの「Security」セクションから「Advanced Security」をクリックします。
「Secret Protection」の右側にある「Enable」をクリックします。
Secret scanningを有効化するかの確認画面が表示されるので「Enable Secret Protection」 をクリックします。
以上でSecret scanningの有効化は完了です。
動作確認
テストファイルを作成し、意図的にAWSのアクセスキーとシークレットキーを含めてプッシュします(キーは全てダミーです)
GitHub画面で確認してみます。「Security」タブをクリックし、左メニューの「Secret scanning」をクリックします。
何も検出されません...!どうやら、私が入力した連続した数字の羅列では、GitHubが機密情報として認識しなかったようです。
以下の記事を参考に、より実際のキーに近いパターンでキー情報を修正し、再度プッシュしてみました。(もちろん、これらのキーは全てダミーです)
再度「Secret scanning」画面を表示するとアラートが検出されました!もしキーの検出パターンについて詳細な知見をお持ちの方がいらっしゃいましたら、ぜひ@kobasho8008に教えていただけると嬉しいです!
検出されたアラートの詳細画面では、対象のファイルやコミット、そして対処方法が記載されています。
右上のプルダウンをクリックすると、アラートをクローズするオプションが表示されます。クローズ理由には「False positive (誤検知)」や「Won't fix (修正しない)」など、いくつかの種類が用意されており、状況に応じて選択できます。
ちなみに、Secret scanningの検出結果はメールでも通知されます。リポジトリ画面を確認しに行かなくても、アラートを把握できるのは便利ですね。
おわりに
今回はGitHubのSecret scanning機能を使って、リポジトリに誤って混入した機密情報を実際に検出するプロセスをご紹介しました。次回はコミットのタイミングで機密情報を検知しブロックする「Push protection」を実践してみたいと思います。この記事がどなたかの参考になれば幸いです。