1
0

More than 1 year has passed since last update.

Databricksの列マスクを試してみる

Posted at

こちらの続きで今度は列マスク(column mask)を試します。

準備

事前にDSというグループを作成しておき、ユーザーAのみを追加しておきます。

対象のテーブルはtargetとします。以下のようにpickup_zipなどの郵便番号が含まれているテーブルです。ちなみにこちらはNYのタクシーの乗降記録です。
Screenshot 2023-09-13 at 10.56.05.png

Sharedクラスターを作成して起動します。シングルユーザークラスターでは本機能は動作しません。

ユーザーAの作業

USE main.default;

列マスクの関数を定義します。このフィルターは、テーブルにアクセスするユーザーがグループDSに所属している場合には全レコードをそのまま返却しますが、そうではない場合にはzipコードを****にマスキングします。

CREATE FUNCTION zip_mask(zip STRING)
  RETURN IF(IS_ACCOUNT_GROUP_MEMBER('DS'), zip, '****');

Screenshot 2023-09-14 at 11.12.52.png

テーブルに列マスクを設定します。

ALTER TABLE target ALTER COLUMN dropoff_zip SET MASK zip_mask;

DESCRIBE EXTENDEDで列マスクが設定されていることを確認できます。

DESCRIBE EXTENDED target;

Screenshot 2023-09-14 at 11.15.20.png

ユーザーAはグループDSに所属しているので、列マスクは適用されません。

SELECT * FROM target;

Screenshot 2023-09-14 at 11.21.39.png

ユーザーBの作業

ユーザーBはグループDSには属していません。

SELECT * FROM target;

列マスクが動作して、dropoff_zip****にマスキングされます。
Screenshot 2023-09-14 at 11.16.02.png

より複雑なマスキングのロジックも実装できますので、例えば、メールアドレスの前半のみをマスキングすることも可能です。ぜひご活用ください!

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0