credentials на три ...
 
Уведомления
Очистить всё

credentials на три окружения: как не перепутать ключи и кто хранит master.key

5 Сообщения
5 Пользователи
7 Реакции
545 Просмотры
pavel_1988
Сообщения: 8
Автор темы
Разобрался с блоками разработчик
Присоединился: 3 года назад
[#73]

Rails 8.0, три окружения: development, staging и production. Сейчас все ключи лежат в одном credentials.yml.enc, внутри разложены по staging: и production:, а в коде везде credentials.dig(Rails.env.to_sym, :payments, :key). Один раз уже перепутали ключ стейджа и прода. Как вы раскладываете? И кто у вас держит master.key, у нас он у троих в заметках.


4 ответа
armen_pet
Сообщения: 30
Собрал свой gem DevOps-инженер
Присоединился: 4 года назад

«У троих в заметках» это то, от чего у меня дёргается глаз. Ключ должен жить в двух местах: в секретах CI и в переменной RAILS_MASTER_KEY на сервере. Разработчику для локалки нужен только ключ development, и то не всегда. Как только ключ прода оказался на ноутбуке, считай, что он уже в чьей-то резервной копии.


Ответ
kostya.sokurov
Сообщения: 73
Держит прод бэкенд-разработчик, senior
Присоединился: 4 года назад

С Rails 6 есть отдельные файлы на каждое окружение, так и делай:

bin/rails credentials:edit --environment staging
bin/rails credentials:edit --environment production
# появятся config/credentials/staging.yml.enc и staging.key,
# config/credentials/production.yml.enc и production.key

Rails сам выбирает файл по RAILS_ENV, а в коде остаётся просто:

Rails.application.credentials.dig(:payments, :api_key)

# если ключ обязателен, пусть падает при загрузке, а не на первом платеже
Rails.application.credentials.fetch(:payments).fetch(:api_key)

Перепутать уже не получится: в production.yml.enc физически нет ключей стейджа. Файлы *.key генератор сам добавляет в .gitignore, но проверь. На сервер RAILS_MASTER_KEY своего окружения. Вариант с fetch хорош в инициализаторе: приложение не стартует без ключа, и это видно сразу на деплое, а не в три часа ночи.


Ответ
GalinaKorneva
Сообщения: 30
Читает чужие PR бэкенд-разработчица
Присоединился: 4 года назад

И когда кто-то уходит из команды, а ключ у него был, перевыпускайте и master key, и сами секреты внутри


Ответ
gena39
Сообщения: 3
Пишет в irb SRE
Присоединился: 3 года назад

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


Ответ