Railsでoauth access tokenなどを暗号化した
目的
方法
- gemなど、色々な暗号の方法がある。
- 結果的に今回は、Rails5.2から導入されたEncrypted Credentialsを利用することにした。
実際やってみる
以下のコマンドを叩く
$ EDITOR=vim bin/rails credentials:edit
EDITORの部分でエディターを指定できるらしいけど、環境変数:EDITORを設定しておかないといけないので、今回はvimで行う。
vimが開いて、下記のようになる。
# 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: #######################
vimのコマンドをよく忘れるので、下記のURLを貼っておきます。 qiita.com
vimで編集したら、:wq入力して保存。 保存したら、
- config/credentials.yml.enc
- config/master.key
が生成される。
この時、master.keyにあるのは暗号化の鍵なので.gitignoreに追加されるようになってる。※
値の取り出し方
secret.yml
hoge: 123 fuga: fuga_id: 345
上記のようになっている場合は、下記のように値を取り出せる。
Rails.application.credentials.hoge # => "123" Rails.application.credentials.fuga[:fuga_id] # => 345
※何故かmaster.keyがレポジトリに表示されていた
今回、上記のように暗号化をしてみたが、なぜかmaster.keyがレポジトリに上がってしまっていた。 これでは、暗号化の意味がないので、自分で.gitignoreしないといけない。
そんな時は、下記のようにしてから、commitしてpushしたらファイルがGIthub上に表示されなくなる。
$ git rm -r --cached config/master.key