Gitleaks vs TruffleHog: secret スキャンの比較
どちらもコードと git 履歴の中の漏洩した secret を見つけます。Gitleaks はシンプルな設定の高速な regex/エントロピースキャナで、TruffleHog は検出した認証情報を稼働中のサービスに対して検証もするため、誤検出を大幅に削減します。
Gitleaks と TruffleHog はどちらも、リポジトリにコミットされた API キー、token、パスワードを捕捉します。Gitleaks は軽量でルール駆動、TruffleHog は認証情報の検証を追加し、見つかった secret が実際に稼働しているかを実際にテストします。ここでは率直な比較を示します。
| Gitleaks | TruffleHog | |
|---|---|---|
| 検出 | regex + エントロピールール | detector + ライブ検証 |
| 検証 | なし (パターンベース) | あり (secret が有効かをチェック) |
| 履歴スキャン | あり (git 履歴全体) | あり (git、filesystem、その他のソース) |
| 誤検出 | 多い (未検証) | 検証済みの検出では少ない |
| 設定 | TOML ルール、簡単 | 多数の組み込み detector |
| 速度 | 非常に高速 | 高速、検証で呼び出しが追加される |
検出 vs 検証
Gitleaks はパターンと高エントロピー文字列をマッチさせるため、高速でどこでも実行しやすい反面、未検証のマッチはトリアージすべきノイズが増えることを意味します。TruffleHog は数百の detector を備え、該当する API を呼び出して候補の認証情報を検証できるため、検証済みの検出はほぼ確実に本物で稼働中の漏洩であり、最も重要なアラートにおける誤検出を劇的に減らします。
スコープとソース
どちらも git 履歴全体をスキャンします。これは、後のコミットで削除された secret も履歴には残るため重要です。TruffleHog は git を超えて (バージョンに応じて filesystem やその他のソースも) スキャンします。Gitleaks は TOML で簡単にカスタマイズできる引き締まったルールセットを保ち、シンプルさゆえに一部のチームに好まれます。
CI では
どちらもプルリクエストで実行し、定期的に履歴全体に対して実行しましょう。Gitleaks は優れた高速な pre-merge ゲートであり、TruffleHog の検証モードは本当に稼働中の漏洩をアラートするのに優れています。一部のチームは Gitleaks をすべての PR で、TruffleHog をスケジュールで実行します。
結論
すべての PR で高速でシンプル、カスタマイズ可能な secret スキャナには Gitleaks を、漏洩した認証情報が実際に稼働しているかを確認する検証済み検出が欲しいときには TruffleHog を選びましょう。両方を実行すれば、速度に加えて高い信頼性のアラートが得られます。