今回はカラムの暗号化技術をGemのLockboxからRails7で導入されたActiveRecordEncryptionへ移行する手順についてまとめました。ActiveRecordEncryptionへの移行手順がまとめられた記事が少なく、データの移行に試行錯誤したため備忘録としてまとめています。背景Rails7以前はカラムの暗号化機能がなく、Gemを使用することで要件を満たしていました。Encryptionが導入され、カラム暗号化機能をデフォルトで使うことができるようになりました。Recordはアプリケーションレベルの暗号化をサポートします。これは、暗号化する属性を宣言し、必要に応じて暗号化と復号をシームレスに行うしくみです。暗号化の層は、データベース層とアプリケーション層の間に置かれます。アプリケーションがアクセスするのは暗号化されていないデータですが、データベースには暗号化されたデータが保存されます。暗号化Lockboxとは【Rails】秘匿情報を暗号化し、管理することができるGem「lockbox」の使い方について簡単にまとめてみる秘匿情報を暗号化した状態で管理することができるGem「lockbox」の使い方について簡単に解説しています。秘匿情報を扱う際の選択肢の1つになれば幸いです。Encryption」を触ってみたので、その機能について簡単に紹介しています。これまでデータベースの情報を暗号化したい場合は、lockboxやbcrypt-rubyといった外部gemの使用が一般的でしたが、Rails7からはデフォルトでその機能が使えるようになりました。前提LockboxとActiveRecordEncryptionは共存することができます。trueを追加することで、passwordカラムがmigrated_passwordカラムに変更されます。trueは必要ありませんが、LockboxとActiveRecordEncryptionを併用する場合は必要になります。以下の記事を参考にActiveRecordEncryptionの導入を行います。Encryption」を触ってみたので、その機能について簡単に紹介しています。これまでデータベースの情報を暗号化したい場合は、lockboxやbcrypt-rubyといった外部gemの使用が一般的でしたが、Rails7からはデフォルトでその機能が使えるようになりました。trueオプションを付与しましょう。これにより、Lockbox用のカラムとActiveRecordEncryption用のカラムの両方にデータが入るようになります。Lockbox用の記述endActiveRecordEncryptionの導入が完了すると、LockboxとActiveRecordEncryptionの記述とキーが共存している状態になります。taskを作成します。endenddecrypt_password_ciphertextは暗号化されたデータを復号化するLockboxのメソッドになります。taskを実行してもエラーになってしまいます。そのため以下の記事を参考に、config/application.rbに暗号化されていないデータをサポート対象にする設定を追記します。1~3を実装したPRをマージ上記の1~3を実装したPRをマージします。taskを実行しデータを移行します。Lockboxの削除データがコピーされていることが確認でき次第、LockboxのGemとカラム・記述を削除したPRを作成します。このPRがマージされることでLockboxからActiveRecordEncryptionへの移行が完了です。参考https://techtechmedia.com/how-to-use-lockbox/https://techtechmedia.com/active-record-encryption-rails7/今回はカラムの暗号化技術をGemのLockboxからRails7で導入されたActiveRecordEncryptionへ移行する手順についてまとめました。ピンポイントの内容でしたが、どなたかのお役に立てられれば幸いです。yoshi19941117TechTechMedia【Rails】受信したメールを処理することができる機能「ActionMa...【Rails】状態管理を容易に実装することができる機能「enum」の使い...Railsエンジニアちばよしはる銀座にあるヘルステック企業のRailsエンジニア。初心者から中級者向けに記事を更新しています。お酒とカレーと競馬が好き。TechTechMedia。