Secret Gate
Ворота релиза, которые знают ваши реальные секреты: ничего не выходит в релиз, пока не будет найдено ничего.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

Что он делает
Secret Gate отвечает на один вопрос до того, как что-либо покинет ваши руки — будь то релизный архив, копия для клиента, пуш в открытый исходный код или следующий коммит: есть ли здесь мой секрет? Он знает, какие у вас секреты, потому что читает файлы, где они хранятся, и никогда их не показывает: найденное указывает файл, строку и источник значения.
- Ваши точные значения. Каждое значение из ваших env-файлов, конфигураций JSON и YAML, файлов
.netrcи ключей ищется в виде, как записано, в base64-кодировке и URL-кодировке. Пароль, похожий на обычное слово, или внутренний токен без известного префикса обнаруживается так же, как и любой другой. - Секреты с машин, на которых он не работает. Создайте отпечатки на ноутбуке; сборочный сервер найдет эти значения, не храня их у себя.
- Другие машины проверяются по своим секретам. Файлы передаются на каждую машину по SSH, сканируются там и удаляются. Секреты не перемещаются, а машина, не давшая ответа, блокирует релиз.
- Формы, имена и шум тоже. 25 форматов токенов, ваши имена, хосты, домены и идентификаторы аккаунтов, частные IP-адреса, личные адреса электронной почты, номера телефонов, IBAN, пути к домашним папкам и случайные строки рядом с именами, похожими на секретные.
- Он доказывает свою работоспособность каждый раз. Каждое сканирование начинается с размещения канареек всех типов; если какая-либо проверка не находит свою канарейку, сканирование не запускается.
- Там, где вы уже работаете. Папки, архивы zip и tar, хуки git pre-commit или pre-push, коды выхода для CI, отчет в формате JSON.
Протестировано на том, что мы поставляем
- Каждый набор, который мы продаем: 8 выпущенных архивов проверены по 133 секретным значениям на нашей сборочной машине и 16 259 отпечаткам с нашего ноутбука. Все прошли проверку за 5,4 секунды суммарно.
- Реальный секрет, внедренный в копию релиза, был обнаружен в открытом виде и в base64-кодировке, каждый раз с указанием файла-источника. Значение нигде не появилось в выводе или отчете.
- Удаленное сканирование по SSH проверило релиз по 499 секретным значениям на второй машине за 1,4 секунды и обнаружило токен, внедренный в копию, которая существовала только на этой машине.
Что внутри
Шлюз
Четыре проверки, самотестирование, сканирование архивов и файлов, добавленных в git, читаемый отчет и отчет в формате JSON.
Отпечатки
Отпечатки секретов одной машины для сканирования на другой, без самих значений.
Удаленные проверки
Те же файлы проверяются на каждой машине, где есть секреты, вместе с правилами вашего проекта.
Настройка и CI
Инструмент поиска файлов с секретами, git-хуки и workflow GitHub Actions для архивов релизов.
Требования
- Linux или macOS с Python 3.9 или новее; ничего не нужно устанавливать через pip.
- Git для хуков, SSH для удаленных проверок.
Полезно знать
- Он читает файлы в их текущем состоянии. Секрет, уже попавший в историю git, там и останется: замените его.
- Архивы внутри проверяемой папки не раскрываются; проверяйте каждый архив отдельно.
- Храните файлы отпечатков так же приватно, как и секреты: они содержат первые 4 символа каждого значения длиной 16 символов и более.
Вопросы
Чем это отличается от gitleaks или TruffleHog?
Они ищут то, на что обычно похожи секреты, и хорошо с этим справляются. Secret Gate также знает, чем являются ваши секреты на самом деле: он читает ваши собственные файлы с секретами и ищет именно эти значения, поэтому пароль базы данных или внутренний токен без узнаваемой формы тоже будут найдены. Он создан для одного момента, перед отправкой, и работает по принципу «закрыто при ошибке».
Отправляются ли мои секреты куда-либо?
Нет. Значения считываются из ваших файлов в память для проверки и никогда не выводятся, не записываются и не отправляются; файл отпечатков, если вы его создадите, содержит хеш и первые 4 символа каждого значения. При удаленных проверках файлы, которые вы собираетесь отправить, передаются на вашу собственную машину; секреты этой машины остаются на ней.
Что насчет ложных срабатываний?
Найденное означает «посмотрите это». Если все в порядке, добавьте узкое правило исключения для такого типа находок в конфигурации проекта, например, для вашего собственного адреса поддержки. Нет переключателя, который отключает проверку.
Можно ли проверить историю git?
Нет. Он проверяет то, что вы собираетесь отправить: папку, архив или следующий коммит. Для секрета, уже находящегося в истории, замените секрет.
Обновлено: