Как я могу сохранить ключ шифрования вне системы управления версиями в Ruby

#ruby-on-rails #ruby #encryption

#ruby-on-rails #ruby #шифрование

Вопрос:

Мне нужно использовать шифрование для личных / личных пользовательских данных. Я собираюсь использовать следующую библиотеку шифрования.

RbNaCL

Мне нужен способ сохранить КЛЮЧ вне системы управления версиями, чтобы я мог запускать приложение локально. При отправке кода нашей хостинговой компании я могу поместить КЛЮЧ в переменные среды сервера. Просто не уверен, как и как лучше всего сделать это локально.

Я должен отметить, что все разработчики, работающие над проектом, используют одну и ту же базу данных, поэтому нам всем нужен один и тот же КЛЮЧ для разработки и промежуточной среды.

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.

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