Cláusula de coluna mask

Aplica-se a:Marque Sim Databricks SQL Marque Sim Databricks Runtime 12.2 LTS e superior Marque Sim somente Unity Catalog

Especifica uma função que é aplicada a uma coluna sempre que 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 da coluna. Isso pode ser útil para fins de controle de acesso refinado, onde a função pode inspecionar a identidade ou as associações de grupo do usuário que invoca para determinar se o valor deve ser redigido.

Você pode adicionar máscaras de coluna quando:

Importante

A máscara é aplicada assim que cada linha é buscada na fonte de dados. Quaisquer expressões, predicados ou ordens são aplicadas após a mascaragem. Por exemplo, unir a coluna mascarada contra outra coluna de outra tabela usará os valores mascarados para a comparação de junção.

Para obter mais informações sobre como usar máscaras de coluna, consulte Filtrar dados de tabela confidenciais usando 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 convertível para o tipo de parâmetro SQL UDF. Se func_name exigir mais parâmetros, os USING COLUMNS argumentos devem ser fornecidos pela cláusula.

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

  • other_column_name

    Opcionalmente, especifica colunas adicionais da tabela da coluna mascarada para passar para func_name. Cada other_column_name um deve ser moldável para o 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 executa uma consulta contra table_name, o valor de column_identifier e o opcional other_column.

  • constant_literal

    Especifica um parâmetro constante com o tipo correspondendo a um parâmetro de função. Os seguintes tipos são suportados: STRING, numérico (INTEGER, FLOAT, DOUBLE, DECIMAL ...), BOOLEAN, , NULLINTERVAL.

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