Sdílet prostřednictvím


klauzule Columnmask

platí pro:zaškrtnuté políčko Ano Databricks SQL zaškrtnuté políčko Ano Databricks Runtime 12.2 LTS a vyšší zaškrtnuté políčko Ano Unity pouze Catalog

Určuje funkci, která se použije na column, kdykoli jsou načítány řádky z table. Všechny následné dotazy z této column obdrží výsledek vyhodnocení této funkce přes column místo původní hodnoty column. To může být užitečné pro detailní řízení přístupu where, funkce může zkontrolovat identitu nebo členství ve skupině uživatele, který funkci vyvolává, a určit, jestli se má hodnota upravit.

Masky column 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 propojení maskovaného column s jiným column pocházejícím z jiného table použije maskované values pro účely porovnání s join.

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

Syntaxe

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

Parameters

  • func_name

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

    První parametr SQL UDF se mapuje 1:1 s maskovaným column. Maskovaný typ columnmusí být přetypovaný na typ parametru UDF SQL. Pokud func_name vyžaduje více parameters, musí argumenty poskytnout klauzule USING COLUMNS.

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

  • other_column_name

    Volitelně zadejte další columns z maskovaného columntable, který se má předat func_name. Každý other_column_name musí být přetypován na odpovídající parametr func_name.

    Maska column se používá k selektivní anonymizaci hodnoty column_identifier na základě uživatele, který spouští dotaz na table_name, hodnoty column_identifier a volitelného 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 table dat pomocí filtrů řádků a column mask.

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