Rails

【Rails】Rails5.2以降で追加された「credentials.yml.enc」について簡単にまとめてみた!

Rails

 

今回は、Rails5.2以降で追加された「credentials.yml.enc」について簡単に解説したいと思います。

よし
よし
「credentials.yml.enc」は秘密情報を扱うので、設定する時は慎重に行いましょう!

credentials.yml.encとは

credential.yml

「credentials.yml.enc」とは、秘密情報を管理する仕組みです。

Rails5.2以降では、新しくアプリを立ち上げた時に「config/secrets.yml」は生成されず、代わりに「config/credentials.yml.enc」が生成されます。

 

「credentials.yml.enc」は内容が暗号化されているため、エディタで直接編集することができません。

編集したい時は、ターミナルで以下のコマンドを打ち込み編集することになります。

$ EDITOR="vi" bin/rails credentials:edit

 

credentials.yml.encとmaster.key

master.keyとcredentials.yml.enc

「credentials.yml.enc」と「master.key」は、Rails5.2以降で「rails new」すると自動的に生成されます。

「master.key」は「credentials.yml.enc」を復号化する際に用いられます。

つまり、「master.key」がなければ「credentials.yml.enc」を復号化することができません。

復号化とは、暗号化されたデータを元に戻し、読める状態に戻すことを言います。

よし
よし
「master.key」と「credentials.yml.enc」はセットだね!

 

注意点

先ほど、「master.key」は「credentials.yml.enc」を復号化する際に用いられると説明しました。

そして「credentials.yml.enc」は、秘密情報を管理しています。

 

ということは「master.key」は絶対に他人には知られてはいけない鍵のため、間違ってもGithubなどにあげてはいけません。

チーム開発などでメンバーの「credentials.yml.enc」を開きたい時は、LINEやSlackなどプライベートな方法で「master.key」を教え合いましょう。

よし
よし
ちなみに「master.key」は初めから「.gitignore」に入っているよ。

 

画像投稿の例

では次に、画像投稿の例を用いながら「credential.yml.enc」について解説していきます。

「secrets.yml」の時では、下図のように「.bash_profile」に記述した環境変数を参照していました。

環境変数

↓secrets.ymlを用いた画像投稿の仕組みについてはこちら

AWS
【AWS】ローカル環境の画像保存先をS3に変更する方法を1から解説!ローカル環境の画像保存先をS3に変更する方法を1から解説しています。環境変数の値を「secrets.yml」から読み込んで、さらにその内容を「carrierwave.rb」が読み込むという構造になっています。少し難しい構造ですが、1つ1つ進めていきましょう。...

 

しかし「credentials.yml.enc」では、環境変数でのキーの取り扱いが要らなくなります。

idやパスワードを直接 「credentials.yml.enc」に書き込むことで、参照する段階が1つ省略できることになります。(下図)

credentials.yml.enc

 

 

今回は、Rails5.2以降で追加された「credentials.yml.enc」について簡単に解説しました。

「secrets.yml」よりも簡単に秘密情報を管理することができるので、使いこなせるように頑張りましょう!