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 referentes àquela coluna recebem o resultado da avaliação dessa função sobre o valor original da coluna. 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 para o tipo de parâmetro UDF do SQL. 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.

  • nome_outra_coluna

    Especifica, opcionalmente, colunas adicionais da tabela da coluna mascarada para passar para 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