はじめに
この記事は下書きにあった古いものを見つけました。そのままにしておくのももったいないと思い公開します。
記事の正確性についてはかなり不透明です。
まとめ
Rails6
multi environment credentialsを使う
RAILS_ENV
=環境名
- 機密情報は
config/credentials/環境名.yml.enc
に記述 - 機密情報のキーは
config/credentials/環境名.key
に配置- 編集するときは
rails credentials:edit --environment 環境名
- 編集するときは
-
RAILS_MASTER_KEY
を使う際は環境にあったキーを設定 -
config/credentials.yml.enc
はRAILS_ENV
が指定されていないときに参照
Rails5.2
credentials.yml.encを使う
- 機密情報は
config/credentials.yml.enc
を参照 -
RAILS_MASTER_KEY
を使う際はconfig/master.key
を設定- 編集するときは
bin/rails credentials:edit
- 編集するときは
はじめに
credentials.yml.encでgoogle検索をかけると様々な記事が出てくる。
また、Railsの学習でも当然credentials.yml.encが出てくるのだが、バージョンによって情報が混在していてよくわからなった。
サイトによっては「credentials.yml.encと環境.yml.encを内容によって使い分ける」(≒どっちにも情報を入れる?)と書いてあったりしてよくわからなかった。
自分で調べた上での理解のため、もし間違っている部分があればお知らせください…
credentials.yml(環境名.yml)って何よ?
railsで使う機密情報を入れておくファイルです。
例えばAPIKEYやDBの接続情報などの機微な情報を格納しておきます。
railsで使いたい際は
Rails.application.credentials.aws[:access_key]
のように読み出します。
※注: Rails.application.secrets
で取得できると記載がある場合がありますが、これはRails5.1までの話であり、このときまではcredentials.yml
ではなくsecrets.yml
でした。
どこにあるの?
credentials.yml
はconfig/credentials.yml.enc
、
環境名.yml
はconfig/credentials/環境名.yml.enc
にあります。
どうやって作るの?
rails credentials:edit
rails credentials:edit --enviroment 環境名
参考文献
@tearoom6 さんの素晴らしい記事
Rails 秘密情報管理機能の変遷
Rails 6 adds support for multi environment credentials
Rails 6よりサポートされたMulti Environment Credentialsをプロジェクトに導入する