Cláusula de mask
de columna
Se aplica a: Databricks SQL Databricks Runtime 12.2 LTS y versiones posteriores 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:
- Cree una tabla mediante CREATE TABLE.
- Agrega columnas a una tabla con ALTER TABLE … ADD COLUMN.
- Modifica una columna con ALTER TABLE ... ALTER COLUMN.
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
-
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áusulaUSING COLUMNS
debe proporcionar argumentos.El tipo de valor devuelto de la función debe convertirse al tipo de datos de la columna enmascarada.
-
Opcionalmente, especifica columnas adicionales de la tabla de la columna enmascarada que se va a pasar a
func_name
. Cadaother_column_name
debe convertirse al parámetro correspondiente defunc_name
.Use una máscara de columna para anonimizar selectivamente el valor de
column_identifier
en función del usuario que ejecuta una consulta entable_name
, el valor decolumn_identifier
y losother_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