Compartilhar via


Cláusula mask da coluna

Aplica-se a: verificação marcada como sim SQL do Databricksverificação marcada como sim Databricks Runtime 12.2 LTS e versões posteriores verificação marcada como sim Somente Catálogo do Unity

Especifica uma função que é aplicada a uma coluna sempre que as linhas são buscadas na tabela. Todas as consultas subsequentes dessa coluna recebem o resultado da avaliação dessa função sobre a coluna no lugar do valor original. Isso pode ser útil para fins de um controle de acesso detalhado, em que a função pode inspecionar a identidade e/ou as filiações a grupos do usuário que a invocou para determinar se quer ocultar o valor.

Você pode adicionar máscaras de coluna quando:

Importante

A máscara é aplicada assim que cada linha é buscada na fonte de dados. Todas as expressões, ordenações ou predicados são aplicados após o mascaramento. Por exemplo, a junção da coluna mascarada com outra coluna de outra tabela usará os valores mascarados para a comparação na junção.

Para obter mais informações sobre como usar as máscaras de coluna, consulte Filtrar dados confidenciais da tabela com filtros de linha e máscaras de coluna.

Sintaxe

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

Parâmetros

  • func_name

    Um SQL UDF escalar com pelo menos um parâmetro.

    O primeiro parâmetro do SQL UDF mapeia 1:1 com a coluna mascarada. O tipo da coluna mascarada deve ser conversível no tipo de parâmetro SQL UDF. Se func_name requer mais parâmetros, os argumentos devem ser fornecidos pela cláusula USING COLUMNS.

    O tipo de retorno da função deve ser conversível no tipo de dados da coluna mascarada.

  • other_column_name

    Opcionalmente, especifica colunas adicionais da tabela da coluna mascarada a serem passadas para o func_name. Cada other_column_name um deve ser conversível no parâmetro correspondente de func_name.

    Use uma máscara de coluna para anonimizar seletivamente o valor de column_identifier com base no usuário que está executando uma consulta relativa a table_name, ao valor de column_identifier e a other_column opcional.

  • constant_literal

    Especifica um parâmetro constante com o tipo que corresponde a um parâmetro de função. Há suporte para os seguintes tipos: STRING, numérico (INTEGER,FLOAT,,DOUBLE,DECIMAL...), BOOLEAN, INTERVAL, NULL.

Exemplos

Você pode encontrar mais exemplos em Filtrar dados confidenciais da tabela usando filtros de linha e máscaras de coluna.

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