LoginSignup
0
0

More than 1 year has passed since last update.

Railsのcredential.yml.encについて(自分の理解のための整理)

Posted at

経緯

credential.yml.encとかmaster.keyとかの話。
EC2にアプリをデプロイしようとした際、このあたりの設定で頭が混乱。
開発環境では意識することのない存在だったので、急に出てきてびっくり。
少しだけ理解できてきた気がするので、自分なりに整理してみました。
誤りがあったらご指摘ください。

credentials.yml.encとは何か

  • 秘匿情報(秘密鍵とかIDとかPWとか)がまとめて記述されている、暗号化されたファイル。
  • bin/railsディレクトリ下に置かれている。
  • 隠したい情報を環境変数にセット。APサーバーは環境変数を経由して情報を取得・利用する。
  • 復号化キーはmaster.key。$ rails new の時に、configディレクトリ下に生成される。デフォルトで.gitignoreに登録される。
  • 当然、$ git cloneで開発環境に連れてこれないので、本番環境上で設定してやる必要がある。
  • $EDITORで指定されたエディタでのみ編集できる。

RDSへの接続の設定。database.ymlに、以下のように記述すれば繋がる。しかし、

database.yml
production:
  <<: *default
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: <アプリケーション名>_production
  pool: 5
  username: <ユーザー名>
  password: <パスワード>
  socket: /var/lib/mysql/mysql.sock
  host: <ホスト名>

これだとgithubなどでソースコードを管理した際に、usernameやpasswordが丸見えになる。
そこで、usernameやらpasswordの値を、環境変数を定義した上でcredentials.yml.encに格納し、database.yml上は変数で記述して値を隠す、という形をとる。

参考

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