Kolom mask
-clausule
nl-NL: Van toepassing op: Databricks SQL
Databricks Runtime 12.2 LTS en hoger
alleen Unity Catalog
Hiermee geeft u een functie op die wordt toegepast op een kolom wanneer rijen worden opgehaald uit de tabel. Alle volgende query's van die kolom ontvangen het resultaat van het evalueren van die functie ten opzichte van de kolom in plaats van de oorspronkelijke waarde van de kolom. Dit kan handig zijn voor verfijnde toegangsbeheerdoeleinden, waarbij de functie de identiteit of groepslidmaatschappen van de aanroepende gebruiker kan inspecteren om te bepalen of de waarde moet worden bewerkt.
U kunt kolommaskers toevoegen wanneer u:
- Een tabel maken met CREATE TABLE.
- Kolommen toevoegen aan een tabel met ALTER TABLE ... VOEG COLUMNtoe.
- Een kolom 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. Als u bijvoorbeeld een gemaskeerde kolom koppelt aan een andere kolom uit een andere tabel, worden de gemaskeerde waarden gebruikt voor de joinvergelijking.
Zie Gevoelige tabelgegevens filteren met rijfilters en kolommaskersvoor meer informatie over het gebruik van kolommaskers.
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 kolom. Het type van de gemaskeerde kolom moet overzetbaar zijn naar het SQL UDF-parametertype. Als
func_name
meer parameters vereist, moeten argumenten worden opgegeven door deUSING COLUMNS
-component.Het retourtype van de functie moet te casten zijn naar het gegevenstype van de gemaskeerde kolom.
-
Optioneel geeft u extra kolommen op van de tabel met gemaskeerde kolommen die moeten worden doorgegeven aan
func_name
. Elkother_column_name
moet omgezet kunnen worden naar de bijbehorende parameter vanfunc_name
.Gebruik een kolommasker 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 specificeert u een constante parameter met een 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 tabelgegevens filteren met behulp van rijfilters en kolommaskers.
-- 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