Freigeben über


COLUMN mask-Klausel

Gilt für: Häkchen ja Databricks SQL durch Häkchen mit „Ja“ markiert Databricks Runtime 12.2 LTS und höher Häkchen gesetzt ja Nur Unity Catalog

Gibt eine Funktion an, die auf eine Spalte angewandt wird, wenn Zeilen aus der Tabelle abgerufen werden. Alle zukünftigen Abfragen von dieser Spalte erhalten das Ergebnis der Auswertung dieser Funktion über die Spalte anstelle des ursprünglichen Wertes der Spalte. Dies kann für eine präzise Zugriffssteuerung nützlich sein, bei der die Funktion die Identität oder Gruppenmitgliedschaft der aufrufenden Benutzer überprüfen kann, um zu entscheiden, ob der Wert zurückgezogen werden soll.

Sie können Spaltenformate hinzufügen, wenn Sie:

Wichtig

Die Maske wird angewandt, wenn Zeilen aus der Datenquelle abgerufen werden. Alle Ausdrücke, Prädikate oder Sortierungen werden nach der Maskierung angewandt. Beim Verknüpfen zwischen der maskierten Spalte und einer anderen Spalte aus einer anderen Tabelle werden die maskierten Werte beispielsweise für den Verknüpfungsvergleich verwendet.

Weitere Informationen zur Verwendung von Spaltenformaten finden Sie unter Filtern vertraulicher Tabellendaten mit Zeilenfiltern und Spaltenformaten.

Syntax

MASK func_name [ USING COLUMNS ( other_column_name | constant_literal [, ...] ) ]

Parameter

  • func_name

    Eine skalare SQL-UDF mit mindestens einem Parameter.

    Der erste Parameter der SQL-UDF wird 1:1 der maskierten Spalte zugeordnet. Der Typ der maskierten Spalte muss in den SQL-UDF-Parametertyp umgewandelt werden können. Wenn func_name weitere Parameter erfordert, müssen die Argumente von der USING COLUMNS-Klausel bereitgestellt werden.

    Der Rückgabetyp der Funktion muss in den Datentyp der maskierten Spalte umgewandelt werden können.

  • other_column_name

    Gibt optional zusätzliche Spalten der Tabelle der maskierten Spalte an, die an func_name übergeben werden sollen. Jede other_column_name muss in den entsprechenden Parameter von func_name konvertiert werden können.

    Verwenden Sie eine Spaltenmaske, um den Wert column_identifier selektiv zu anonymisieren, basierend auf den Benutzer*innen, die eine Abfrage von table_name ausführen, dem Wert von column_identifier und den optionalen other_column-Werten.

  • constant_literal

    Gibt einen Konstantenparameter an, dessen Typ einem Funktionsparameter entspricht. Die folgenden Typen werden unterstützt: STRING, numerische Typen (INTEGER, FLOAT, DOUBLE, DECIMAL, …), BOOLEAN, INTERVAL, NULL.

Beispiele

Weitere Beispiele finden Sie unter Filtern vertraulicher Tabellendaten mit Zeilenfiltern und Spaltenmasken.

-- 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