はじめに:なぜ動的データマスキングが必要なの?
「分析チームに本番データを使わせたいけど、メールアドレスや電話番号はそのまま見せたくない…」
こんな悩み、データ管理の現場ではあるあるですよね。Snowflakeの動的データマスキング(Dynamic Data Masking)を使えば、テーブルのデータ自体は1つのまま、クエリを実行するロールに応じて見え方を自動的に切り替えることができます。
この記事では、データベース初心者の方でもイメージしやすいように、動的データマスキングの仕組み・SQL例・よくある使い方を解説していきます。

動的データマスキングの基本概念
動的データマスキングは、列(カラム)に「マスキングポリシー」というルールを取り付ける機能です。クエリ実行時にSnowflakeがそのルールを評価し、ロールや条件に応じて元の値を返したり、伏せた値を返したりします。
ポイントは、テーブルに保存されているデータ自体は変わらないこと。あくまで「見せ方」を切り替えるだけなので、ストレージを二重に持つ必要もありません。
権限管理の前提としてSnowflake RBAC(ロールベースアクセス制御)の理解があるとスムーズです。マスキングポリシーは「現在のロール」を見て出し分けを判定するからです。
マスキングポリシーの作り方
① ポリシーを作る
まずはメールアドレスをマスクするシンプルなポリシーを作ってみましょう。
CREATE OR REPLACE MASKING POLICY email_mask AS
(val STRING) RETURNS STRING ->
CASE
WHEN CURRENT_ROLE() IN ('ADMIN_ROLE') THEN val
ELSE REGEXP_REPLACE(val, '.+@', '****@')
END;
「ADMIN_ROLEなら本物の値、それ以外は****@example.comのように先頭を伏せる」という意味です。
② テーブル列に適用する
ALTER TABLE customers
MODIFY COLUMN email
SET MASKING POLICY email_mask;
これだけで完了!以降、SELECT email FROM customers を実行すると、ロールごとに違う結果が返ります。
③ 試してみる
USE ROLE ADMIN_ROLE;
SELECT email FROM customers LIMIT 1;
-- 結果: taro@example.com
USE ROLE ANALYST_ROLE;
SELECT email FROM customers LIMIT 1;
-- 結果: ****@example.com

よくあるユースケース
- 個人情報(PII)保護: メールアドレス、電話番号、住所などを開発・分析チームに対して伏せる
- クレジットカード番号: 下4桁だけ表示し、残りを
****-****-****-1234形式にする - 給与・売上などの数値: 一般ユーザーにはNULLや0を返し、経営層だけ実数を見せる
- 環境ごとの切り替え: 本番のデータをそのままゼロコピークローンで開発環境に複製しても、機密値はマスクされた状態で扱える
使うときの注意点
- マスキングポリシーは列のデータ型と一致している必要があります(STRING列にはSTRINGを返すポリシー)
- 1つの列には1つのポリシーしか付けられません
- ポリシー本体を作る・適用するには
ACCOUNTADMINや専用のカスタムロールに権限を与える運用がおすすめ - WHERE句やJOIN条件で使う場合の挙動に癖があるので、本番適用前に必ずテストを
- IPアドレス制限などのネットワークポリシーやMFA/SSOと組み合わせると、より堅牢なセキュリティ設計になります
まとめ
動的データマスキングは、「データを物理的にコピーせず、見せ方だけ切り替える」というシンプルかつ強力な仕組みです。マスキングポリシーを1つ書いてALTER TABLEで適用するだけで、ロールごとにスマートに機密データを守れます。RBAC・ネットワークポリシーと組み合わせて、安全で柔軟なデータ活用環境を作っていきましょう!
参考リンク
関連記事
- Snowflake RBAC入門|ロールで権限管理を始めよう – マスキングポリシーの判定基盤になるロールの基本
- Snowflakeカスタムロール作成とGRANT/REVOKE入門 – ポリシー管理用のロール設計に役立つ
- Snowflakeネットワークポリシー入門|IPでアクセスを制限する方法 – マスキングと組み合わせたい多層防御の入口
- Snowflake MFAとSSO設定入門|認証を強化する2つの仕組み – 認証強化と合わせて読みたいセキュリティ記事
- Snowflakeゼロコピークローン入門|データベースを一瞬で複製する魔法 – 開発用にデータを複製する際の定番機能

