Upgrade to Pro — share decks privately, control downloads, hide ads and more …

本番データを安全に利用する

sasaki nobuya
September 04, 2017

 本番データを安全に利用する

本番データをdumpし、個人情報を含むカラムを指定のマスク方式でマスクしたdumpファイルを吐き出すgemを作った。

sasaki nobuya

September 04, 2017
Tweet

More Decks by sasaki nobuya

Other Decks in Technology

Transcript

  1. Pro le 佐々 木 延也 三重県出身 中日/HipHop/ ビシエド が好き 今年の8

    月1 日 Speee 入社 前職はグルメ系Web サー ビスのWeb エンジニア/Android エンジニア SpeeeKaigi 2
  2. 本番デー タでテストするメリット 1. ユー ザー 目線にたってテストができる ( 失敗例) ユー ザー

    は写真の順番にこだわりを持っていることが多い。 しかし開発環境の画像デー タが適当だったため、 そのことに 気づかずデー タ修正時に順番がバラバラになってしまった。 SpeeeKaigi 5
  3. 本番デー タでテストするメリット 2. 色々 なパター ンのデー タでテストがで きる ( 失敗例)

    特定の条件下でインポー トしたデー タには通常のライフサイ クルでは存在するはずのデー タがなく、 それが原因で EXCEPTION が発生した。 SpeeeKaigi 6
  4. 本番デー タでテストするメリット 3. パフォー マンスの検証ができる ( 失敗例) 開発DB と本番DB で統計情報が異なっていたため開発環境で

    はindex が使われていたが本番では使われていなかった。 そ れが原因でSlow クエリが頻発し一部のAP サー バー がダウン してしまった。 SpeeeKaigi 7
  5. 実現したい機能要件 1. 大規模なデー タのdump のパフォー マンスが問題ないこと 2. コマンド1つで実現できること 3. カラムごとにData

    Masking 方式を切り替えられること 4. 適切なData Masking 方式がなかったら、 ユー ザー が自分 でRuby のマスク処理を行えること 5. MySQL, PostgreSQL に対応 SpeeeKaigi 16
  6. 実現したい機能要件 1. 大規模なデー タのdump のパフォー マンスが問題ないこと 2. コマンド1つで実現できること 3. カラムごとにData

    Masking 方式を切り替えられること 4. 適切なData Masking 方式がなかったら、 ユー ザー が自分 でRuby のマスク処理を行えること 5. MySQL, PostgreSQL に対応 SpeeeKaigi 17
  7. 3. カラムごとにData Masking 方式を切り替えられること --- user: root host: localhost port:

    3306 db: name: sample_development rdbms: mysql tables: - name: owners columns: - name: phone_number method: tel # Data Masking 方式 - name: users columns: - name: mail method: email # Data Masking 方式 SpeeeKaigi 19
  8. 3. カラムごとにData Masking 方式を切り替えられること 組み込みのData Masking 方式 方式 マスク方法 tel

    電話番号の体裁を保ったままマスクする email メー ルアドレスの体裁を保ったままマスクする shuf e 各レコー ドの順番を入れ替える blackout 任意の文字、 数字で埋める SpeeeKaigi 20
  9. 4. 適切なData Masking 方式がなかったら、 ユー ザー が自分 でRuby のマスク処理を行えること mask

    メソッドとコンストラクタを持つRuby のクラスを指定 ディレクトリに格納し、YAML の設定ファイルにクラス名を 小文字で記載すると独自のマスク処理を行える。 module Mozaic::MaskMethod::Plugin class SampleMask def initialize(records, column_name); ;end def mask; ;end end end SpeeeKaigi 21