Rails 5.2 Зашифрованные учетные данные для производственной среды - PullRequest
0 голосов
/ 27 июня 2018

Я создал новое приложение Rails с версией 5.2. В Rails 5.2 появилась функция шифрования секретов.

Я настроил секретный ключ в файле devise.rb

config.secret_key = Rails.application.credentials [Rails.env.to_sym] [: secret_key_base]

, а также добавлены секретные ключи для всех сред, использующих

РЕДАКТОР = полномочия vim rails: редактировать

development:
 secret_key_base: absdss

test:
 secret_key_base: 123232

production:
 secret_key_base: 123456

после сохранения учетных данных я могу получить секретные ключи в консоли rails в локальной сети

Вывод на консоль рельсов:

Running via Spring preloader in process 44308
Loading development environment (Rails 5.2.0)
2.5.1 :001 > Rails.application.credentials.development[:secret_key_base]
=>     "absdss" 

Учетные данные не работают на производственном сервере, мы используем CI / CD в gitlab для этапов развертывания, когда я запускаю

rails db: create db: migrate

я получаю следующую ошибку

> rails db:create db:migrate

 ---> Running in 1563453ddf2a

rails aborted!

NoMethodError: undefined method `[]' for nil:NilClass

/usr/src/app/config/initializers/devise.rb:12:in `block in <main>'

/usr/local/bundle/gems/devise-4.4.3/lib/devise.rb:307:in `setup'

/usr/src/app/config/initializers/devise.rb:5:in `<main>'

/usr/local/bundle/gems/bootsnap-1.3.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:50:in `load'

Теперь вопрос в том, как установить RAILS_MASTER_KEY на рабочий сервер?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я делюсь несколькими моментами, которые могут вам помочь

Зашифрованные учетные данные предлагают несколько преимуществ по сравнению с открытыми учетными данными или переменными среды

В Rails 5.1 введены зашифрованные секреты

конфиг / secrets.yml.key
конфиг / secrets.yml.enc

Rails 5.2 заменяет оба секрета зашифрованными учетными данными

конфиг / credentials.yml.enc
конфиг / master.key

файл config / master.key создается при создании проекта rails

Ключ шифрования (master.key) игнорируется

В производстве

конфигурации / среда / production.rb

config.require_master_key = true

Невозможно расшифровать ваши учетные данные без ключа

Управление ключом

а. scp или sftp файл

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

с. Я использовал последний проход для управления файлом мастер-ключа

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

Ключ на master.key используется для шифрования и дешифрования всех учетных данных. Он не заменяет базу секретных ключей.

База секретных ключей требуется Rails. Если вы хотите сгенерировать новый запуск секретного ключа,

bin/rails secret

и добавьте это к своим учетным данным, запустив учетные данные bin / rails: edit.

0 голосов
/ 27 июня 2018

Вы можете поместить свой мастер-ключ как секретную переменную MASTER_KEY в настройках Gitlab CI / CD, а затем поставить

echo "$MASTER_KEY" > config/master.key

в before_script разделе вашего .gitlab-ci.yml файла.

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