Snowflake動的データマスキング入門|機密データを安全に守る方法

Snowflake動的データマスキング入門|機密データを安全に守る方法 Snowflake

はじめに:なぜ動的データマスキングが必要なの?

「分析チームに本番データを使わせたいけど、メールアドレスや電話番号はそのまま見せたくない…」
こんな悩み、データ管理の現場ではあるあるですよね。Snowflakeの動的データマスキング(Dynamic Data Masking)を使えば、テーブルのデータ自体は1つのまま、クエリを実行するロールに応じて見え方を自動的に切り替えることができます。

この記事では、データベース初心者の方でもイメージしやすいように、動的データマスキングの仕組み・SQL例・よくある使い方を解説していきます。

Snowflake動的データマスキングでロールごとに表示が切り替わる仕組みを表現したマスキングポリシーの概念図

動的データマスキングの基本概念

動的データマスキングは、列(カラム)に「マスキングポリシー」というルールを取り付ける機能です。クエリ実行時に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
ADMIN_ROLEとANALYST_ROLEで同じemail列のSELECT結果が変わるSnowflake動的データマスキング動作例

よくあるユースケース

  • 個人情報(PII)保護: メールアドレス、電話番号、住所などを開発・分析チームに対して伏せる
  • クレジットカード番号: 下4桁だけ表示し、残りを****-****-****-1234形式にする
  • 給与・売上などの数値: 一般ユーザーにはNULLや0を返し、経営層だけ実数を見せる
  • 環境ごとの切り替え: 本番のデータをそのままゼロコピークローンで開発環境に複製しても、機密値はマスクされた状態で扱える

使うときの注意点

  • マスキングポリシーは列のデータ型と一致している必要があります(STRING列にはSTRINGを返すポリシー)
  • 1つの列には1つのポリシーしか付けられません
  • ポリシー本体を作る・適用するにはACCOUNTADMINや専用のカスタムロールに権限を与える運用がおすすめ
  • WHERE句やJOIN条件で使う場合の挙動に癖があるので、本番適用前に必ずテストを
  • IPアドレス制限などのネットワークポリシーMFA/SSOと組み合わせると、より堅牢なセキュリティ設計になります

まとめ

動的データマスキングは、「データを物理的にコピーせず、見せ方だけ切り替える」というシンプルかつ強力な仕組みです。マスキングポリシーを1つ書いてALTER TABLEで適用するだけで、ロールごとにスマートに機密データを守れます。RBAC・ネットワークポリシーと組み合わせて、安全で柔軟なデータ活用環境を作っていきましょう!

参考リンク

関連記事