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

Що він робить
Secret Gate відповідає на одне запитання, перш ніж щось покине ваші руки, — чи то архів релізу, копія для клієнта, пуш в open source чи наступний коміт: чи міститься тут мій секрет? Воно знає, які у вас секрети, бо читає файли, де вони зберігаються, і ніколи їх не показує: знахідка вказує файл, рядок і звідки взялося значення.
- Ваші точні значення. Кожне значення у ваших env-файлах, конфігах JSON і YAML, файлах
.netrcта ключах шукається у вигляді, як записано, у base64-кодуванні та URL-кодуванні. Пароль, що виглядає як звичайне слово, або внутрішній токен без відомого префікса спіймається так само, як і будь-який інший. - Секрети з машин, на яких воно не працює. Зробіть відбитки на своєму ноутбуці; збірка на сервері знайде ці значення, ніколи їх не зберігаючи.
- Інші машини звіряються зі своїми секретами. Файли надходять на кожну машину через SSH, скануються там і видаляються. Секрети нікуди не переміщуються, а машина, яка не може відповісти, блокує реліз.
- Форми, назви та шум теж. 25 форматів токенів, ваші імена, хости, домени та ID акаунтів, приватні 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 також знає, якими є ваші секрети насправді: він читає ваші власні файли з секретами та шукає саме ці значення, тому базу даних або внутрішній токен без впізнаваної форми також буде знайдено. Інструмент створено для одного моменту — перед випуском, і він працює за принципом «fail closed».
Чи надсилаються мої секрети кудись?
Ні. Значення зчитуються з ваших файлів у пам’ять для перевірки, ніколи не виводяться на екран, не записуються та не надсилаються; файл відбитків, якщо ви його створите, містить хеш і перші 4 символи кожного значення. Віддалені перевірки надсилають файли, які ви збираєтеся випустити, на вашу власну машину; секрети цієї машини залишаються на ній.
А як щодо хибних спрацювань?
Знахідка означає «подивіться на це». Якщо все гаразд, додайте вузьке правило дозволу для такого типу знахідок у конфігурації проєкту, наприклад, для вашої власної адреси служби підтримки. Перемикача, який вимикає перевірку, немає.
Чи може він перевіряти історію git?
Ні. Він перевіряє те, що ви збираєтеся випустити: папку, архів або наступний коміт. Для секрету, який уже є в історії, ротація секрету обов’язкова.
Оновлено: