Delen via


Kolomcomponent mask

Van toepassing op:vinkje als ja aan Alleen Databricks SQL vinkje als ja aan Databricks Runtime 12.2 LTS en hoger vinkje als ja aan 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:

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

  • func_name

    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 de USING COLUMNS component.

    Het retourtype van de functie moet worden geconverteerd naar het gegevenstype van de gemaskeerde kolom.

  • other_column_name

    Hiermee geeft u desgewenst extra kolommen op van de gemaskeerde kolomtabel waarnaar moet worden doorgegeven func_name. Elk other_column_name moet worden castable naar de bijbehorende parameter van func_name.

    Gebruik een kolommasker om selectief de waarde te anonimiseren op basis van column_identifier de gebruiker waarop een query table_namewordt uitgevoerd, de waarde van column_identifier en de optionele other_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, INTERVALNULL.

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