
credactor v2.6.0
Scannen. Schwärzen. Sauber committen.
Credactor
Finde das Geheimnis. Behebe es. Committe sauber.
Die meisten Secret-Scanner hören bei der Warnung auf: Du bekommst eine Liste geleakter Zugangsdaten und die Bereinigung bleibt dir überlassen. Credactor findet fest kodierte Secrets und schreibt sie direkt an Ort und Stelle um, sodass aus einem Leck in deinem Arbeitsverzeichnis mit einem einzigen Befehl ein gefundener und behobener Fall wird. Es läuft auf deiner Maschine, als Pre-Commit-Hook oder als CI-Gate und kann auch beheben, was Gitleaks, TruffleHog oder Betterleaks finden.
# Before
db_password = "h8Tq2vKp9mRz4Wd"
# credactor --fix-all . (default: a sentinel that fails loudly at runtime)
db_password = "REDACTED_BY_CREDACTOR"
# credactor --replace-with env --fix-all . (read it from the environment)
db_password = os.environ["DB_PASSWORD"]
Die Redaktion bereinigt deinen Arbeitsbaum. Sie widerruft die Anmeldedaten nicht und berührt nicht die Git-Historie. Wenn ein Secret jemals committet oder geteilt wurde, rotiere es, und schreibe die Historie um, wenn du es auch von dort entfernen musst (zum Beispiel mit
git filter-repo).
Warum Credactor
- Es behebt, nicht nur markiert. Jeder Fund wird direkt ersetzt, durch einen Sentinel, deinen eigenen Marker oder einen Umgebungsvariablen-Lookup in der Sprache der Datei selbst.
- Sorgfältige Schreibvorgänge. Jede Änderung wird im Speicher geplant,
zuerst gesichert (Modus
0600), in eine temporäre Datei geschrieben und an ihren Platz umbenannt. Eine Datei, die sich während des Laufs geändert hat, ein Pfad, der das Scan-Root verlässt, oder ein Private-Key-Block wird mit einer Warnung übersprungen, und der zugehörige Fund bleibt gemeldet. - Funktioniert mit dem Scanner, den du bereits einsetzt. Gib ihm einen Gitleaks-, TruffleHog- oder Betterleaks-Bericht, und es behebt deren Funde und seine eigenen in einem deduplizierten Durchlauf.
- Für Pipelines gebaut. Ein schreibgeschütztes
--ci-Gate mit klaren Exit-Codes, SARIF 2.1.0 mit Zeilen- und Spaltenangaben für GitHub Code Scanning, eine GitHub Action und ein Pre-Commit-Hook. Secrets werden in jedem Berichtsformat maskiert, und die Textausgabe wird bereinigt, damit eine gescannte Datei keine Escape-Sequenzen oder CI-Workflow-Befehle in dein Terminal oder Log einschleusen kann. - Releases gegen ihre Quelle geprüft. Reine Python-3.11+-Standardbibliothek
ohne Laufzeitabhängigkeiten. Bevor ein Release PyPI erreicht, wird jede
Credactor-Datei im Wheel und sdist Byte für Byte mit der getaggten Quelle
verglichen, und die Paket-Metadaten müssen mit
pyproject.tomlübereinstimmen (siehe Supply-Chain-Härtung).
Wofür es allein nicht das richtige Werkzeug ist: Seine eingebauten Regeln decken die Anmeldedaten-Formate ab, die am häufigsten leaken, statt Hunderte von Anbietern, und es prüft nicht, ob ein Secret noch aktiv ist. Ein sauberer Lauf bedeutet, dass nichts seinen Regeln entsprach, nicht, dass der Code keine Secrets enthält. Kombiniere es mit einem dedizierten Scanner für mehr Breite (siehe Eigenen Scanner mitbringen).
Installation
pip install credactor
Mit uv installieren Sie es als Tool oder führen es einmalig aus, ohne es zu installieren:
uv tool install credactor
uvx credactor --dry-run .
Oder mit Homebrew unter macOS und Linux:
brew install rxb06/tap/credactor
Benötigt Python 3.11 oder neuer. Getestet in CI unter Linux und Windows, Python 3.11 bis
3.13. Für Dateien in anderen Kodierungen als UTF-8, Latin-1 oder einfachem UTF-16 füge
das optionale Extra hinzu: pip install 'credactor[encoding]' oder
uv tool install 'credactor[encoding]' (die Homebrew-Formel enthält es).
Schnellstart
1. Sieh, was es findet. Es wird nichts geändert.
credactor --dry-run .
======================================================================
CREDENTIAL SCAN REPORT -- 2 finding(s) in 1 file(s)
======================================================================
FILE: config.py
────────────────────────────────────────────────────────────
Line 3 [HIGH] [variable:db_password]
db_password = "h8Tq[REDACTED]"
Line 4 [CRITICAL] [pattern:AWS access key]
aws_key = "AKIA[REDACTED]"
Berichte zeigen nur die ersten vier Zeichen jedes Secrets an.
2. Behebe sie. Prüfe zuerst die Funde: --fix-all schreibt jeden einzelnen um,
einschließlich Fehlalarme. Um einen zu behalten, füge # credactor:ignore zu seiner Zeile hinzu
(siehe Fehlalarme unterdrücken) oder behebe
interaktiv und antworte mit n. Bevor jede Datei geändert wird, wird eine .bak-Kopie
daneben geschrieben, damit du rückgängig machen kannst.
credactor . # ask y/N for each finding (needs a terminal)
credactor --fix-all . # fix all after one confirmation
credactor --fix-all --yes . # fix all, no prompt (scripts)
credactor --replace-with env --fix-all . # environment lookups instead of the sentinel
Der Env-Modus schreibt den Lookup, nicht den Import: Füge import os oder das Äquivalent deiner Sprache hinzu, falls die Datei es nicht enthält. Unter Windows Git Bash führe den interaktiven Modus als winpty credactor . aus.
3. Prüfen, dann die Backups bereinigen. Jede .bak enthält weiterhin das ursprüngliche Secret, und Credactor bearbeitet niemals deine .gitignore, sodass ein einfaches git add . es stagen würde.
diff config.py.bak config.py # check what changed
cp config.py.bak config.py # undo
Fügen Sie *.bak und *.credactor.tmp zu .gitignore hinzu und löschen Sie die Backups, sobald
Sie zufrieden sind. Um Backups von Anfang an aus dem Baum herauszuhalten, übergeben Sie
--secure-backup-dir DIR (ein Verzeichnis außerhalb des Repositorys) beim Fix-Lauf.
--secure-delete löscht stattdessen jedes Backup, wodurch git Ihre einzige
Rückgängig-Option bleibt.
Befehle auf einen Blick
| Befehl | Was er tut | Ändert Dateien |
|---|---|---|
credactor --dry-run . | Meldet Funde | Nein |
credactor . | Prüft und behebt jeweils einen Fund | Ja, bei y |
credactor --fix-all . | Behebt jeden Fund nach einer Bestätigung | Ja |
credactor --ci . | Gate: Exit 1 bei Funden | Nie |
credactor --staged --ci . | Gate nur für das, was zum Commit bereitgestellt ist | Nie |
credactor --scan-history . | Scannt die letzten 100 dateiändernden Commits | Nie |
credactor --ci -f sarif . > results.sarif | SARIF 2.1.0 für Code Scanning | Nie |
credactor --ci -f json . > findings.json | Maschinenlesbarer Bericht | Nie |
Jedes Flag und jede Kombination finden Sie im Handbuch.
Verwendung in pre-commit und CI
Pre-commit-Hook
# .pre-commit-config.yaml
repos:
- repo: https://github.com/rxb06/credactor
rev: v2.7.5
hooks:
- id: credactor
pre-commit install