みんなのウェディングエンジニアリングブログみんなのウェディングエンジニアリングブログ記事の一覧Embulk+Digdagを利用して、個人情報を考慮したマスク処理を開発用DBに行うみんなのウェディングのインフラエンジニア横山です。今回は開発用DBのマスク処理にEmbulk+Digdagを利用し始めた話について書きます。開発用DBのマスク処理とは弊社では、週次で本番DBのスナップショットから開発環境用DBを作り直しています。これにより、常に本番環境と同じテーブル定義、データ量で開発を行うことができ、以下のようなメリットがあります。本番にデプロイする前に、開発、ステージング環境で不具合を早期発見できる実際に近いデータで、本番を想定した確認ができるここで問題になってくるのが、ユーザの氏名やメールアドレスといった個人情報の扱いについてです。開発用DBは本番DBのスナップショットから作成されているため、開発用DBにも本番DBの個人情報が入ってしまっています。この状態で利用すると、以下にあげる問題が考えられます。開発用DBのみにアクセスできるユーザが本番DBのデータが閲覧可能になってしまうこの問題への対処として、テーブルデータ内の個人情報のマスク処理を行う必要があります。マスク処理をどのように行うかマスク処理を行うにあたり、下記3つの方法を比較・検討しました。scriptでmysqlコマンドを利用して地道にクエリを記載していく方法です。'@example.com');"単純ではありますが、以下の懸念点からこちらの方法は選択しませんでした。実行内容が把握しづらいクエリを1つずつ実行するので完了までに時間がかかる。Pipeline」という複数データソース(S3,RDS,Redhiftなど)間でのデータ移行を行うツールがあります。Pipelineデータ移行での利用がメインではありますが、調査を進めていくと、任意のSQLの実行もできることがわかりました。https://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-object-sqlactivity.htmlこちらのツールを使うと、以下のようにグラフィカルに設定を行っていくことができます。こちらにも以下のような懸念点があり採用には至りませんでした。Pipeline」自体の学習コストが高い実行内容をコード管理できない。Dataにより開発されているツールです。Pipeline」と同様に複数データソース間でのデータ移行に利用されています。複数クラウド間でのデータ移行にも利用することができます。Digdagはワークフローエンジンと呼ばれるツールで、ファイルベースでワークフローを管理しスケジュール実行することができます。どちらのツールも学習コストが低く、設定ファイルをコード管理でき、複数クエリの同時実行もDigdagで制御できるので、こちらの方法を採用しました。after_selectの項目にupdateクエリを記載することで、マスク処理を実現しようと考えました。after_selectの項目に書かれたクエリは、データ収集後に、同じトランザクション内で実行されます。設定ファイルは以下のようになりました。outのtypeに"null"を指定することで、ログに個人情報が記載されないようにするのがポイントです。"null"Digdag前述した、Embulkの設定ファイルをテーブルごとに作成して、Digdagを利用して実行順序を制御しています。設定ファイルは以下のようになります。mask_address_data.yml.liquidこちらは、以下の順序で実行されます。上記の例で記載したケースだと、job1でDBのパスワードを開発環境用のものに変更し、child_jobでDBのマスク処理を行うため、実行順を制御しておく必要がありました。このような場合にDigdagが有効活用できることがおわかりいただけるかと思います。実行環境これらのジョブは、EmbulkとDigdagをインストールしたDockerコンテナ上で実行するようにしています。設定ファイルもイメージに含めておくことで、デプロイについて考えなくても以下の二つのコマンドを入力するだけでどこでも実行できる作りになっています。ログ管理にはAWSのCloudWatchLogsを利用しています。db_mask_job.digまとめEmbulkとDigdagを利用することで、とても簡単に開発用DBのマスク処理を行うことができました。今回はafter_selectをメインに使うというトリッキーな使い方でしたが、Embulkは本来、複数データソース間のETLに利用します。ETLに利用した事例についてはまた後日お伝えしたいと思います。(2018年05月10日)twitterfacebookhatenabookmark最新の記事みんなのウェディングはEKSで動いていますタイポグラフィとCSSのスタイル宣言2019年新卒エンジニア研修もそろそろ終盤です。