klauzule Columnmask
platí pro: Databricks SQL Databricks Runtime 12.2 LTS a vyšší 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ž:
- Vytvořte table pomocí CREATE TABLE.
- Přidejte columns do table s ALTER TABLE ... ADD COLUMN.
- Změna column pomocí 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 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
-
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 klauzuleUSING COLUMNS
.Návratový typ funkce musí být přetypovatelný na datový typ maskovaného column.
-
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í parametrfunc_name
.Maska column se používá k selektivní anonymizaci hodnoty
column_identifier
na základě uživatele, který spouští dotaz natable_name
, hodnotycolumn_identifier
a volitelnéhoother_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