🖥

Rails – 今更だけど credentials.yml.enc / secret_key_base の扱いがよく分かってなかった

2023/09/01に公開

つながり

  • credentials.yml.enc でどんな値でも暗号化/複合できる
  • master.key の値で credentials.yml.enc を複合出来る
  • secret_key_base は秘密情報なので credentials.yml.enc に含めておくのが良い

ということらしい

rails new

そもそも rails new した時に

  • config/credentials.yml.enc
  • config/master.key

がセットで生成されるようだ

master.key はただ復号用の値を記録しただけのファイルなのだが、この値があれば credentials.yml.enc を複合したり編集したり出来る

だが master.key.gitignore に含まれているので git操作で消えている場合もあるだろう

編集

bin/rails credentials:edit でファイル編集が出来るはずなのだが怒られた

  • master.key がないので自動生成してくれた
  • config/credentials.yml.enc を暗号化したのは別の master.key だったので複合は出来ない

ということみたいだ

EDITOR=vi bin/rails credentials:edit
Adding config/master.key to store the encryption key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Save this in a password manager your team can access.

If you lose the key, no one, including you, can access anything encrypted with it.

      create  config/master.key

Couldn't decrypt config/credentials.yml.enc. Perhaps you passed the wrong key?

credentials の編集が初めての場合は credentials を削除してやり直してしまおう

rm config/credentials.yml.enc
EDITOR=vi bin/rails credentials:edit

以下のようなテンプレ内容が生成されるので、そのまま保存してみる

# aws:
#   access_key_id: 123
#   secret_access_key: 345

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

再編集

これで準備が整った
master.key ファイルがあればこのまま編集し続けられる。

EDITOR=vi bin/rails credentials:edit

master.key ファイルが無くても環境変数で値指定すれば複合・編集が可能だ

RAILS_MASTER_KEY=yyyyyyyyyyyyyyyy EDITOR=vi bin/rails credentials:edit

編集できない場合

エディタ指定が変だとエラーもなく終了してしまうようだ

EDITOR=waaaaaaa bin/rails credentials:edit
File encrypted and saved.

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-04-03

Discussion