Pular para o conteúdo principal
Cria uma política de mascaramento, que permite transformar ou mascarar dinamicamente valores de coluna para usuários ou funções específicas quando consultam uma tabela.
As políticas de mascaramento fornecem segurança de dados em nível de coluna ao transformar dados sensíveis no momento da consulta, sem modificar os dados armazenados.
Sintaxe:
CREATE MASKING POLICY [IF NOT EXISTS | OR REPLACE] policy_name ON [database.]table
    UPDATE column1 = expression1 [, column2 = expression2 ...]
    [WHERE condition]
    TO {role1 [, role2 ...] | ALL | ALL EXCEPT role1 [, role2 ...]}
    [PRIORITY priority_number]

Cláusula UPDATE

A cláusula UPDATE especifica quais colunas devem ser mascaradas e como transformá-las. É possível mascarar várias colunas em uma única política. Exemplos:
  • Mascaramento simples: UPDATE email = '***masked***'
  • Mascaramento parcial: UPDATE email = concat(substring(email, 1, 3), '***@***.***')
  • Mascaramento baseado em hash: UPDATE email = concat('masked_', substring(hex(cityHash64(email)), 1, 8))
  • Várias colunas: UPDATE email = '***@***.***', phone = '***-***-****'

Cláusula WHERE

A cláusula WHERE opcional permite o mascaramento condicional com base nos valores das linhas. Apenas as linhas que atenderem à condição terão o mascaramento aplicado. Exemplo:
CREATE MASKING POLICY mask_high_salaries ON employees
UPDATE salary = 0
WHERE salary > 100000
TO analyst;

Cláusula TO

Na seção TO, especifique a quais usuários e funções a política deve se aplicar.
  • TO user1, user2: Aplica-se a usuários/funções específicos
  • TO ALL: Aplica-se a todos os usuários
  • TO ALL EXCEPT user1, user2: Aplica-se a todos os usuários, exceto os especificados
Ao contrário das políticas de linha, as políticas de mascaramento não afetam usuários aos quais a política não se aplica. Se nenhuma política de mascaramento se aplicar a um usuário, ele verá os dados originais.

Cláusula PRIORITY

Quando várias políticas de mascaramento se aplicam à mesma coluna para um usuário, a cláusula PRIORITY determina a ordem de aplicação. As políticas são aplicadas da prioridade mais alta para a mais baixa. A prioridade padrão é 0. Políticas com a mesma prioridade são aplicadas em ordem indefinida. Exemplo:
-- Aplicado em segundo (prioridade menor)
CREATE MASKING POLICY mask1 ON users
UPDATE email = 'low@priority.com'
TO analyst
PRIORITY 1;

-- Aplicado em primeiro (prioridade maior)
CREATE MASKING POLICY mask2 ON users
UPDATE email = 'high@priority.com'
TO analyst
PRIORITY 10;

-- analyst vê 'low@priority.com' porque é aplicado por último
Considerações sobre desempenho
  • As políticas de mascaramento podem afetar o desempenho da consulta, dependendo da complexidade da expressão
  • Algumas otimizações podem ser desativadas para tabelas com políticas de mascaramento ativas
Última modificação em 10 de junho de 2026