Kolumn mask
sats
gäller för: Databricks SQL
Databricks Runtime 12.2 LTS och senare
Unity Catalog endast
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 COLUMN.
- Ändrar en kolumn med ALTER TABLE ... ALTER COLUMN.
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 konverterbar till SQL UDF-parametertypen. Om
func_name
kräver fler parametrar måste argumenten anges avUSING COLUMNS
-satsen.Funktionens returtyp måste kunna typomvandlas 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 för
column_identifier
baserat på att användaren kör en fråga mottable_name
, värdet förcolumn_identifier
och den valfriaother_column
. constant_literal
Anger en konstant parameter med den typ som matchar en funktionsparameter. Följande typer stöds:
STRING
, numeriska (INTEGER
, ,FLOAT,
DOUBLE
...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