次の方法で共有


mask

適用対象:「はい」チェックマークがオン Databricks SQL 「はい」チェックマークがオン Databricks Runtime 12.2 LTS 以降「はい」チェックマークがオン Unity Catalog のみ

テーブルから行が取得されるたびに列に適用される関数を指定します。 その列の後続のすべてのクエリは、列の元の値の代わりに、その列に対してその関数を評価した結果を受け取ります。 これは、値を編集するかどうかを決定するために関数で呼び出し元ユーザーの ID またはグループ メンバーシップを検査できる、きめ細かいアクセス制御の目的に役立ちます。

列マスクは、次の場合に追加できます。

重要

マスクは、データ ソースから各行がフェッチされるとすぐに適用されます。 式、述語、または順序は、マスクの後に適用されます。 たとえば、マスクされた列を別のテーブルにある別の列に結合すると、結合の比較にはマスクされた値が使われます。

列マスクの使用方法の詳細については、 Azure Databricks テーブルを参照してください。

構文

MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]

パラメーター

  • func_name

    少なくとも 1 つのパラメーターを持つスカラー SQL UDF

    SQL UDF の最初のパラメーターは、マスクされた列と 1:1 でマップされます。 マスクされた列の型は、SQL UDF パラメーター型にキャスト可能である必要があります。 func_name に追加のパラメーターが必要な場合は、USING COLUMNS 句によって引数を指定する必要があります。

    関数の戻り値の型は、マスクされた列のデータ型にキャスト可能である必要があります。

  • 他のカラム名

    必要に応じて、 func_nameに渡すマスクされた列のテーブルの追加の列を指定します。 各 other_column_name は、func_name の対応するパラメーターにキャスト可能である必要があります。

    列マスクを使って、column_identifier に対してクエリを実行しているユーザー、table_name の値、省略可能な column_identifier に基づいて、other_column の値を選択的に匿名化します。

  • constant_literal

    関数パラメーターと一致する型の定数パラメーターを指定します。 サポートされている型は、STRING、数値 (INTEGERFLOAT,DOUBLEDECIMAL …)、BOOLEANINTERVALNULL です。

その他の例については、 Azure Databricks テーブルを参照してください。

-- Create a table with a masked column
> CREATE FUNCTION mask_ssn(ssn STRING) RETURN CASE WHEN is_member('HumanResourceDept') THEN ssn ELSE '***-**-****' END;
> CREATE TABLE persons(name STRING, ssn STRING MASK mask_ssn);
> INSERT INTO persons VALUES('James', '123-45-6789';

-- As a non-member of 'HumanResourceDept'
> SELECT * FROM persons;
  James  ***-**-****

-- As a member of 'HumanResourceDept'
> SELECT * FROM persons;
  James  123-45-6789

-- Create a masking function with multiple parameters. When applied first parameter will be the column that masking function applies to
> CREATE FUNCTION mask_pii_regional(value STRING, region STRING)
  RETURN IF(is_account_group_member(region || '_HumanResourceDept'), value, 'REDACTED');

-- Create a table with a masked column. Masking function first parameter will be the column that is masked.
-- The rest of the parameters should be specified in `USING COLUMNS (<columnList>)` clause
> CREATE TABLE persons(name STRING, address STRING MASK mask_pii_regional USING COLUMNS (region), region STRING);
> INSERT INTO persons('James', '160 Spear St, San Francisco', 'US')

-- As a non-member of 'US_HumanResourceDept'
> SELECT * FROM persons;
  James | REDACTED | US

-- As a member of 'US_HumanResourceDept'
> SELECT * FROM persons;
  James | 160 Spear St, San Francisco | US