
シークレットを見つける。修正する。クリーンにコミットする。
シークレットスキャナーは警報を鳴らすのは得意ですが、火を消すのはあまり得意ではありません。漏洩した認証情報のリストを渡して、後始末はあなた任せです。Credactor はそのループを閉じます。ハードコードされたシークレットを見つけ、その場で書き換えるので、漏洩は検出から修正まで1つのコマンドで完了します。
認証情報をソースコードから遠ざけることは、必須のセキュリティプラクティスであり、任意のものではありません。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 バックアップ、シンボリックリンク境界とファイル権限のガード、そしてすべての出力での完全なシークレットマスキング。安全なバックアップを書き込めない場合、Credactor は盲目的に書き換えるのではなくファイルをスキップし、書き込み中のクラッシュでも元のファイルは無傷のまま残ります。--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.6.0 # 最新のリリースタグに固定
hooks:
- id: credactor
Credactor は最も頻繁に漏洩する認証情報の種類を検出し、それぞれに重大度を割り当てて、一目でトリアージできるようにします。
| カテゴリ | 例 | 重大度 |
|---|---|---|
| クラウドプロバイダーキー | 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 |
| 高エントロピー文字列 | 引用符付き hex(32〜64文字)/ Base64(60文字以上) | Medium/Low |
決定的なプロバイダートークン(上記のプレフィックス)は、エントロピーに関係なくフラグが立てられます。ヒューリスティック検出器(JWT、接続文字列、hex、Base64)は、エントロピーの下限をクリアする必要があります。単独の hex または Base64 は、引用符で囲まれている場合にのみフラグが立てられます。引用符で囲まれていない高エントロピー値は、認証情報名の変数でのみ検出され、git SHA やチェックサムは対象外です。完全な検出および重大度ルールについては、マニュアル を参照してください。
Credactor のネイティブなルールセットは専用スキャナーよりも狭く、一部のプロバイダー形式(例: SendGrid、Twilio、Slack ウェブフック)は検出されません。その強みは修復です。最も広範な検出のために Gitleaks または TruffleHog と組み合わせるか、単独で実行してください。
Credactor は単独でも機能し、仲間がいるとさらに強力になります。すでに Gitleaks または TruffleHog を実行していますか? そのレポートを Credactor に渡すと、独自の検出結果と重複排除された(重複時はより高い重大度が優先)組み合わせセットをリダクションします。1回の修復パスで、あなたのスキャンと彼らのスキャンの両方をカバーします:
gitleaks dir . -f json -r gitleaks.json
credactor --from-gitleaks gitleaks.json --fix-all --yes .
--from-gitleaks / --from-trufflehog(または .credactor.toml の [ingest] テーブル)にはディレクトリターゲットが必要です。スキャナーが実行されたのと同じルートを Credactor に指定してください。レポートパスは作業ディレクトリに対して解決され、レポートはスナップショットです。リダクションまたはツリーの変更後は再生成してください。CI 統合ガイド を参照してください。
--replacement によるカスタム置換文字列。git コミット履歴をスキャンする --scan-history--secure-delete(.bak を上書きして削除。カジュアルな復元に対するハードルを上げますが、フォレンジックな保証ではありません)または --secure-backup-dir でリポジトリ外にバックアップを保存# credactor:ignore と .credactorignore 許可リスト(グロブ、file:line、値リテラル).credactor.toml によるリポジトリごとの設定.txt を含む)。JSON を含めるための --scan-json。ファイルを読み取れない場合に失敗する --fail-on-error
.py.js.ts.jsx.tsx.sh.bash.env.cfg.ini.toml.yaml.yml.rb.go.java.php.cs.kt.tf.hcl.conf.config.properties.xml.pem.key.crt.txt
さらに .env.* / .env-* バリアント(.env.local、.env.production)と SSH / 秘密鍵ファイル(id_rsa、id_dsa、id_ecdsa、id_ed25519)があり、すべて拡張子ではなくファイル名で照合されます。JSON は API レスポンスで誤検知率が高いため、デフォルトでは除外されています。含めるには --scan-json を追加してください。コマンドラインで直接指定されたファイルは、拡張子がこのリストにない場合でもスキャンされます。
| コード | 意味 |
|---|---|
0 | 検出なし、またはすべて解決済み |
1 | 未解決の検出あり |
2 | エラー(例: 不正なパス、危険な --replacement、--ci --fix-all、欠落または無効な取り込みレポート、または読み取り不能なファイルによる --fail-on-error) |
セキュリティツールは、実行するだけでなくインストールも安全であるべきです。Credactor のビルドおよびリリースパイプラインはエンドツーエンドで強化されています。詳細はセキュリティドキュメントを参照してください。
pip install credactor はサードパーティパッケージを一切取り込みません(オプションの [encoding] 追加機能のみ)。インストール時に検証するものはありません。--require-hashes ロックファイルからインストールし、ビルドバックエンドも含みます(固定された setuptools に対する python -m build --no-isolation)。改ざんされた依存関係はビルドを失敗させます。scripts/audit_wheel.py が wheel と sdist をコミット済みソースとバイト単位で比較します(sha256 対 git HEAD)。追加、欠落、または変更されたファイルはゲートを失敗させ、ビルドステップがコードを密かに注入できないようにします。contents: read、公開ジョブのみ id-token: write。Apache 2.0。LICENSE を参照してください。