Udostępnij za pośrednictwem


Klauzula Kolumna mask

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime 12.2 LTS i nowszy zaznacz pole wyboru oznaczone jako tak tylko wykaz aparatu Unity

Określa funkcję, która jest stosowana do kolumny za każdym razem, gdy wiersze są pobierane z tabeli. Wszystkie kolejne zapytania z tej kolumny otrzymują wynik oceny tej funkcji w kolumnie zamiast oryginalnej wartości kolumny. Może to być przydatne w celach szczegółowej kontroli dostępu, w których funkcja może sprawdzić tożsamość lub członkostwo w grupach użytkownika wywołującego w celu określenia, czy zredagować wartość.

Maski kolumn można dodawać, gdy:

Ważne

Maska jest stosowana natychmiast po pobraniu każdego wiersza ze źródła danych. Wszystkie wyrażenia, predykaty lub kolejność są stosowane po maskowaniu. Na przykład dołączenie między zamaskowaną kolumną względem innej kolumny z innej tabeli spowoduje użycie zamaskowanych wartości dla porównania sprzężenia.

Aby uzyskać więcej informacji na temat używania masek kolumn, zobacz Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.

Składnia

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

Parametry

  • func_name

    Skalarna funkcja zdefiniowanej przez użytkownika SQL z co najmniej jednym parametrem.

    Pierwszy parametr funkcji zdefiniowanej przez użytkownika SQL mapuje wartość 1:1 z zamaskowaną kolumną. Typ maskowanej kolumny musi być rzutowany do typu parametru UDF SQL. Jeśli func_name wymaga więcej parametrów, argumenty muszą być podane przez klauzulę USING COLUMNS .

    Zwracany typ funkcji musi być rzutowany na typ danych maskowanej kolumny.

  • other_column_name

    Opcjonalnie określa dodatkowe kolumny tabeli zamaskowanej kolumny, które mają być przekazywane do func_nameelementu . Każdy other_column_name element musi być rzutowalny do odpowiedniego parametru .func_name

    Użyj maski kolumny, aby selektywnie anonimizować wartość column_identifier na podstawie użytkownika wykonującego zapytanie względem table_namewartości , wartości column_identifier i opcjonalnego other_column.

  • constant_literal

    Określa stały parametr z typem pasującym do parametru funkcji. Obsługiwane są następujące typy: STRING, numeryczne (INTEGER, FLOAT, DOUBLE, ... DECIMAL ), BOOLEAN, INTERVAL, NULL.

Przykłady

Więcej przykładów można znaleźć w temacie Filtrowanie poufnych danych tabeli przy użyciu filtrów wierszy i masek kolumn.

-- 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