Sdílet prostřednictvím


Klauzule Column mask

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime 12.2 LTS a vyšší zaškrtnutí označeného ano pouze katalog Unity

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é účely řízení přístupu, kdy funkce může zkontrolovat členství v identitě nebo skupině vyvolání uživatele a určit, jestli se má hodnota redakce provést.

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ů, argumenty musí být poskytovány klauzulí USING COLUMNS .

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

  • other_column_name

    Volitelně můžete zadat další sloupce tabulky maskovaného sloupce, které se mají func_namepředat . Každý other_column_name musí být přetypován na odpovídající parametr func_name.

    Maska sloupce slouží k selektivní anonymizaci hodnoty column_identifier na základě uživatele, který provádí dotaz table_namena , hodnotu column_identifier a volitelnou 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 části 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