#ruby-on-rails #ruby #encryption
#ruby-on-rails #ruby #шифрование
Вопрос:
Мне нужно использовать шифрование для личных / личных пользовательских данных. Я собираюсь использовать следующую библиотеку шифрования.
Мне нужен способ сохранить КЛЮЧ вне системы управления версиями, чтобы я мог запускать приложение локально. При отправке кода нашей хостинговой компании я могу поместить КЛЮЧ в переменные среды сервера. Просто не уверен, как и как лучше всего сделать это локально.
Я должен отметить, что все разработчики, работающие над проектом, используют одну и ту же базу данных, поэтому нам всем нужен один и тот же КЛЮЧ для разработки и промежуточной среды.
https://www.happybearsoftware.com/how-to-actually-do-a-cryptography-in-ruby
Ответ №1:
Я думаю, что вы спрашиваете, как сохранить .env вне системы управления версиями, находясь в репозитории, сотрудничающие люди должны знать о том, каковы переменные среды. Обычно .env-sample (который является dumy, в котором все переменные хранятся без значений) отслеживается, а .env игнорируется (путем добавления его в .gitignore в случае git)
Ответ №2:
Как правило, секреты никогда не передаются в репозитории. Просто поместите их в конфигурационный файл (например config.yaml
, или secrets.xml
или env.sh
или аналогичный); скопируйте файл (во что-то вроде config.yaml.example
или secrets-skel.xml
или env.sh.sample
); поместите первый .gitignore
(или эквивалентный, если вы не являетесь еретиком Git) и замените все секреты во втором на заполнители. Зафиксируйте второй, чтобы все, кто проверяет проект, знали формат, который они должны иметь; но секретный ключ никогда не касается хранилища. Если вам нужно обмениваться ключами между разработчиками, сделайте это другим способом (от IRC / Slack / Email до зашифрованного USB-накопителя, в зависимости от того, насколько конфиденциальны данные).
Если вы используете решение типа YAML, в коде вы можете попытаться найти файл, если он отсутствует, затем использовать environment, или наоборот — найдите environment, если там нет переменной, найдите конфигурационный файл для чтения (и, возможно, даже вставьте его ENV
, чтобы не использовать environment).не нужен другой объект конфигурации; вы могли бы сделать это в config/application.rb
каком-то роде. Если вы придерживаетесь env.sh
такого подхода, вы можете напрямую объявлять переменные среды; когда вам нужно начать разработку, вы можете source env.sh
(или короче . env.sh
) их настроить.
Ответ №3:
Я должен отметить, что все разработчики, работающие над проектом, используют одну и ту же базу данных, поэтому нам всем нужен один и тот же КЛЮЧ для разработки и промежуточной среды.
Храните ключ и любые другие общие секреты в защищенном общем хранилище. Многие менеджеры паролей предоставляют общие хранилища, такие как 1Password или LastPass.
Затем каждый разработчик может скопировать ключ из общего хранилища и установить его в своей среде разработки.