Column
mask
-clausule
Van toepassing op: Databricks SQL Databricks Runtime 12.2 LTS en hoger Unity Catalog alleen
Specificeert een functie die wordt toegepast op een column wanneer rijen worden opgehaald uit de table. Alle volgende query's van die column's ontvangen het resultaat van de evaluatie van die functie over de column in plaats van de oorspronkelijke waarde van de column. Dit kan handig zijn voor fijnmazige toegangsbeheerdoeleinden where de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of de waarde moet worden bewerkt.
U kunt column maskers toevoegen wanneer u:
- Maak een table met behulp van CREATE TABLE.
- Voeg columns toe aan een table met ALTER TABLE ... VOEG COLUMNtoe.
- Een column wijzigen met ALTER TABLE ... ALTER COLUMN.
Belangrijk
Het masker wordt toegepast zodra elke rij wordt opgehaald uit de gegevensbron. Alle expressies, predicaten of volgorde worden toegepast na de maskering. Bijvoorbeeld, het koppelen van de gemaskeerde column met een andere column afkomstig van een andere table zal de gemaskeerde values gebruiken voor de vergelijking met de join.
Voor meer informatie over het gebruik van column maskers, zie Gevoelige table gegevens filteren met behulp van rijfilters en column maskers.
Syntaxis
MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]
Parameters
-
Een scalaire SQL UDF met ten minste één parameter.
De eerste parameter van de SQL UDF komt 1:1 overeen met de gemaskeerde column. Het type van gemaskeerde columnmoet omzetbaar zijn naar het parametertype van de SQL UDF. Als
func_name
meer parametersvereist, moeten argumenten worden opgegeven door deUSING COLUMNS
clausule.Het retourtype van de functie moet omkastbaar zijn naar het gegevenstype van de gemaskeerde column.
-
Geeft desgewenst extra columns van de gemaskeerde column's table door te geven aan
func_name
. Elkother_column_name
moet worden castable naar de bijbehorende parameter vanfunc_name
.Gebruik een column masker om de waarde van
column_identifier
selectief te anonimiseren op basis van de gebruiker die een query uitvoert optable_name
, de waarde vancolumn_identifier
en de optioneleother_column
. constant_literal
Hiermee geeft u een constante parameter met het type dat overeenkomt met een functieparameter. De volgende typen worden ondersteund:
STRING
, numeriek (INTEGER
,FLOAT,
DOUBLE
,DECIMAL
...),BOOLEAN
,INTERVAL
NULL
.
Voorbeelden
Meer voorbeelden vindt u in Gevoelige table gegevens filteren met behulp van rijfilters en column maskers.
-- 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