credentials
Rails 5.2 で導入されたマスターキーを用いてクレデンシャルを暗号化して保存する仕組み。
config/master.key
もしくは、ENV['RAILS_MASTER_KEY']
にマスターキーを設定する。- 暗号化されたクレデンシャルが
credentials.yml.enc
に保存される。
production 環境で マスターキーが設定されていない場合に例外を投げさせる。
# config/environments/production.rb config.require_master_key = true
credentials.yml.enc
に保存した情報は、アプリケーション内から Rails.application.credentials.*
として利用できる。
参考:
Rails 5.2 から追加された credentials.yml.enc のキホン – Qiita
Rails 5.2 から導入された credentials.yml.enc を極める – Qiita
Rails 5.2 の credential 管理を試してみた | production.log
Rails 5.2 から secrets.yml* が廃止され credentials.yml.enc に統合されるよ – Qiita
Rails 5.2 の新機能 Credentials でパスワード等を管理する | 動かざることバグの如し
Rails 5.2 の credentials.yml.enc に登録してあるデータを呼び出す方法 | 約束の地
Rails 5.2 の credential 機能を Kubernetes で使う 翻訳 | TechRacho
Encrypted Credentials in Ruby on Rails | Craft Academy
Rails Encrypted Credentials on Rails 5.2 | Engine Yard
Rails 5.2 credentials cheat cheat | EquiValent
クレデンシャルを編集する
vi をデフォルトのエディタに設定する。
$ export EDITOR=vi
クレデンシャルをエディタで編集する。(編集後に暗号化されて保存される。)
$ rails credentials:edit
Atom Editor を使って編集する。
$ EDITOR="atom --wait" rails credentials:edit
参考:
secrets.yml や環境変数を Rails 5.2 の Encrypted Credentials に移行する – Qiita
Encrypted Credentials in Ruby on Rails | Craft Academy
require_master_key
production 環境で master_key
が設定されていない場合、例外を発生させる。
config.require_master_key = true
参考:
require_master_key – rails/railtie.rb at v5.2.3 · rails/rails – GitHub
@require_master_key – rails/configuration.rb at v5.2.3 · rails/rails – GitHub
MissingKeyError – rails/secrets.rb at v5.2.3 · rails/rails – GitHub
secret_key_base
アプリケーション内で暗号化や署名に用いる基準となるキー。
secret_keky_base
を用いて実装されているコア機能:
- クッキーの暗号化
- クッキーの署名
- メッセージ/トークンの署名・匿名化 (
message_verifier
)
参考:
Rails の secret_key_base を理解する 翻訳 | TechRacho
rails-env-credentials
環境毎にクレデンシャルを切り替える gem
参考:
sinsoku/rails-env-credentials: Enhances Rails credentials for multiple environments – GitHub
Rails 5.2 の Credentials を各環境でも使えるようにする gem を作りました | アジャイル SE の憂鬱
移行
参考:
secrets.yml や環境変数を Rails 5.2 の Encrypted Credentials に移行する – Qiita
Rails 5.2 の本番デプロイ時に secrets.yml でハマった | Kei178’s blog
Separate secret_key_base in Rails 5.2? – Stack Overflow
旧情報
secrets.yml / secret_key_base
参考:
production 環境で secret_token をセットする – Qiita
secret_key_base あたりのメモ – Qiita
Rails で config/secrets.yml に書いた値 (「キー」に対応する「値」) を呼び出す方法 | 約束の地
Rails 5.1
暗号化された秘密情報の設定をする。(config/secrets.yml.key
及び config/secrets.yml.enc
を作成)
$ rails secrets:setup
秘密鍵を生成する。(secret_key_base
用)
$ rails secret
secrets.yml.enc
内の秘密情報を編集する。
$ rails secrets:edit
secret_key_base
を暗号化された secrets.yml.enc
内に保存する。
# secrets.yml.enc production: secret_key_base: 0123456789abcdef...
暗号化された秘密情報を有効にする。
# config/environments/*.rb config.read_encrypted_secrets = true
secrets.yml.enc
に保存した情報は、アプリケーション内から Rails.application.secrets.*
として利用できる。
参考: