Secret Gate
A защитен механизъм за пускане, който познава реалните ви тайни: нищо не се публикува, докато не се увери, че няма нищо.
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

Какво прави
Secret Gate отговаря на един въпрос, преди нещо да напусне ръцете ви, независимо дали е архив за релиз, копие за клиент, публикуване в отворен код или следващият комит: съдържа ли това моя тайна? То знае кои са вашите тайни, защото чете файловете, в които те се съхраняват, и никога не показва нито една: откритието посочва файла, реда и откъде идва стойността.
- Вашите точни стойности. Всяка стойност във вашите env файлове, JSON и YAML конфигурации,
.netrcи ключови файлове, търсена както е написана, base64-кодирана и URL-кодирана. Парола, която прилича на обикновена дума, или вътрешен токен без известен префикс, се засича като всяка друга. - Тайни от машини, на които не се изпълнява. Създайте пръстови отпечатъци на лаптопа си; сървърът за изграждане намира тези стойности, без никога да ги държи.
- Други машини проверяват спрямо собствените си тайни. Файловете се изпращат до всяка машина чрез SSH, сканират се там и се изтриват. Тайните никога не се преместват, а машина, която не може да отговори, блокира релиза.
- Формати, имена и шум също. 25 формата на токени, вашите имена, хостове, домейни и акаунт ID-та, частни IP адреси, лични имейл адреси, телефонни номера, IBAN-и, пътища към домашни папки и случайни низове до имена, наподобяващи тайни.
- То се доказва всеки път. Всяко сканиране започва с поставяне на канарчета от всеки вид; ако някоя проверка пропусне своето канарче, сканирането не се изпълнява.
- Там, където вече работите. Папки, zip и tar архиви, git pre-commit или pre-push hook, изходни кодове за CI, JSON отчет.
Тествано на това, което изпращаме
- Всеки комплект, който продаваме: 8-те пуснати архива, сканирани спрямо 133-те тайни стойности на нашата машина за изграждане и 16 259 пръстови отпечатъка от нашия лаптоп. Всички преминаха заедно за 5,4 секунди.
- Истинска тайна, поставена в копие за релиз, беше засечена в чист вид и base64-кодирана, като всеки път беше назована по файла, от който идва. Стойността не се появи никъде в изхода или отчета.
- Отдалечено сканиране чрез SSH провери релиз спрямо 499-те тайни стойности на втора машина за 1,4 секунди и засече токен, поставен в копие, което съществуваше само на тази машина.
Какво е включено
Вратата
Четирите проверки, самопроверката, сканиране на архиви и git-staged файлове, четим отчет и JSON отчет.
Пръстови отпечатъци
Пръстови отпечатъци на тайните на една машина, за сканиране на друга, без стойностите.
Отдалечени сканирания
Едни и същи файлове, проверени на всяка машина, която съхранява тайни, заедно с правилата на вашия проект.
Настройка и CI
Инструмент за намиране на файловете с тайни, git hooks и GitHub Actions workflow за архивите на релизите.
Изисквания
- Linux или macOS с Python 3.9 или по-нова версия; нищо за инсталиране от pip.
- Git за hook-овете, SSH за отдалечените сканирания.
Полезно е да се знае
- Чете файловете в текущото им състояние. Тайна, която вече е в git историята, остава там: сменете я.
- Архивите в сканирана папка не се разархивират; сканирайте всеки архив поотделно.
- Съхранявайте файловете с отпечатъци (fingerprints) толкова частно, колкото и тайните: те съдържат първите 4 знака от всяка стойност с 16 или повече знака.
Въпроси
Каква е разликата с gitleaks или TruffleHog?
Те търсят това, което тайните обикновено представляват, и се справят добре с това. Secret Gate знае и какви точно са вашите тайни: чете вашите собствени файлове с тайни и търси точно тези стойности, така че парола за база данни или вътрешен токен без разпознаваема форма също се хващат. Изграден е за един момент, преди нещо да бъде пуснато, и при грешка блокира (fails closed).
Изпраща ли моите тайни някъде?
Не. Стойностите се четат от вашите файлове в паметта за сканирането и никога не се отпечатват, записват или изпращат; файлът с отпечатъци, ако създадете такъв, съдържа хеш и първите 4 знака от всяка стойност. При отдалечените сканирания файловете, които предстои да пуснете, се изпращат на вашата собствена машина; тайните на тази машина остават на нея.
Какво ще кажете за фалшивите аларми?
Намирането означава „погледнете това“. Ако е наред, добавете тясно дефинирано правило за разрешаване за този вид находка в конфигурацията на проекта, например вашия собствен адрес за поддръжка. Няма превключвател, който да изключи проверката.
Може ли да сканира git историята ми?
Не. Проверява това, което предстои да пуснете: папка, архив или следващия commit. За тайна, която вече е в историята, сменете тайната.
Обновено: