データを扱う上で、
住所や生年月日といった個人情報データの扱いに
苦労している方は多いのではないでしょうか。
例えば…
個人情報を含むテーブルを複製して、
マスキング用の加工処理を加えた後、
分析者に渡す…みたいなフローを組んでいませんか?
正直メンドクサイ…。(つ∀-)オヤスミー
そんなあなたに朗報です!
Snowflakeなら動的なマスキング機能、
ダイナミックデータマスキングを使うことができます。
これによってオリジナルデータに手を加える必要なく、
クエリの実行者に応じてデータを動的にマスキングすることができます。
つまり、同じテーブルに対して
・管理者がクエリを実行->マスキングしない
・分析者がクエリを実行->マスキングする
といった動作を可能にします!
実際に試してみましょう。
今回はテスト用にuserテーブルを作成しました。
このテーブルのmailカラムをマスキングすることにします。
まず最初に、マスキングポリシーを作成します。
公式ドキュメントのCREATE MASKING POLICYを参考に作成してみましょう。
上記では「ユーザーのロールがSYSADMIN以外の場合は'機密情報だよ(^_-)-☆'でマスキングする」ポリシー、email_maskを作成しています。
続いて、先ほど作成したマスキングポリシーをuserテーブルに適用します。
公式ドキュメントのALTER TABLE ... ALTER COLUMNを参考にすると…
ALTER TABLE {テーブル名} ALTER COLUMN {カラム名} SET MASKING POLICY
このようにテーブル定義を変更することで適用できます。
では、userテーブルのmailカラムにemail_maskを適用します。
これで設定は完了です!
最後に動作確認します。
まずはSYSADMINロールで確認します。
そのまま表示されていますね。
ではSYSADMIN以外のロール、VIEWERロールで確認してみると…
この通り!
ちゃんとマスキングされていますね!
さらに別のロール、ANALYSTロールで確認しても…
マスキングされていますね!
素晴らしい…。
以上です!凄く簡単に設定できて驚きました。
データのマスキングに悩んでいる方はぜひ
Snowlflakeのダイナミックデータマスキングを使ってみて下さい!
※ダイナミックデータマスキングはEnterprise Edition以上の機能となります。