アップデート一覧に戻る
New releaseAug 22, 2026

credactor v2.6.0

スキャン。編集。クリーンコミット。

共有

PyPI CI License

Credactor

シークレットを見つけて、修正し、クリーンな状態でコミットしましょう。

シークレットスキャナーは警報を鳴らすのは得意ですが、その後の消火にはあまり役に立ちません。漏洩した認証情報のリストを手渡して、後始末はあなた任せです。Credactor はそのループを閉じます。ハードコードされたシークレットを見つけ、その場で書き換えるため、漏洩が検出から修正まで一つのコマンドで完了します。

認証情報をソースコードから排除することは、基本中の基本のセキュリティ対策であり、オプションではありません。Credactor はその基本をコスト安く維持できるようにします。コミット前の自分のマシンでも、マージ前の CI でも実行できます。単独で動かすことも、すでに信頼しているスキャナーと併用することも可能です。

Credactor: scan, redact, commit clean
# Credactor はこれを見つけます:
db_password = "h8Tq2vKp9mRz4Wd"

# デフォルトでは、シークレットを実行時に大声で失敗するセンチネルに書き換えます:
db_password = "REDACTED_BY_CREDACTOR"

# --replace-with env を使うと、環境変数を読み取る参照を書き込みます:
db_password = os.environ["DB_PASSWORD"]

編集は ワーキングツリー 内のファイルを書き換えます。シークレットがすでにコミットされている場合は、キーをローテーションし、履歴もスクラブしてください(例:git filter-repo を使用)。ファイルの書き換えは、漏洩した認証情報を無効化する代わりにはなりません。


Credactor の特長

  • 検出だけでなく編集も行います。 ほとんどのスキャナーは発見で止まります。Credactor はその場でシークレットを置き換えます。デフォルトでは実行時に失敗する REDACTED_BY_CREDACTOR というセンチネル、あるいは言語に応じた環境変数参照(Python、JavaScript/TypeScript、Go、Java/Kotlin、Ruby、PHP、シェル)例えば os.environ["KEY"] に置き換えます。置き換え後のコードは有効です。ファイルに該当する import(例:import os)がまだ含まれていない場合は、追加してください。
  • デフォルトで安全です。 アトミック書き込み、自動 .bak バックアップ、シンボリックリンク境界とファイルパーミッションのガード、すべての出力における完全なシークレットマスキング。安全なバックアップが書き込めない場合は、ファイルを盲目的に書き換えるのではなくスキップし、書き込み中のクラッシュでも元のファイルはそのまま残ります。
  • ゼロランタイム依存関係。 純粋な Python 3.11+ 標準ライブラリ、非 UTF-8 エンコーディング用のオプションの追加パッケージのみ。
  • パイプライン向けに設計されています。 GitHub Code Scanning 用の SARIF 出力、精密な終了コードを備えた読み取り専用の --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 .        # センチネルの代わりに環境変数参照に編集

Pre-commit フック(ベータ版)

フックの統合はベータ版です。信用する前に手動で credactor --dry-run . を実行してください。

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/rxb06/credactor
    rev: v2.5.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
JWTeyJ… 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

決定論的なプロバイダートークン(上記の接頭辞)は、エントロピーに関係なくフラグが立てられます。ヒューリスティック検出器(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 で管理。
  • 標準で29種類のソース/設定/ノートファイルタイプ(.txt を含む)に対応。--scan-json で 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_rsaid_dsaid_ecdsaid_ed25519)は、拡張子ではなくファイル名でマッチします。JSON はデフォルトで除外されます(API レスポンスが多くの誤検知を生むため)。含めるには --scan-json を追加してください。コマンドラインで直接指定されたファイルは、その拡張子がリストになくてもスキャンされます。

終了コード

コード意味
0発見なし、またはすべて解決済み
1未解決の発見あり
2エラー(例: 不正なパス、危険な --replacement--ci --fix-all、または --fail-on-error で読み取り不可ファイル)

サプライチェーンの強化

セキュリティツールは、実行時に安全であるだけでなく、インストール時にも安全であるべきです。Credactor のビルドとリリースパイプラインはエンドツーエンドで強化されています。詳細は セキュリティ文書 を参照してください。

  • ゼロランタイム依存関係。 デフォルトの pip install credactor はサードパーティパッケージを一切引き込みません(オプションの [encoding] 追加パッケージを除く)。そのため、インストール時に調査すべきものはありません。
  • ハッシュピン留めされたツールチェーン。 CI とリリースビルドは --require-hashes ロックファイルからインストールされ、ビルドバックエンドも含めて(ピン留めされた setuptools に対して python -m build --no-isolation を使用)、改変された依存関係はビルドを失敗させます。
  • 成果物はソースとバイトレベルで検証されます。 プッシュのたび、公開のたびに、scripts/audit_wheel.py がホイールと sdist をコミットされたソースとバイト単位で比較します(sha256 vs git HEAD)。追加、欠落、変更されたファイルがあるとゲートが失敗するため、ビルドステップでコードが密かに注入されることはありません。
  • SHA ピン留め、最小権限の CI。 GitHub Actions はコミット SHA にピン留めされ、ワークフロートークンは狭い範囲に保たれています。デフォルトでは contents: read、公開ジョブでのみ id-token: write です。

ドキュメント

文書説明
セットアップガイドインストール、設定、CI/CD 統合
マニュアル完全なリファレンス:すべてのフラグ、モード、組み合わせ、置換とバックアップの動作、検出と重要度、終了コード、制限事項(動作はテストで検証済み)
出力付きの一般的なワークフロー
CI 統合Pre-commit フック、CI パイプライン
セキュリティ脅威モデル、強化策、既知の制限
変更履歴バージョン履歴
コントリビューション開発環境のセットアップ、コードスタイル、PR プロセス
免責事項制限事項、安全な使用法、保証

ライセンス

Apache 2.0。 LICENSE を参照してください。

カテゴリ