> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação da política de mascaramento

# CREATE MASKING POLICY

export const CloudOnlyBadge = () => {
  return <div className="cloudBadge">
            <div className="cloudIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path fillRule="evenodd" clipRule="evenodd" d="M5.33395 12.6667H12.3739C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00004 12.3739 8.00004H12.0839V7.33337C12.0839 5.12671 10.2906 3.33337 8.08395 3.33337C6.09928 3.33337 4.45395 4.78537 4.14195 6.68204C2.55728 6.76271 1.29395 8.06204 1.29395 9.66671C1.29395 11.3234 2.63728 12.6667 4.29395 12.6667H5.33395Z" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'Somente no ClickHouse Cloud'}
        </div>;
};

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.

<Tip>
  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.
</Tip>

Sintaxe:

```sql theme={null}
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]
```

<div id="update-clause">
  ## Cláusula UPDATE
</div>

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 = '***-***-****'`

<div id="where-clause">
  ## Cláusula WHERE
</div>

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:

```sql theme={null}
CREATE MASKING POLICY mask_high_salaries ON employees
UPDATE salary = 0
WHERE salary > 100000
TO analyst;
```

<div id="to-clause">
  ## Cláusula TO
</div>

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

<Note>
  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.
</Note>

<div id="priority-clause">
  ## Cláusula PRIORITY
</div>

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:

```sql theme={null}
-- 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
```

<Info>
  **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
</Info>
