GitHubのSecret scanningでリポジトリに混入した機密情報を検出してみた

GitHubのSecret scanningでリポジトリに混入した機密情報を検出してみた

Clock Icon2025.07.11

こんにちは!製造ビジネステクノロジー部の小林です。

パスワード、アクセスキー、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」をクリックします。
スクリーンショット 2025-07-10 23.56.42

「Secret Protection」の右側にある「Enable」をクリックします。
スクリーンショット 2025-07-11 0.07.40

Secret scanningを有効化するかの確認画面が表示されるので「Enable Secret Protection」 をクリックします。
スクリーンショット 2025-07-11 0.09.05

以上でSecret scanningの有効化は完了です。
スクリーンショット 2025-07-11 0.12.06

動作確認

テストファイルを作成し、意図的にAWSのアクセスキーとシークレットキーを含めてプッシュします(キーは全てダミーです)
スクリーンショット 2025-07-11 0.39.31

GitHub画面で確認してみます。「Security」タブをクリックし、左メニューの「Secret scanning」をクリックします。
スクリーンショット 2025-07-11 0.41.13

何も検出されません...!どうやら、私が入力した連続した数字の羅列では、GitHubが機密情報として認識しなかったようです。
スクリーンショット 2025-07-11 0.49.22

以下の記事を参考に、より実際のキーに近いパターンでキー情報を修正し、再度プッシュしてみました。(もちろん、これらのキーは全てダミーです)
https://dev.classmethod.jp/articles/enabling-push-protection-for-secret-scanning-on-github-for-individual-accounts/
スクリーンショット 2025-07-11 1.32.31

再度「Secret scanning」画面を表示するとアラートが検出されました!もしキーの検出パターンについて詳細な知見をお持ちの方がいらっしゃいましたら、ぜひ@kobasho8008に教えていただけると嬉しいです!
スクリーンショット 2025-07-11 0.59.36

検出されたアラートの詳細画面では、対象のファイルやコミット、そして対処方法が記載されています。
スクリーンショット 2025-07-11 1.40.39

右上のプルダウンをクリックすると、アラートをクローズするオプションが表示されます。クローズ理由には「False positive (誤検知)」や「Won't fix (修正しない)」など、いくつかの種類が用意されており、状況に応じて選択できます。
スクリーンショット 2025-07-11 1.42.13

ちなみに、Secret scanningの検出結果はメールでも通知されます。リポジトリ画面を確認しに行かなくても、アラートを把握できるのは便利ですね。
スクリーンショット 2025-07-11 1.47.48

おわりに

今回はGitHubのSecret scanning機能を使って、リポジトリに誤って混入した機密情報を実際に検出するプロセスをご紹介しました。次回はコミットのタイミングで機密情報を検知しブロックする「Push protection」を実践してみたいと思います。この記事がどなたかの参考になれば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.