Klauzule sloupce mask
platí pro: Databricks SQL
Databricks Runtime 12.2 LTS a vyšší,
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ž:
- Vytvořte tabulku pomocí CREATE TABLE.
- Přidejte sloupce do tabulky s ALTER TABLE ... PŘIDAT COLUMN.
- Změna sloupce s ALTER TABLE ... ALTER COLUMN.
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
-
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 klauzuleUSING COLUMNS
.Návratový typ funkce musí být přetypovatelný na datový typ maskovaného sloupce.
-
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í parametrfunc_name
.Maska sloupce se používá k selektivní anonymizaci hodnoty
column_identifier
na základě uživatele provádějícího dotaz natable_name
, hodnotycolumn_identifier
a volitelné hodnotyother_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