技術

投稿日:

どうも中田です。

Rails5.2から config/credentials.yml.encconfig/master.key が追加されてますが、
これちゃんと使いましょうねという話

これら簡単に言うと、接続情報とか大事な情報を暗号化して、gitで管理できるようにできるもんです。
(接続情報とかgitで管理すべきもんじゃないですもんね)

ファイルの説明

config/master.key: 暗号化するための鍵 (git管理対象外)
config/credentials.yml.enc: 情報を暗号化したファイル

config/credentials.yml.encを編集したい!

EDITOR=vim bin/rails credentials:edit

そうやって編集したり↓こんな感じのファイルになるかもですね

secret_key_base: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

aws:
  access_key_id: xxxxxxxxxxxxxxx
  secret_access_key: xxxxxxxxxxxxxxxxxxxxxxxxxx

config/credentials.yml.encを参照したい!

上記でaccess_key_idをプログラムから参照したい場合はこれ。

Rails.application.credentials.dig(:aws, :access_key_id)

じゃあ本番どうすんの問題

一般的に本番環境には、git管理対象のファイルしかデプロイしない。

master.keyはgit管理対象外なので、情報複合化できないじゃん!
そんな時のために↓この環境変数でmaster.keyの情報を設定しておけば大丈夫。

export RAILS_MASTER_KEY=xxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxcat config/master.key の値です

今日はこんな感じで。

-技術

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

[Angular6] Angularのユニットテストでprivate変数を読み込む

Angularでテストコードを書いている時、component側で定義しているp …

no image

【AWS】mysqldump&S3バックアップ。それは一瞬の出来事

こんにちは、中田です。 RDSでしっかりとバックアップ! とまでしなくていい場合 …

no image

【nginx/unicorn】(13: Permission denied) while connecting to upstream

どうも中田です。 AWS上でAPIサーバを構築してて、 * Webサーバ:ngi …

no image

【AngularJS】 $on, $emit, $broadcast

どうも、なかたです。 AngularJSのコントローラー(スコープ)間のデータや …

no image

Angular6で子コンポーネントに文字列を渡す

文字列と変数の値を渡す時、記述が少しだけ違います。 // 文字列を渡したい時 & …