Kolumnsats mask

Gäller endast för: markerad ja Databricks SQL markerad ja Databricks Runtime 12.2 LTS och senare markerad ja 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:

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

  • func_name

    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 av USING COLUMNS -satsen.

    Funktionens returtyp måste vara gjutbar till datatypen för den maskerade kolumnen.

  • other_column_name

    Du kan också ange ytterligare kolumner i den maskerade kolumnens tabell som ska skickas till func_name. Var och other_column_name en måste kunna castas till motsvarande parameter för func_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 mot table_name, värdet column_identifier för och det valfria other_column.

  • constant_literal

    Anger en konstant parameter med den typ som matchar en funktionsparameter. Följande typer stöds: STRING, numeriska (INTEGER, , DOUBLEFLOAT, ... 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