Encrypted Credentials①
Encrypted Credentialsとは
Rails5.2から導入され、秘密情報を管理する機能です。外部に公開されたくない値はcredentials.yml.encというファイルでまとめて管理し、暗号化・復号にはmaster keyが必要になります。
credentialsの使い方
credentials.yml.encは普通に編集することができません。まずは編集するための準備を行います。
VSCodeでcredentialsを編集できるようにしていきます。
VSCodeで、「Command + Shift + P」を同時に押してコマンドパレットを開きます。
続いて、「shell」と入力します。そして「PATH内に'code'コマンドをインストールします」という項目が表示されるので、それをクリックします。
credentialsを編集
ターミナル
# アプリのディレクトリにいることを確認して $ EDITOR='code --wait' 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: dcb9317dcd2d42d9e045a2cd00c20df0b8109・・・
コメントアウトになってる部分を外して保存します。
※yamlファイルの記述方法 yamlファイルではインデントが意味を持っています。ネストをさせる場合は、上のコードの2,3行目のようにスペース2つのインデントを入れるようにします。
credentialsの内容を確認
ターミナル
$ rails c $ Rails.application.credentials[:secret_key_base] $ Rails.application.credentials[:aws][:access_key_id]
carrierwave.rb
CarrierWave.configure do |config| config.fog_credentials = { provider: 'AWS', aws_access_key_id: Rails.application.credentials[:aws][:access_key_id], aws_secret_access_key: Rails.application.credentials[:aws][:secret_access_key], region: 'ap-northeast-1' } end
master.keyとは
config/master.keyに記載されいる値のことです。記載されていればcredentials.yml.encファイル を先ほどみたいなに編集することができます。
そのほかに、「環境変数」にキーを設定することでも同様の操作ができます。
マスターキーを環境変数にセット
config/master.key
b0705c15e27c0dd14e34fda・・・
コンソール
$ export RAILS_MASTER_KEY=(上の英数字)
※マスターキーとして使用する環境変数名は必ず「RAILS_MASTER_KEY」にする必要があります。
※「=」の前後にスペースが入らないよう注意です。