17
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

database.ymlのパスワード管理方法2パターン -環境変数とcredentials.yml.encの使用-

Posted at

database.ymlにユーザー名やパスワードを平文で入力しGithub等にあげてしまうと、セキュリティ上の問題が発生する。そこで何かしらの方法で隠す必要があるが、その時の2つのパターンを説明します。

#●環境変数の使用

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: <%= ENV['DB_USERNAME'] %>
  password: <%= ENV['DB_PASSWORD'] %>
  host: localhost

<%= ENV['DB_USERNAME'] %>に該当する部分が環境変数を利用している部分です。
このコードを記載しておき

$ export DB_USERNAME =sample_user
$ rails server

と実行すれば、<%= ENV['DB_USERNAME'] %>の部分にsample_userが代入され実行される。

#●credentials.yml.encの使用(rails5.2以降)
rails5.2以降では、credentials.yml.encを使用し、管理する方法がある。
vimを使用するため、アレルギーを発症する人もいるかもしれない(自分がそう)ですが、慣れておくと今後便利なので、できればこちらの方法をおすすめします。
使用方法は

$ EDITOR="vi" bin/rails credentials:edit
credentials.yml.enc
db:
  username: sample_user
  password: sample_password

このように情報を格納し、出力時は

database.yml
default: &default
  username: <%= Rails.application.credentials.db[:username] %>
  password: <%= Rails.application.credentials.db[:password] %>
  host: localhost

とすることで代入され実行できる。 
ちなみにvim実行時のコマンドで、本当に最低限覚えておく必要があるもを下記にまとめました。本当に最低限なので、別途学習してください。

・コマンドモード
vim実行時の最初の状態。最低限のコマンドを下記に記載

:wq #ファイルを上書き保存して終了
:q  #上書きせずに終了
:q! #上書きせず強制終了
shift+zz #ファイルに変更があれば保存して終了、なければ上書きせずに終了

・インサートモード
コマンドモード時、iを押すと切り替わり、入力ができるようになる。コマンドモードへ戻る際は、escキーを押す。

#●まとめ
パスワード管理方法をまとめた。AWS周囲をいじるとvimを使用する機会が増えるため、これからポートフォリオ作成を行うレベル感の方は、慣れておく意味でもcredentials.yml.encの使用をおすすめします。

17
22
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
17
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?