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.* として利用できる。

参考:

Rails 5.1 を production 環境で起動する際の秘密鍵設定 – Qiita

rails 5.1 からの encrypted secrets に移行する | hamayuzin の日記

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です