Перейти к основному содержанию
Создаёт политику маскирования, которая позволяет динамически преобразовывать или маскировать значения столбцов для определённых пользователей или ролей при выполнении запроса к таблице.
Политики маскирования обеспечивают защиту данных на уровне столбцов, преобразуя конфиденциальные данные во время выполнения запроса без изменения хранимых данных.
Синтаксис:
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]

Предложение UPDATE

Предложение UPDATE указывает, какие столбцы нужно маскировать и как их преобразовывать. В одной политике можно маскировать несколько столбцов. Примеры:
  • Простая маскировка: UPDATE email = '***masked***'
  • Частичная маскировка: UPDATE email = concat(substring(email, 1, 3), '***@***.***')
  • Маскировка с использованием хеша: UPDATE email = concat('masked_', substring(hex(cityHash64(email)), 1, 8))
  • Несколько столбцов: UPDATE email = '***@***.***', phone = '***-***-****'

Предложение WHERE

Необязательное предложение WHERE позволяет выполнять условное маскирование в зависимости от значений строк. Маскирование будет применяться только к строкам, удовлетворяющим условию. Пример:
CREATE MASKING POLICY mask_high_salaries ON employees
UPDATE salary = 0
WHERE salary > 100000
TO analyst;

Предложение TO

В секции TO укажите, к каким пользователям и ролям должна применяться политика.
  • TO user1, user2: Применяется к конкретным пользователям/ролям
  • TO ALL: Применяется ко всем пользователям
  • TO ALL EXCEPT user1, user2: Применяется ко всем пользователям, кроме указанных
В отличие от политик доступа к строкам, политики маскирования не влияют на пользователей, к которым они не применяются. Если к пользователю не применяется ни одна политика маскирования, он видит исходные данные.

Предложение PRIORITY

Когда к одному и тому же столбцу для пользователя применяются несколько политик маскирования, предложение PRIORITY определяет порядок их применения. Политики применяются в порядке убывания приоритета. Приоритет по умолчанию — 0. Политики с одинаковым приоритетом применяются в неопределённом порядке. Пример:
-- Применяется второй (более низкий приоритет)
CREATE MASKING POLICY mask1 ON users
UPDATE email = 'low@priority.com'
TO analyst
PRIORITY 1;

-- Применяется первым (более высокий приоритет)
CREATE MASKING POLICY mask2 ON users
UPDATE email = 'high@priority.com'
TO analyst
PRIORITY 10;

-- analyst видит 'low@priority.com', так как эта политика применяется последней
Вопросы производительности
  • Политики маскирования могут влиять на производительность запросов в зависимости от сложности выражений
  • Для таблиц с активными политиками маскирования некоторые оптимизации могут быть недоступны
Последнее изменение 10 июня 2026 г.