0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Rails6のcredentials.yml.encはどう利用どうするべきか

Posted at

はじめに

この記事は下書きにあった古いものを見つけました。そのままにしておくのももったいないと思い公開します。
記事の正確性についてはかなり不透明です。

まとめ

Rails6

multi environment credentialsを使う

RAILS_ENV =環境名

  • 機密情報はconfig/credentials/環境名.yml.encに記述
  • 機密情報のキーはconfig/credentials/環境名.keyに配置
    • 編集するときはrails credentials:edit --environment 環境名
  • RAILS_MASTER_KEYを使う際は環境にあったキーを設定
  • config/credentials.yml.encRAILS_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.ymlconfig/credentials.yml.enc
環境名.ymlconfig/credentials/環境名.yml.encにあります。

どうやって作るの?

credentials.yml.enc
rails credentials:edit
環境名.yml.enc
rails credentials:edit --enviroment 環境名

参考文献

@tearoom6 さんの素晴らしい記事
Rails 秘密情報管理機能の変遷
Rails 6 adds support for multi environment credentials
Rails 6よりサポートされたMulti Environment Credentialsをプロジェクトに導入する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?