🐣

credentials.yml.encにDB情報を保存する

2023/08/13に公開

credentials.yml.encにAWSのRDSの接続情報を暗号化して保存し、database.ymlから参照できるようにしました。

credentials.yml.encとは

暗号化された形式で認証情報や機密情報を保存するための設定ファイル。
アプリケーションの機密データを安全に管理するための仕組み。

credentials.ymlの編集

credentials.yml.encに暗号化した情報を格納するためにcredentials.ymlを編集します。
自分の場合はdocker-composeを使用しているので以下のコマンドで実行しました。

docker-compose run --rm -e EDITOR="vi" コンテナ名 bin/rails credentials:edit

-e EDITOR="vi" で環境変数 EDITOR を設定しています。この環境変数はテキストエディタ(vi)を指定するために使用されます。

実行すると編集画面が表示されるので、iキーを押して編集モードにして編集していきます。
下記のようにRDSの接続情報を記載しました。

db:
aws_host: "your_rds_host"
aws_user_name: "your_rds_username"
aws_password: "your_rds_password"

編集できたらescキーを押してから:wqコマンドで保存しviエディタを終了します。

database.ymlからcredentials情報を参照する

下記のように記載することでcredentialsに保存したRDSの情報を取得することができました。

database.yml
production:
  <<: *default
  database: データベース名
  host: <%= Rails.application.credentials.db[:aws_host] %>
  username: <%= Rails.application.credentials.db[:aws_user_name] %>
  password: <%= Rails.application.credentials.db[:aws_password] %>

Discussion