dreamin' blog 開発日誌

herokuを使っていると、環境変数でDATABASE_URLが設定される。 その流れでdotenvを入れて、環境毎の値はdotenvでサクッと管理してきた。

けれども、本来crednetailに当たるような情報も暗号化せずに管理していたので、 それは良くないなと、sentryを導入するにあたってcredentialを使うようにしてみた。

今回は秘匿化が目的なので、 Rails.application.credentials[Rails.env.to_sym][:foo] で取れるようにしてみた。 本来は環境毎に秘密鍵を分けて管理できる仕組みがあるといいのだけれど。

ただ、本当はもうちょっといいやり方がないか模索している。

https://twitter.com/yoshi_hirano/status/1115420387976699904

https://twitter.com/yoshi_hirano/status/1067019171521716224

config.x は以前使用したことがあるのだけど、結局ENVを渡すことが多くなってしまった。 本番環境の値はcredentailに入れて、開発環境の値はenvでというのも悪くないと思っている。 その橋渡し役に config.x はrailsの機能を使うやり方でいいなぁと思う。

ただ、実運用の世界ではproductionだけでなくstagingの情報も秘匿化しなくてはならなかったり、 秘密鍵の権限管理をしなくてはならなかったり、もうちょっと複雑なので、 Config + yaml_valut あたりの運用になってしまうのではないかとは思う。 もう少し高いセキュリティレベルが求められるなら、そもそも暗号化されていたとして、githubに置いて良いのか?という議論もあるでしょうし。 そうなると、kmsで権限管理を行い環境変数を引き渡す方法がまだまだ残りそうな気もする。