attr_encrypted
データベースの特定のカラムを暗号化することができます。
使用するにはGemfileに
gem 'attr_encrypted'
を追記します。
モデル作成
暗号化するtokenカラムを作りたい場合は
encrypted_tokenカラムと
encrypted_token_ivカラムが必要になります。
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name
t.string :encrypted_token
t.string :encrypted_token_iv
t.timestamps
end
end
end
モデルファイルに設定を記載
モデルファイルに暗号化するカラムの設定を下記の様に記載します。
class User < ApplicationRecord
attr_encrypted :token, key: :encrypt_key
def encrypt_key
# SecureRandom.random_bytes(32) で生成した値をSettingsか.envから参照する
end
end
key:に関しては、.envかSettingsから参照する様にすると良いと思います。
データを登録
実際にデータを登録すると下記の様になります。
user = User.new
user.token = 'token'
user.name = 'name'
user.save
user.token
# => 'token' ちゃんと値が取得できる
user.encrypted_token
# => "RDepOiiQzdLr/ngeIOt+JIc3d24D\n"
# encrypted_tokenを取得すると、データベースに保存されている、暗号化されたデータが確認できる
コメントを残す