【しーくれっとすきゃん】

シークレットスキャン とは?

最終更新:
💡 コードに混ざった秘密を探す

コードやGit履歴などを調べ、APIキー・パスワード・トークンといった機密情報の混入を検出する仕組み。検査対象や検出できる形式はツールと設定による。

📌 このページのポイント
シークレットスキャン:混入を探す 検査する場所・形式はツールと設定による コード・履歴 API_KEY = [秘密の値] 対応形式を検出 漏洩の疑い アラート 確認・失効・再発行 利用先と不正利用も確認 検査の段階の例 コミット前 送信時 CI 自動失効や全件検出は保証されない
赤は漏洩の疑い、緑は対応。下の3つは検査する段階の例で、全ツールに共通する固定工程ではない。コードから消すだけで認証情報は失効しない。
ひよこ ひよこ
GitHubのSecret Scanningって何をしてるの?
ペンギン先生 ペンギン先生
APIキーやトークンなどが混ざっていないか、Git履歴や対応する投稿欄を調べる機能だよ。検出は対応パターンや設定に依存する。どんなパスワードでも必ず見つかるわけではなく、シークレットスキャンと送信を止めるpush protectionの対象も同じとは限らないんだ
ひよこ ひよこ
そんな間違い、普通しないでしょ?
ペンギン先生 ペンギン先生
テスト用の値を直書きしたまま残したり、.envファイルや設定ファイルを誤ってコミットしたりする場合があるよ。Git履歴を調べるツールなら、今のファイルから消えていても過去のコミットに残る認証情報を探せるんだ
ひよこ ひよこ
検知されたらどうなるの?
ペンギン先生 ペンギン先生
GitHubでは、対応する秘密の種類に応じてリポジトリのアラートや提携サービスへの通知が行われるよ。自動失効は全てに共通する動作ではない。漏れた認証情報を失効・再発行し、利用先を更新して不正利用も確認する。コードから消すだけでは足りないんだ
ひよこ ひよこ
コミット前に防ぐ方法はないの?
ペンギン先生 ペンギン先生
Gitleaksなどをpre-commitフックに組み込むと、コミット時に検査し、検出した場合に止められるよ。GitHubのpush protectionは対応するシークレットの送信を止める機能。CIでの検査も組み合わせられるけれど、対象・設定・回避の扱いを確認する必要があるんだ
ひよこ ひよこ
シークレット管理ツールと何が違うの?
ペンギン先生 ペンギン先生
シークレット管理は保管・配布や更新を管理する役割で、この検査はコードなどへの混入を探す役割だよ。混入の検査も送信前の予防に使える。両方を組み合わせても安全が自動で保証されるわけではなく、必要最小限の権限や利用状況の確認も大切だね
ひよこ ひよこ
開発ツールからトークンが盗まれるケースにも使えるの?
ペンギン先生 ペンギン先生
Nxの公式報告は、2025年8月の悪意あるnpmパッケージが機密情報を公開GitHubリポジトリへ送った事例を説明しているよ。検査対象に対応形式の認証情報が現れれば検出に役立つが、窃取そのものを防ぐ機能ではない。CIログも自動で全て検査されるとは限らないんだ
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「シークレットスキャン」って出てきたら「コードにAPIキーなどを書いてしまっていないかチェックするツールや仕組みのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Secret Scanning」 = シークレット(機密情報)のスキャン
💬 ここでいう「シークレット」はAPIキー・パスワード・トークンなど「外に出てはいけない情報」のことだよ

参考資料

← 用語集にもどる