anthropogenic.pages.dev
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 は環境ごとに staging や production と読み替えることが可能。
| いままで | これから | |
|---|---|---|
| 提供元 | 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
anime
3
api
1
aws
3
cognito
1
game
1
howto
2
hugo
1
idea
2
life
6
log
2
maxim
2
mdx
1
rails
7
rubocop
1
ruby
1
rust
1
solution
2
stripe
1
tech
17
ui
1
warp
1