【Rails】credentials.yml でシークレットキーを登録し、呼び出す方法

アプリ内でAPIキーやシークレットキーなどの秘密情報を設定する場合、他人に見られないよう厳重に管理する必要があります。

これらの秘密情報はサーバーの環境変数にセットして Railsで読み込んだり、dotenvのようなGemで管理したりする方法がありますが、

今回は、Rails5.2 から追加されたcredentials.yml.encでこれらの秘密情報を登録、および呼び出す方法についてまとめました。

(credentials.ymlの仕組みについての説明は省きます)

目次

開発環境

  • Ruby 3.1.2
  • Ruby on Rails 7.0.4
  • Bootstrap 5.2.3
  • M1 Macbook Air 2020
  • mac OS Monterey (ver. 12.4)

credentials.ymlの編集(シークレットキーの登録)

Railsアプリ内のシークレットキーはconfig/credentials.yml.encという名のファイルで管理しますが、エディターで直接開こうとしても暗号化されているため読めません。

そこで、ターミナルに以下のコマンドを入力してvimで編集します。(cd でアプリフォルダに移動した状態で実行)

$ EDITOR='vim' rails credentials:edit

開くと以下のように表示されます。

# aws:
#   access_key_id: 123
#   secret_access_key: 345

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: **********************************

初期状態で表示されているサンプルを参考にしてパスワードやシークレットキーを入力します。

vim で編集するにはまず、iを入力して表示モードから入力モードに切り替えます。

入力モードに切り替えたら、以下を参考にシークレットキーやパスワードを入力します(半角英数字のみ)。

aws:
  access_key_id: *****************
  secret_access_key: **********************************

db:
  password: ************
  hostname: *************

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: **********************************

入力し終えたらescを押して入力モードを解除し、:wqで保存して終了します。

保存せずに終了する場合は:q!を入力します。

シークレットキーを呼び出す

config/credentials.ymlに登録したシークレットキーをコード上で呼び出すには、以下のように記述します。

Rails.application.credentials...

例えば、config/database.ymlにてdbpasswordを呼び出したい場合、呼び出す箇所に以下のように記述します。

production:
  adapter: mysql2
  encoding: utf8mb4
  database: ⚪︎⚪︎⚪︎_production
  username: root
  password: <%= Rails.application.credentials[:db][:password] %>
  host: <%= Rails.application.credentials[:db][:hostname] %>

また、以下のように記述することも可能です。

Rails.application.credentials.dig(:db, :password)

Rails.application.credentials.db[:password]

実際に呼び出せているかどうか、コンソール上で確認するといいでしょう。

irb(main):001:0> Rails.application.credentials.dig(:db, :password)
=> "***********"

登録したパスワードがちゃんと呼び出せていればOKです。

参考資料

あわせて読みたい
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

愛知の34歳。無職で暇になり始めたプログラミング(Ruby on Rails)の忘備録をまとめたブログです。最近は別にやりたいことができたのでプログラミングほぼやっていません。気が向いたらまた再開するかも。僕の日常はメインブログの方で更新しています。

コメント

コメントする

目次