20240725

さようなら dotenv, こんにちは Encrypted credentials

The Complete Guide to Ruby on Rails Encrypted Credentials を読んで 認証情報の保存場所を .env から config/credentials/development.yml.enc に切り替えた。 Rails における認証情報の取り扱いの新標準だと思う。

この変更により rails アプリから認証情報を参照する方法も変わることになる。

screenshot of diff

同時にマスターキーも config/credentials/development.key になる。 これにより既存の config/credentials.yml.enc と config/master.key は不要になるので削除してしまってよい。環境ごとの認証情報と鍵は以下のコマンドで生成できる。

➜ EDITOR="vi" rails credentials:edit --environment=development

これで dotenv とさよならできるかと思ったが、AWS SDK にホームディレクトリ配下 .aws/{config,credentials} の認証情報を読みにいかせないための AWS_SDK_CONFIG_OPT_OUT だけは必要になる。これだけなら認証情報でもなんでもない。いままでは .gitignore でコミットしないとはいえ .env に平文で書かれていた認証情報が気になったが今後はそういう こともなくなるので精神衛生上もよい。

➜ cat .env
AWS_SDK_CONFIG_OPT_OUT=true

新旧を比較すると以下のようになる。development.yml.enc と development.key は環境ごとに stagingproduction と読み替えることが可能。

いままで これから
提供元 rubygem: dotenv rails 標準機能
認証情報の格納ファイル .env config/credentials/development.yml.enc
復号に使用する鍵 config/master.key config/credentials/development.key
rails アプリから認証情報を参照する方法 ENV[‘AWS_ACCESS_KEY’] Rails.application.credentials.dig(:aws, :access_key_id)
レポジトリへコミットするファイル なし config/credentials/development.yml.enc
レポジトリへコミットせずチームで共有するファイル(パスワード管理ツールなど) config/master.key config/development.key

2024-07-25 21:09:01 +0900 +0900


Next
Previous

anime 3
api 1
aws 3
cloudflrare 1
cognito 1
development 1
development process 1
development standard 1
game 1
howto 2
hugo 1
idea 2
impressed 1
leaning toothpick syndrome 1
life 6
log 2
maxim 2
mdx 1
postgresql 2
rails 7
rubocop 1
ruby 1
rust 1
solution 2
stripe 1
tech 17
ui 1
warp 1