credentialsとは
production環境用の秘密情報の管理をするためにRails5.2でcredentialsという機能が追加された。
これが導入されるまでは環境変数などで設定されていた。
credentialsは、管理される秘密情報そのものを指すと同時に、管理の仕組みを指す言葉である。
この仕組みを簡単に説明すると、credentials.yml.encファイルに記載された情報を暗号化し、master.keyで複合し、使用できるようにしたもの。
credentials.yml.enc
秘密情報(credentials)は、config/credentials.yml.encに記述する。
このファイルは常に暗号化して保存され、このファイルの内容を編集するには専用コマンドを使用する。
複合はmaster.keyファイルなどからキー情報を取り出して行われる。
基本的に同一のリポジトリに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