когда у вас есть секретный ключ в вашем проекте, как может быть возможно продвижение в GitHub? - PullRequest
23 голосов
/ 27 февраля 2011

Я пытаюсь отправить новый пустой проект Rail 3.0.4 на GitHub, но просто понимаю, что хранилище сеансов cookie имеет секретный ключ:

В config/initializers/secret_token.rb

NewRuby192Rails304Proj::Application.config.secret_token = '22e8...'

Так, как мы можем избежать того, чтобы его толкали на GitHub? Мы можем игнорировать этот файл (используя .gitignore), но без этого файла приложение Rails вообще не будет работать (и не является полным приложением Rails). Или вообще, другие файлы или платформы могут иметь файлы, содержащие секретные ключи. В таком случае, как это должно быть обработано при нажатии на GitHub?

Ответы [ 4 ]

24 голосов
/ 27 февраля 2011

Добавьте в репо:

  • его шаблон (secret_token.rb.template),
  • скрипт, способный сгенерировать правильный файл конфигурации secret_token.rb на основе найденных локальных данныхна сервере (как зашифрованный файл с секретным значением, готовым для декодирования и помещения в файл secret_token.rb)

Оттуда добавьте пользовательский драйвер атрибута git :

enter image description here

Указанный выше скрипт будет вашим сценарием 'smudge', который при извлечении рабочего дерева будетавтоматически сгенерировать нужный файл.

8 голосов
/ 27 февраля 2011

Поместите секретный ключ в какой-то внешний файл конфигурации.Вот что мы делаем.

2 голосов
/ 11 марта 2016

Есть несколько внешних инструментов, которые делают именно это.По сути, эти инструменты шифруют файл с вашими личными данными и сохраняют его в VCS, но игнорируют оригинальный незашифрованный файл.

Один из самых известных и надежных - blackbox.Он использует gpg для шифрования ваших файлов и работает с git и hg.Кстати, он создан командой SO.Взгляните на раздел альтернатив , в нем есть как минимум пять других инструментов.

Я также могу порекомендовать вам инструмент под названием git-secret, он также использует gpg.Но это работает только с git.Основным преимуществом является то, что рабочий процесс намного проще по сравнению с другими инструментами.

1 голос
/ 27 февраля 2011

Вы можете рискнуть доверять безопасности / конфиденциальности Github, если это частное хранилище .. или:- Извлечь данные из файла конфигурации на сервере.Например, если вы используете Capistrano для развертывания, вы можете добавить шаг, который копирует файл конфигурации из какого-либо места на сервере.- Используйте переменную окружения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...