会員制のウェブサービスやアプリケーションを開発・運用する際、本番環境のデータを使ってテスト環境を構築することはよくあります。
しかし、実在するユーザーの情報(メールアドレス、氏名、電話番号など)をそのまま使ってしまうと、
誤送信や個人情報漏洩といったリスクが生じます。
そこで今回は、MySQLでユーザーの個人情報を一括でダミー化するためのSQLをご紹介します。
想定シナリオ
- ユーザー情報を保持する
users
テーブルがある - 以下の3フィールドをダミー化したい
user_email
(メールアドレス)user_name
(氏名)user_tel
(電話番号)
- 管理者(ID = 1)は除外したい
ダミー化SQL:メールアドレス・名前・電話番号
UPDATE users
SET
user_email = CONCAT('example+usr', ID, '@example.com'),
user_name = CONCAT('テストユーザー', ID),
user_tel = CONCAT('000-0000-', LPAD(ID, 4, '0'))
WHERE ID <> 1;
各フィールドのダミー化の内容
フィールド | マスキング内容 |
---|---|
user_email | example+usr{ID}@example.com の形式に変換 |
user_name | テストユーザー{ID} の形式に変換 |
user_tel | 000-0000-xxxx の形式(IDをゼロ埋めで4桁に) |
例:IDが「12」の場合
- メール:
example+usr12@example.com
- 氏名:
テストユーザー12
- 電話番号:
000-0000-0012
注意点
- このSQLはあくまでテスト・ステージング環境用です。
- 本番環境で実行しないよう十分に注意してください。
- 実行前には必ずバックアップを取りましょう。
- 他にも住所や生年月日などの個人情報がある場合は、同様にダミー化しておくと安全です。
応用:特定のユーザー範囲だけを対象に
WHERE ID BETWEEN 2 AND 1000;
上記のように WHERE
条件を変更すれば、特定の範囲だけを対象にマスキングすることも可能です。
まとめ
テスト環境におけるユーザーデータのダミー化は、開発の安全性を確保するための重要な手段です。
MySQLのシンプルな UPDATE
文を使うだけで、個人情報の保護と誤送信リスクの回避ができます。
これからテスト環境を構築するという方は、ぜひこの方法を活用してみてください。
コメント