BlackBox: прячем секреты в репозиториях Git и Mercurial
- пятница, 5 сентября 2014 г. в 03:11:24
BlackBox — программа надёжного шифрования отдельных файлов в репозитории Git или Mercurial с помощью GPG. При этом существующие скрипты позволяют быстро расшифровать файл, когда нужно исправить код, внести другие изменения или запустить программу на боевом сервере. В частности, программа поддерживает генерацию производных ключей, не требующих ввода парольной фразы при расшифровке файлов (для автоматизированных процессов).
Изначально BlackBox создавали как модуль для кросс-платформенного конфигуратора Puppet, но теперь он напрямую работает с системами контроля версий Git и Mercurial, даже без Puppet.
Логично шифровать файлы, в которых хранится чувствительная информация: SSL-сертификаты, пароли пользователей, ключи для доступа к API. Их боязно просто так выкладывать в репозиторий, даже на собственном сервере. Разработчики часто полагаются на удачу: мол, поисковик не проиндексирует и никто не найдёт эту информацию среди остального кода. Но это в корне неправильный, небезопасный подход.
В случае с BlackBox доступ в репозиторий без секретного ключа GPG просто бесполезен. До тех пор, пока вы держите свои ключи в безопасном месте, можно не беспокоиться о сохранности конфиденциальной информации даже на облачном хостинге. И если это ваш собственный сервер, то можно спокойно воспринимать, что к нему имеют доступ посторонние люди, например, для проведения резервного копирования или технического обслуживания. Да и сами резервные копии, если они хранятся где-то на кассетах или других носителях, тоже никак не выдадут ваши секреты.
Прелесть программы ещё и в том, что вместо одной общей парольной фразы GPG у каждого разработчика, кто имеет доступ к репозиторию, есть личный ключ GPG. Таким образом, если человек увольняется из компании, то не приходится всем раздавать новые ключи — можно просто деактивировать этот отдельный ключ командой blackbox_removeadmin
, удалив его из общей связки, и заново зашифровав все файлы связкой из уменьшившегося количества ключей.