Назад к обновлениям
New releaseAug 22, 2026

credactor v2.6.0

Сканируй. Редактируй. Коммить чисто.

Поделиться

PyPI CI License

Credactor

Найди секрет. Исправь его. Закоммить чисто.

Большинство сканеров секретов останавливаются на оповещении: вы получаете список утёкших учётных данных, а очистка — ваша забота. Credactor находит жёстко закодированные секреты и переписывает их на месте, так что утечка в вашем рабочем дереве проходит путь от обнаружения до исправления одной командой. Он работает на вашей машине, как pre-commit hook или как CI-гейт, и также может исправлять то, что находят Gitleaks, TruffleHog или Betterleaks.

Credactor: сканируй, редактируй, коммить чисто
# 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"]

Редакция очищает ваш рабочий каталог. Она не отзывает учётные данные и не затрагивает историю git. Если секрет когда-либо был закоммичен или передан, смените его и перепишите историю, если нужно удалить его и оттуда (например, с помощью git filter-repo).

Зачем Credactor

  • Он исправляет, а не просто помечает. Каждая находка заменяется на месте на sentinel, ваш собственный маркер или обращение к переменной окружения на языке самого файла.
  • Аккуратная запись. Каждое изменение планируется в памяти, сначала создаётся резервная копия (режим 0600), затем запись во временный файл и переименование на место. Файл, изменившийся во время запуска, путь, выходящий за пределы корня сканирования, или блок приватного ключа пропускаются с предупреждением, а его находка остаётся в отчёте.
  • Работает с тем сканером, который вы уже используете. Передайте ему отчёт Gitleaks, TruffleHog или Betterleaks, и он исправит их находки и свои собственные за один проход с дедупликацией.
  • Создан для пайплайнов. Read-only шлюз --ci с понятными кодами выхода, SARIF 2.1.0 с указанием строк и столбцов для GitHub Code Scanning, GitHub Action и pre-commit hook. Секреты маскируются во всех форматах отчётов, а текстовый вывод очищается, чтобы сканируемый файл не мог внедрить escape-последовательности или команды CI-воркфлоу в ваш терминал или лог.
  • Релизы сверяются с их исходным кодом. Чистая стандартная библиотека Python 3.11+ без зависимостей времени выполнения. Прежде чем релиз попадёт на PyPI, каждый файл Credactor в wheel и sdist сравнивается побайтово с исходным кодом из тега, а метаданные пакета должны соответствовать pyproject.toml (см. Усиление защиты цепочки поставок).

Где он не является подходящим инструментом сам по себе: его встроенные правила охватывают форматы учётных данных, которые утекают чаще всего, а не сотни провайдеров, и он не проверяет, является ли секрет действующим. Чистый запуск означает, что ничто не совпало с его правилами, а не что в коде нет секретов. Сочетайте его со специализированным сканером для широты охвата (см. Подключите свой сканер).

Установка

pip install credactor

С помощью uv установите его как инструмент или запустите один раз без установки:

uv tool install credactor
uvx credactor --dry-run .

Или с помощью Homebrew на macOS и Linux:

brew install rxb06/tap/credactor

Требуется Python 3.11 или новее. Протестировано в CI на Linux и Windows, Python 3.11–3.13. Для файлов в кодировках, отличных от UTF-8, Latin-1 или простого UTF-16, добавьте опциональное дополнение: pip install 'credactor[encoding]' или uv tool install 'credactor[encoding]' (формула Homebrew включает его).

Быстрый старт

1. Посмотрите, что он находит. Ничего не изменяется.

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]"

В отчётах показываются только первые четыре символа каждого секрета.

2. Исправьте их. Сначала просмотрите найденные проблемы: --fix-all перезаписывает все, включая ложные срабатывания. Чтобы сохранить одну, добавьте # credactor:ignore в её строку (см. Подавление ложных срабатываний) или исправьте в интерактивном режиме, ответив n. Перед изменением каждого файла рядом с ним записывается копия .bak, чтобы вы могли отменить изменения.

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

Режим Env записывает поиск, а не импорт: добавьте import os или эквивалент для вашего языка, если он отсутствует в файле. В Windows Git Bash запускайте интерактивный режим как winpty credactor ..

3. Проверьте, затем удалите резервные копии. Каждый файл .bak по-прежнему содержит исходный секрет, а Credactor никогда не редактирует ваш .gitignore, поэтому обычный git add . добавит его в индекс.

diff config.py.bak config.py         # check what changed
cp config.py.bak config.py           # undo

Добавьте *.bak и *.credactor.tmp в .gitignore и удалите резервные копии, когда будете довольны результатом. Чтобы резервные копии изначально не попадали в дерево, передайте --secure-backup-dir DIR (каталог вне репозитория) при запуске исправления. --secure-delete вместо этого стирает каждую резервную копию, оставляя git вашим единственным способом отмены.

Команды кратко

КомандаЧто она делаетИзменяет файлы
credactor --dry-run .Сообщает о находкахНет
credactor .Просматривает и исправляет находки по однойДа, при y
credactor --fix-all .Исправляет все находки после одного подтвержденияДа
credactor --ci .Шлюз: код выхода 1 при находкахНикогда
credactor --staged --ci .Шлюз только для того, что подготовлено к коммитуНикогда
credactor --scan-history .Сканирует последние 100 коммитов, изменяющих файлыНикогда
credactor --ci -f sarif . > results.sarifSARIF 2.1.0 для Code ScanningНикогда
credactor --ci -f json . > findings.jsonМашиночитаемый отчётНикогда

Каждый флаг и комбинация описаны в Руководстве.

Использование в pre-commit и CI

Хук pre-commit

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/rxb06/credactor
    rev: v2.7.5
    hooks:
      - id: credactor
pre-commit install

Каждый git commit затем сканирует проиндексированное содержимое и блокируется, если в нём обнаружены учётные данные. Хук никогда не перезаписывает файлы. Требуется pre-commit 3.2.0 или новее; без этого фреймворка см. автономный хук.

GitHub Action

steps:
  - uses: actions/checkout@v7
  - uses: rxb06/[email protected]

Категории