Как зашифровать или защитить ключи при отправке в GIT?

Я использую разработку приложения с помощью Spring Boot, в файлы нужно добавить некоторые секретные ключи, но при фиксации и отправке файла в Git он не должен быть виден публике.

Поскольку эти ключи в файлах должны быть в безопасности, как обеспечить безопасность или какое-либо шифрование этих файлов?

Первое, что нужно сделать, это не подталкивать их к публичному репо.

Sami Kuhmonen 23.05.2018 09:16

Не помещайте их в файлы, которые вы отправляете в git, предоставляйте их, например, через переменные среды.

jonrsharpe 23.05.2018 09:16
0
3
182
2

Ответы 2

Как уже упоминалось, не помещайте эти файлы в общедоступное хранилище или любое другое хранилище, к которому, по вашему мнению, другие разработчики в команде не должны иметь доступа.

Вы можете легко гарантировать, что эти файлы каким-то образом не будут зафиксированы, используя файл .gitignore:

gitignore - Specifies intentionally untracked files to ignore

См .: .gitignore документация

Вот набор полезных конфигураций .gitignore: Коллекция полезных шаблонов .gitignore

Вместо использования шифрования было бы лучше использовать структуру каталогов и репо следующим образом:

Каталог проекта: Все файлы проекта, секретов нет.

Каталог секретов: Только секреты.

Репо проекта: Публичный репозиторий.

Секреты репо: Частный репозиторий, предоставляющий доступ доверенным разработчикам.

Затем в своем проекте вы просто ссылаетесь на необходимые секреты в каталог секретов.

Если вы все же решите использовать шифрование GPG (не рекомендуется, поскольку тогда вы должны помнить, что не следует по ошибке отправлять незашифрованный файл), вы можете использовать базовый симметричный шифр. На машине Unix установите gpg и затем используйте следующую команду терминала - она ​​запросит пароль и сгенерирует зашифрованный файл .gpg.

-c, --symmetric encryption only with symmetric cipher

gpg -c secrets.txt

.gitignore перестанет отправлять его в репозиторий. Но я хочу отправить его в репозиторий, но он должен быть доступен для просмотра мастерам или некоторым конкретным лицам. Он не должен быть виден публике Git.

HARISH 23.05.2018 09:29

Вы можете использовать что-то вроде gpg, чтобы зашифровать файл паролем - ваш «хозяин» будет нуждаться в этом пароле и расшифровать его на другой стороне при запуске сборок и т. д. Если это сработает для вас, вы можете это сделать. В качестве альтернативы сохраните частное репо со всеми секретными ключами из отдельного каталога для сборки проекта, а также общедоступное репозиторий проекта без каких-либо ключей - вот что я рекомендую.

YodaScholtz 23.05.2018 09:38

Не могли бы вы привести мне пример, связанный с этим.

HARISH 23.05.2018 10:44

См. Ответ выше.

YodaScholtz 23.05.2018 11:32

Вы должны сохранить эти ключи как переменные среды.

Как сохранить и получить эти значения будет зависеть от используемых вами инструментов. В вашем случае я думаю, что Spring framework действительно может.

Надеюсь, вы уловите логику и узнаете, как этого добиться в Spring или на сервере, который вы использовали.

Можете ли вы привести пример весной

HARISH 24.05.2018 07:27

Согласен, это хороший вариант. У него все еще есть проблема с желанием передать ключи, зашифрованные в репо, что на самом деле не должно быть сделано, по крайней мере, не в публичном репо.

YodaScholtz 24.05.2018 08:38

Другие вопросы по теме