Sdílet prostřednictvím


Klauzule sloupce mask

platí pro:zaškrtněte políčko Ano Databricks SQL zaškrtněte políčko Ano Databricks Runtime 12.2 LTS a vyšší, zaškrtněte políčko Ano pouze Unity Catalog.

Určuje funkci, která se použije u sloupce při každém načtení řádků z tabulky. Všechny následné dotazy z tohoto sloupce obdrží výsledek vyhodnocení této funkce místo původní hodnoty sloupce. To může být užitečné pro jemně odstupňované řízení přístupu, kdy funkce může zkontrolovat identitu nebo členství ve skupině volajícího uživatele a určit, zda má být hodnota redigována.

Masky sloupců můžete přidat, když:

Důležité

Maska se použije, jakmile se každý řádek načte ze zdroje dat. Všechny výrazy, predikáty nebo řazení se použijí po maskování. Například spojení mezi maskovaným sloupcem a jiným sloupcem z jiné tabulky použije maskované hodnoty pro porovnání spojení.

Další informace o tom, jak používat masky sloupců, najdete v tématu Filtrování citlivých dat tabulky pomocí filtrů řádků a masek sloupců.

Syntaxe

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

Parametry

  • func_name

    Skalární UDF SQL s alespoň jedním parametrem.

    První parametr UDF SQL mapuje 1:1 s maskovaným sloupcem. Typ maskovaného sloupce musí být přetypovaný na typ parametru UDF SQL. Pokud func_name vyžaduje více parametrů, musí argumenty poskytnout klauzule USING COLUMNS.

    Návratový typ funkce musí být přetypovatelný na datový typ maskovaného sloupce.

  • other_column_name

    Volitelně určuje další sloupce v tabulce obsahující maskovaný sloupec, které se mají předat func_name. Každý other_column_name musí být přetypován na odpovídající parametr func_name.

    Maska sloupce se používá k selektivní anonymizaci hodnoty column_identifier na základě uživatele provádějícího dotaz na table_name, hodnoty column_identifier a volitelné hodnoty other_column.

  • constant_literal

    Určuje konstantní parametr s typem, který odpovídá parametru funkce. Podporují se následující typy: STRING, číselná (INTEGER, FLOAT,DOUBLE, DECIMAL ...), BOOLEAN, INTERVAL, NULL.

Příklady

Další příklady najdete v Filtrování citlivých dat tabulky pomocí filtrů řádků a masek sloupců.

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