STUDY MEMO

学習のメモ書き

<Ruby on Rails> credentials.yml.encの設定方法

credentialsとは

production環境用の秘密情報の管理をするためにRails5.2でcredentialsという機能が追加された。
これが導入されるまでは環境変数などで設定されていた。
credentialsは、管理される秘密情報そのものを指すと同時に、管理の仕組みを指す言葉である。
この仕組みを簡単に説明すると、credentials.yml.encファイルに記載された情報を暗号化し、master.keyで複合し、使用できるようにしたもの。

credentials.yml.enc

秘密情報(credentials)は、config/credentials.yml.encに記述する。
このファイルは常に暗号化して保存され、このファイルの内容を編集するには専用コマンドを使用する。
複合はmaster.keyファイルなどからキー情報を取り出して行われる。

Image from Gyazo ※1のp280を参照

基本的に同一のリポジトリにcredentialsファイルとmaster.keyファイルを一緒に置かないこと(復号できてしまうので)。
Railsアプリケーションは、.gitignoreに最初からconfig/master.keyが記述されており、pushされないようになっている。


中身を見るコマンド

$ bin/rails credentials:show


編集するコマンド

$ bin/rails credentials:edit

EDITOR環境変数が設定されていないと、以下のような記載が必要になる。
例:vimの場合

$ EDITOR=vi bin/rails credentials:edit

ちなみにEDITOR環境変数は以下のように設定できる。

$ echo 'export EDITOR=vi' >> ~/.zshrc  // 環境変数EDITORを設定
$ source ~/.zshrc  // 環境設定ファイル~/.zshrcの内容を反映させる


アプリケーションからcredentialsを参照

例:デフォルトのAWSを参照する

$ Rails.application.credentials.aws
=> {:access_key_id=>123, :secret_access_key=>345}

$ Rails.application.credentials.aws[:access_key_id]
=>123

$ Rails.application.credentials.aws[:secret_access_key]
=>345

参考文献

Rails5.2から追加された credentials.yml.enc のキホン - Qiita

現場で使える Ruby on Rails 5速習実践ガイド | 大場寧子, 松本拓也, 櫻井達生, 小田井優, 大塚隆弘, 依光奏江, 銭神裕宜, 小芝美由紀 |本 | 通販 | Amazon※1

Linux編集エディタの変更 - 環境変数EDITORの設定 - Linux入門 - Webkaru

【 source 】コマンド/【 . 】コマンド――シェルの設定を即座に反映させる:Linux基本コマンドTips(169) - @IT