Railsでデータベースの値を暗号化
2021.04.16 Ruby
attr_encrypted を使ってデータベースの特定カラムを暗号化する方法をまとめます。Gemfileへの追記、マイグレーション、モデルでの設定、データ登録の例を記載します。
attr_encrypted
データベースの特定のカラムを暗号化することができます。使用するにはGemfileに gem 'attr_encrypted' を追記します。
モデル作成
暗号化するtokenカラムを作りたい場合は encrypted_token カラムと encrypted_token_iv カラムが必要になります。マイグレーションで create_table にこれらを追加します。
モデルファイルに設定を記載
モデルに attr_encrypted :token, key: :encrypt_key と記載し、encrypt_key メソッドで .env か Settings から参照するようにすると良いです。
データを登録
user.token = 'token' で保存すると、user.token で復号された値が取得でき、user.encrypted_token でDBに保存されている暗号化されたデータが確認できます。