TL;DR
経緯
開発環境をCodespacesからlocalに移行したときに、config/master.keyをメモせずにCodespacesを削除してしまい、credentials.yml.encを復号できなくなった。
- localでリポジトリをclone
- Codespacesを削除
としたところ、master.keyは.gitignoreに含まれていたため管理されておらず、master.keyがわからない状態になってしまった。
解決方法
rails credentials:editを実行し、新しいmaster.keyを生成
詳細
環境
Rails 8.0.2
credentials.yml.encとmaster.keyの関係
credentials.yml.enc
- 暗号化された機密情報(APIキー, secret_key_baseなど)を保管するファイル
-
rails newで新しいアプリを作成時に自動的にconfig/credentials.yml.encとconfig/master.keyが生成される -
EDITOR=vim rails credentials:editなどで、暗号化して保存したいtokenなどを追加していく
master.key
- credentials.yml.encを復号するための鍵
master.keyは.gitignoreに含まれる
- master.keyは機密情報を復号できる鍵のため、GitHubには公開しない
- チーム開発時は別の方法(パスワードマネージャなど)で共有
master.keyがない場合の対処
- 古い
credentials.yml.encを削除してからrails credentials:editを実行すると、新しいmaster.keyとcredentials.yml.encが生成される- 新しいcredentials.yml.encにもう一度tokenなどを追加する必要がある