とある神戸大生の走り書き

主にプログラミングに関して、学んだことを走り書きとして残していきます。

Railsでoauth access tokenなどを暗号化した

目的

  • 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

参考

qiita.com