Kolomcomponent mask
Van toepassing op: Alleen Databricks SQL Databricks Runtime 12.2 LTS en hoger dan 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:
- Maak een tabel met CREATE TABLE.
- Kolommen toevoegen aan een tabel met ALTER TABLE ... KOLOM TOEVOEGEN.
- 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 kolommaskers voor 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 wijst 1:1 toe met de gemaskeerde kolom. Het type gemaskeerde kolom moet worden geconverteerd naar het parametertype SQL UDF. Als
func_name
er meer parameters zijn vereist, moeten argumenten worden opgegeven door deUSING COLUMNS
component.Het retourtype van de functie moet worden geconverteerd naar het gegevenstype van de gemaskeerde kolom.
-
Hiermee geeft u desgewenst extra kolommen op van de gemaskeerde kolomtabel waarnaar moet worden doorgegeven
func_name
. Elkother_column_name
moet worden castable naar de bijbehorende parameter vanfunc_name
.Gebruik een kolommasker om selectief de waarde te anonimiseren op basis van
column_identifier
de gebruiker waarop een querytable_name
wordt uitgevoerd, 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 Filter gevoelige tabelgegevens 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