Kolumnsats mask
Gäller endast för: Databricks SQL Databricks Runtime 12.2 LTS och senare i Unity Catalog
Anger en funktion som tillämpas på en kolumn när rader hämtas från tabellen. Alla efterföljande frågor från den kolumnen får resultatet av utvärderingen av funktionen över kolumnen i stället för kolumnens ursprungliga värde. Detta kan vara användbart för detaljerad åtkomstkontroll där funktionen kan kontrollera identitets- eller gruppmedlemskapen för den anropande användaren för att avgöra om värdet ska redigeras.
Du kan lägga till kolumnmasker när du:
- Skapa en tabell med CREATE TABLE.
- Lägg till kolumner i en tabell med ALTER TABLE ... LÄGG TILL KOLUMN.
- Ändrar en kolumn med ALTER TABLE ... ÄNDRA KOLUMN.
Viktigt!
Masken tillämpas så snart varje rad hämtas från datakällan. Alla uttryck, predikat eller ordning tillämpas efter maskeringen. Till exempel använder koppling mellan den maskerade kolumnen mot en annan kolumn från en annan tabell de maskerade värdena för kopplingsjämförelsen.
Mer information om hur du använder kolumnmasker finns i Filtrera känsliga tabelldata med hjälp av radfilter och kolumnmasker.
Syntax
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
Parametrar
-
En skalär SQL UDF med minst en parameter.
Den första parametern i SQL UDF mappar 1:1 med den maskerade kolumnen. Den maskerade kolumnens typ måste vara gjutbar till SQL UDF-parametertypen. Om
func_name
det krävs fler parametrar måste argumenten anges avUSING COLUMNS
-satsen.Funktionens returtyp måste vara gjutbar till datatypen för den maskerade kolumnen.
-
Du kan också ange ytterligare kolumner i den maskerade kolumnens tabell som ska skickas till
func_name
. Var ochother_column_name
en måste kunna castas till motsvarande parameter förfunc_name
.Använd en kolumnmask för att selektivt anonymisera värdet
column_identifier
för baserat på att användaren kör en fråga mottable_name
, värdetcolumn_identifier
för och det valfriaother_column
. constant_literal
Anger en konstant parameter med den typ som matchar en funktionsparameter. Följande typer stöds:
STRING
, numeriska (INTEGER
, ,DOUBLE
FLOAT,
...DECIMAL
),BOOLEAN
, ,INTERVAL
,NULL
.
Exempel
Du hittar fler exempel i Filtrera känsliga tabelldata med hjälp av radfilter och kolumnmasker.
-- 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