Compartir a través de


Cláusula de mask de columna

Se aplica a: casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores casilla marcada como Sí solo Unity Catalog

Especifica una función que se aplica a una columna cada vez que se capturan filas de la tabla. Todas las consultas siguientes desde esa columna recibirán el resultado de evaluar esa función sobre la columna en lugar del valor original de la columna. Esto puede ser útil para fines de control de acceso específicos en los que la función puede inspeccionar la identidad o las pertenencias a grupos del usuario que realiza la invocación para decidir si expurga el valor.

Puede agregar máscaras de columna cuando:

Importante

La máscara se aplica en cuanto se captura cada fila del origen de datos. Las expresiones, predicados u ordenación se aplican después del enmascaramiento. Por ejemplo, la combinación entre la columna enmascarada en otra columna de otra tabla usará los valores enmascarados para la comparación de combinación.

Para más información sobre cómo usar máscaras de columna, consulte Filtrado de datos confidenciales de tabla con filtros de fila y máscaras de columna.

Sintaxis

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

Parámetros

  • func_name

    Una UDF de SQL escalar con al menos un parámetro.

    El primer parámetro de la UDF de SQL se asigna 1:1 con la columna enmascarada. El tipo de columna enmascarada debe convertirse al tipo de parámetro UDF de SQL. Si func_name requiere más parámetros, la cláusula USING COLUMNS debe proporcionar argumentos.

    El tipo de valor devuelto de la función debe convertirse al tipo de datos de la columna enmascarada.

  • other_column_name

    Opcionalmente, especifica columnas adicionales de la tabla de la columna enmascarada que se va a pasar a func_name. Cada other_column_name debe convertirse al parámetro correspondiente de func_name.

    Use una máscara de columna para anonimizar selectivamente el valor de column_identifier en función del usuario que ejecuta una consulta en table_name, el valor de column_identifier y los other_column opcionales.

  • constant_literal

    Especifica un parámetro constante con el tipo que coincide con un parámetro de función. Se admiten los siguientes tipos: STRING, numérico (INTEGER, FLOAT, DOUBLE, DECIMAL …), BOOLEAN, INTERVAL, NULL.

Ejemplos

Puede encontrar más ejemplos en Filtrado de datos de tabla confidenciales mediante filtros de fila y máscaras de columna.

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