hiroki-saoyun’s blog

40歳でも夢くらい持つよね!!プログラミング勉強中!

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」にする必要があります。

※「=」の前後にスペースが入らないよう注意です。