DBMotoは異種データベース間リアルタイムレプリケーションツールです。複製元テーブルにデータの更新があった場合、更新されたデータを複製先テーブルにリアルタイムで反映することができます。このレプリケーションの機能では、スクリプトを設定しデータを加工することも可能です。本記事ではスクリプトを活用し、テーブル内のデータを暗号化してレプリケーションを行う手法を3ステップでご紹介します。
手順1. 暗号化関数の作成
DBMotoでは、C#/VBでスクリプトを記述できます。下記はAES方式の暗号化を行う関数を実装するスクリプトです。こちらをDBMotoのグローバルスクリプトに記述します。
using System; using System.Data; using DBMotoPublic; using DBMotoScript; using System.IO; using System.Security.Cryptography; using System.Text; namespace DBRS{ public class GlobalScript : IGlobalScript{ public static string Encrypt(string text, string iv, string key){ using (RijndaelManaged myRijndael = new RijndaelManaged()){ myRijndael.BlockSize = 128; myRijndael.KeySize = 128; myRijndael.IV = Encoding.UTF8.GetBytes(iv); myRijndael.Key = Encoding.UTF8.GetBytes(key); ICryptoTransform encryptor = myRijndael.CreateEncryptor(myRijndael.Key, myRijndael.IV); byte[] encrypted; using (MemoryStream mStream = new MemoryStream()){ using (CryptoStream ctStream = new CryptoStream(mStream, encryptor, CryptoStreamMode.Write)){ using (StreamWriter sw = new StreamWriter(ctStream)){ sw.Write(text); } encrypted = mStream.ToArray(); } } return (System.Convert.ToBase64String(encrypted)); } } } }
手順2. マッピングの設定
レプリケーションを作成する際、複製先テーブルのカラムと複製元テーブルのカラムの紐付けを行うマッピング設定があります。このマッピング設定でグローバルスクリプトに記載した関数を使用するよう設定します。下記画像では、mailカラムのレプリケーションに対し暗号化を行うEncrypt関数が設定されています。
手順3. レプリケーションの実行
関数を設定したレプリケーションを実行します。Encrypt関数を設定したカラムのデータが複製先テーブルで暗号化されていることが確認できます。
DBMotoではスクリプトを併用することで簡単にデータを暗号化された状態でレプリケーションすることが出来ます。個人情報や大切なデータを保管したデータベースのデータ移行や連携等で、ぜひDBMotoをご検討ください。
※同じように復号する関数を用意頂き、マッピング設定で復号の関数を記述いただければ、暗号化したデータを元に戻すことも出来ます。復号方法はこちらの記事をご覧ください。
関連したトピックス
- [DBMoto]暗号化したデータを復号し保存するデータ連携方法
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方⑤:フィールドマッピング関数の書き方
- [Ritmo/i] AS/400接続用サンプルC#プログラム
- テーブル一括作成やマッピングをカスタマイズ:グローバルスクリプト[Syniti Replicate]
- レプリケーションの際にnullを特定の値に変換する方法 その2【リアルタイムレプリケーションツールDBMoto】
- [DBMoto]関数を使用してレプリケーション時のデータを変換する方法(VB/C#言語選択、関数適用、ユーザ関数作成、置換関数、一括設定手順)
- Syniti Data Replication (旧DBMoto)でのスクリプトの書き方②:グローバルスクリプト
- [Ritmo/i] AS/400データ登録・更新・削除用サンプルC#プログラム
- 任意のデータ型でターゲットテーブル作成[DBMoto]
- [DBMoto API]外部からレプリケーションやグループを開始・停止するサンプルC#プログラム