
シークレットを見つけて、修正し、クリーンな状態でコミットしましょう。
シークレットスキャナーは警報を鳴らすのは得意ですが、その後の消火にはあまり役に立ちません。漏洩した認証情報のリストを手渡して、後始末はあなた任せです。Credactor はそのループを閉じます。ハードコードされたシークレットを見つけ、その場で書き換えるため、漏洩が検出から修正まで一つのコマンドで完了します。
認証情報をソースコードから排除することは、基本中の基本のセキュリティ対策であり、オプションではありません。Credactor はその基本をコスト安く維持できるようにします。コミット前の自分のマシンでも、マージ前の CI でも実行できます。単独で動かすことも、すでに信頼しているスキャナーと併用することも可能です。
# Credactor はこれを見つけます:
db_password = "h8Tq2vKp9mRz4Wd"
# デフォルトでは、シークレットを実行時に大声で失敗するセンチネルに書き換えます:
db_password = "REDACTED_BY_CREDACTOR"
# --replace-with env を使うと、環境変数を読み取る参照を書き込みます:
db_password = os.environ["DB_PASSWORD"]
編集は ワーキングツリー 内のファイルを書き換えます。シークレットがすでにコミットされている場合は、キーをローテーションし、履歴もスクラブしてください(例:
git filter-repoを使用)。ファイルの書き換えは、漏洩した認証情報を無効化する代わりにはなりません。
REDACTED_BY_CREDACTOR というセンチネル、あるいは言語に応じた環境変数参照(Python、JavaScript/TypeScript、Go、Java/Kotlin、Ruby、PHP、シェル)例えば os.environ["KEY"] に置き換えます。置き換え後のコードは有効です。ファイルに該当する import(例:import os)がまだ含まれていない場合は、追加してください。.bak バックアップ、シンボリックリンク境界とファイルパーミッションのガード、すべての出力における完全なシークレットマスキング。安全なバックアップが書き込めない場合は、ファイルを盲目的に書き換えるのではなくスキップし、書き込み中のクラッシュでも元のファイルはそのまま残ります。--ci ゲート、pre-commit フック(ベータ版)、Gitleaks または TruffleHog レポートの取り込み(ベータ版、さらに追加予定)。Gitleaks や TruffleHog で検出し、Credactor で修復します。pip install credactor
Python 3.11+ が必要です。その他の依存関係はありません。Linux、macOS、Windows で動作します(CI テストは Linux と Windows で実施)。
ソースからインストールする場合:
git clone https://github.com/rxb06/credactor.git
cd credactor
pip install -e .
その後、任意のディレクトリから credactor が使用できるようになります。
編集する前に、まず
--dry-runを実行して結果を確認してください。誤検知が発生する可能性があり、--fix-allを使用すると誤検知も書き換えられてしまいます。既知の安全な値は# credactor:ignoreまたは.credactorignoreエントリで抑制してください。
credactor --dry-run . # スキャンのみ、変更なし
credactor . # スキャン後、対話的に編集(発見ごとに y/n)
credactor --fix-all . # 1回の確認後、すべて編集
credactor --fix-all --yes . # 非対話的に編集(CI / スクリプト向け)
credactor --ci . # 読み取り専用ゲート:発見があると終了コード1
credactor --replace-with env . # センチネルの代わりに環境変数参照に編集
フックの統合はベータ版です。信用する前に手動で
credactor --dry-run .を実行してください。
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.5.0 # 最新のリリースタグに固定
hooks:
- id: credactor
Credactor は最も頻繁に漏洩する認証情報の種類を検出し、それぞれに重要度を割り当ててひと目でトリアージできるようにします。
決定論的なプロバイダートークン(上記の接頭辞)は、エントロピーに関係なくフラグが立てられます。ヒューリスティック検出器(JWT、接続文字列、16進数、Base64)は、エントロピーの下限をクリアする必要があります。単独の16進数またはBase64は、引用符で囲まれている場合のみフラグが立てられます。引用符で囲まれていない高エントロピー値は、認証情報という名前の変数でのみ捕捉され、これにより git SHA やチェックサムは除外されます。完全な検出ルールと重要度については、マニュアル を参照してください。
Credactor のネイティブルールセットは専用のスキャナーよりも狭く、一部のプロバイダー形式(例:SendGrid、Twilio、Slack ウェブフック)は検出されません。その強みは修復にあります。最も広範な検出のために Gitleaks または TruffleHog と組み合わせるか、単独で実行してください。
Credactor は単独でも動作しますが、他のツールと組み合わせることでさらに強力になります。すでに Gitleaks または TruffleHog を実行していますか?そのレポートを Credactor に渡すと、Credactor はそれらの結果を統合し、自身の発見結果と重複排除した上で編集します(重複時は重要度の高い方が優先されます)。1回の修復パスで、あなたのスキャン結果とそれらの結果の両方をカバーします:
gitleaks dir . -f json -r gitleaks.json
credactor --from-gitleaks gitleaks.json --fix-all --yes .
--from-gitleaks / --from-trufflehog(または .credactor.toml の [ingest] テーブル)にはディレクトリターゲットが必要です。CI 統合ガイド を参照してください。
--replacement で指定。--scan-history で git コミット履歴をスキャン。--secure-delete(.bak ファイルを上書きして削除; カジュアルな復元を防ぐためのものであり、フォレンジック保証はありません)、または --secure-backup-dir でリポジトリ外にバックアップを保存。# credactor:ignore および .credactorignore による許可リスト(グロブ、file:line、値リテラル)。.credactor.toml で管理。.txt を含む)に対応。--scan-json で JSON を含める。--fail-on-error で読み取り不可ファイルがある場合に失敗。
.py.js.ts.jsx.tsx.sh.bash.env.cfg.ini.toml.yaml.yml.rb.go.java
さらに .env.* / .env-* 形式(.env.local、.env.production)および SSH / 秘密鍵ファイル(id_rsa、id_dsa、id_ecdsa、id_ed25519)は、拡張子ではなくファイル名でマッチします。JSON はデフォルトで除外されます(API レスポンスが多くの誤検知を生むため)。含めるには --scan-json を追加してください。コマンドラインで直接指定されたファイルは、その拡張子がリストになくてもスキャンされます。
| コード | 意味 |
|---|---|
0 | 発見なし、またはすべて解決済み |
1 |
セキュリティツールは、実行時に安全であるだけでなく、インストール時にも安全であるべきです。Credactor のビルドとリリースパイプラインはエンドツーエンドで強化されています。詳細は セキュリティ文書 を参照してください。
pip install credactor はサードパーティパッケージを一切引き込みません(オプションの [encoding] 追加パッケージを除く)。そのため、インストール時に調査すべきものはありません。--require-hashes ロックファイルからインストールされ、ビルドバックエンドも含めて(ピン留めされた setuptools に対して python -m build --no-isolation を使用)、改変された依存関係はビルドを失敗させます。scripts/audit_wheel.py がホイールと sdist をコミットされたソースとバイト単位で比較します(sha256 vs git HEAD)。追加、欠落、変更されたファイルがあるとゲートが失敗するため、ビルドステップでコードが密かに注入されることはありません。contents: read、公開ジョブでのみ id-token: write です。Apache 2.0。 LICENSE を参照してください。
| カテゴリ | 例 | 重要度 |
|---|
| クラウドプロバイダーキー | AWS (AKIA…)、GCP (AIza…)、Stripe (sk_live_…)、Slack (xoxb-…) | Critical |
| プラットフォームトークン | GitHub (ghp_, github_pat_)、GitLab (glpat-)、npm (npm_)、PyPI (pypi-) | Critical |
| 秘密鍵 | PEM ブロック (-----BEGIN … PRIVATE KEY-----) | Critical |
| JWT | eyJ… 3セグメントトークン | High |
| 接続文字列 | インライン認証情報を含む URL (scheme://user:pass@host) | High |
| 認証情報変数 | password = "…", api_key = "…", secret_key = "…" | High/Medium/Low |
| XML 属性 | <add key="Password" value="…" /> | High/Medium/Low |
| 高エントロピー文字列 | 引用符で囲まれた16進数(32~64文字) / Base64(60文字以上) | Medium/Low |
.php.cs.kt.tf.hcl.conf.config.properties.xml.pem.key.crt.txt| 未解決の発見あり |
2 | エラー(例: 不正なパス、危険な --replacement、--ci --fix-all、または --fail-on-error で読み取り不可ファイル) |
| 文書 | 説明 |
|---|
| セットアップガイド | インストール、設定、CI/CD 統合 |
| マニュアル | 完全なリファレンス:すべてのフラグ、モード、組み合わせ、置換とバックアップの動作、検出と重要度、終了コード、制限事項(動作はテストで検証済み) |
| 例 | 出力付きの一般的なワークフロー |
| CI 統合 | Pre-commit フック、CI パイプライン |
| セキュリティ | 脅威モデル、強化策、既知の制限 |
| 変更履歴 | バージョン履歴 |
| コントリビューション | 開発環境のセットアップ、コードスタイル、PR プロセス |
| 免責事項 | 制限事項、安全な使用法、保証 |