Когда у вас есть секретный ключ в вашем проекте, как можно нажать на GitHub?
Я пытаюсь продвинуть новый, пустой проект Rail 3.0.4 в GitHub, но просто понимаю, что в хранилище сеансов cookie есть секретный ключ:
В config/initializers/secret_token.rb
NewRuby192Rails304Proj::Application.config.secret_token = '22e8...'
Итак, как мы можем избежать его нажатия на GitHub? Мы можем игнорировать этот файл (используя .gitignore
), но без этого файла приложение Rails не будет запускаться вообще (и не является полным Rails-приложением). Или, как правило, другие файлы или фреймворки могут иметь файлы, содержащие секретные ключи. В таком случае, как это следует обрабатывать при нажатии на GitHub?
Ответы
Ответ 1
Добавьте в свое репо:
- его шаблон (
secret_token.rb.template
),
- a script способен генерировать правильный файл конфигурации
secret_token.rb
на основе локальных данных, найденных на сервере (например, зашифрованный файл с секретным значением, готовым к декодированию и помещением в файл secret_token.rb
)
Оттуда добавьте настраиваемый драйвер атрибута git:
![enter image description here]()
Указанный выше script будет вашим " smudge
'script, который при контроле рабочего дерева автоматически генерирует правильный файл.
Ответ 2
Поместите секретный ключ в какой-то внешний файл конфигурации. То, что мы делаем.
Ответ 3
Существует несколько внешних инструментов, которые делают именно это. В основном, эти инструменты шифруют файл с вашими частными данными и хранят его в VCS, но игнорируют оригинальный незашифрованный файл.
Один из самых известных и надежных blackbox
. Он использует gpg
для шифрования ваших файлов и работает как с git
, так и hg
. Кстати, он создан командой SO. Посмотрите раздел alternatives, у него есть как минимум пять других инструментов.
Я также могу рекомендовать вам инструмент git-secret
, он также использует gpg
. Но он работает только с git
. Основное преимущество заключается в том, что рабочий процесс намного проще по сравнению с другими инструментами.
Ответ 4
Вы можете рискнуть доверять безопасности/конфиденциальности Github, если это частный репозиторий.. или:
- Извлеките данные из файла конфигурации на сервере. Например, если вы используете Capistrano для развертывания, вы можете добавить шаг, который копирует конфигурационный файл где-то на сервере.
- Используйте переменную окружения.