Memo

メモ > 技術 > データベース: MySQL > データのマスキング

データのマスキング
開発環境のデータベースでも本番環境相当のデータを使う - クックパッド開発者ブログ https://techlife.cookpad.com/entry/2024/10/01/105503 開発環境のデータをできるだけ本番に近づける - クックパッド開発者ブログ https://techlife.cookpad.com/entry/2014/10/03/110806 開発/Stg環境のための本番DBマスキングと継続的リストアの仕組みを作りました | ランサーズ(Lancers)エンジニアブログ https://engineer.blog.lancers.jp/sre/auto-masking/ 本番DBを開発用にマスキング - 技術情報のメモ書 https://gijutsu.com/2022/07/02/data-masking/ 本番環境のデータをマスクしてステージング環境に同期する - 食べチョク開発者ブログ https://tech.tabechoku.com/entry/2018/11/29/113244 本番環境のデータをマスキング加工して安全にアクセスできる調査環境を作った - HRBrain Blog https://times.hrbrain.co.jp/entry/go-aws-masking-production-data 本番環境のデータをマスクしてステージング環境に自動同期する仕組みを作りました【AWS CDK/SDK】1 ~CDK編~ https://zenn.dev/chycara344/articles/7529bd5539de03 データマスキングとは何か? - 静的データマスキングと動的データマスキングの説明 - AWS https://aws.amazon.com/jp/what-is/data-masking/ やり方は色々考えられるが、マスキング処理自体は「UPDATE分を作成してデータを置換する」という作業を行うことになりそう 以下、マスキングの検証を行ったもの CREATE TABLE customers( id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'ID', name_sei VARCHAR(80) NOT NULL COMMENT '姓', name_mei VARCHAR(80) NOT NULL COMMENT '名', email VARCHAR(255) COMMENT 'メールアドレス', tel VARCHAR(80) COMMENT '電話番号', PRIMARY KEY(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT '顧客情報'; INSERT INTO customers VALUES(NULL, '山田', '太郎', 'taro@refirio.net', '090-1234-5678'); INSERT INTO customers VALUES(NULL, '鈴木', '健次郎', 'kenjirou@refirio.org', '090-2345-6789'); INSERT INTO customers VALUES(NULL, '佐藤', '花子', 'hanako@refirio.net', '06-3456-7890'); 上記データに対してマスキングを行う 具体的には ・名前は、最後の文字を残して「〇」にする。例えば「山田」は「〇田」にする ・メールアドレスは、ドメインはそのままに、アカウント名を「固定文字 + ID」にする。例えば「taro@refirio.net」は「test1@refirio.net」にする ・電話番号は、市外局番はそのままに、それ以降をIDにする。例えば「090-1234-5678」は「090-0000-0001」にする という処理を行っている UPDATE customers SET name_sei = CONCAT( REPEAT('〇', CHAR_LENGTH(name_sei) - 1), SUBSTRING(name_sei, -1, 1) ) ; UPDATE customers SET name_mei = CONCAT( REPEAT('〇', CHAR_LENGTH(name_mei) - 1), SUBSTRING(name_mei, -1, 1) ) ; UPDATE customers SET email = CONCAT( 'test', id, '@', SUBSTRING_INDEX(email, '@', -1) ) ; UPDATE customers SET tel = CONCAT( SUBSTRING_INDEX(tel, '-', 1), '-', LPAD(FLOOR(id / 10000), 4, '0'), '-', LPAD(MOD(id, 10000), 4, '0') ) ;

Advertisement