Saltar al contenido principal
Crea una política de enmascaramiento, que permite transformar o enmascarar dinámicamente los valores de las columnas para usuarios o roles específicos cuando consultan una tabla.
Las políticas de enmascaramiento proporcionan seguridad de los datos a nivel de columna al transformar datos sensibles en tiempo de consulta sin modificar los datos almacenados.
Sintaxis:
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

La cláusula UPDATE especifica qué columnas se deben enmascarar y cómo transformarlas. Se pueden enmascarar varias columnas en una sola política. Ejemplos:
  • Enmascaramiento simple: UPDATE email = '***masked***'
  • Enmascaramiento parcial: UPDATE email = concat(substring(email, 1, 3), '***@***.***')
  • Enmascaramiento basado en hash: UPDATE email = concat('masked_', substring(hex(cityHash64(email)), 1, 8))
  • Varias columnas: UPDATE email = '***@***.***', phone = '***-***-****'

Cláusula WHERE

La cláusula WHERE opcional permite aplicar enmascaramiento condicional en función de los valores de las filas. El enmascaramiento solo se aplicará a las filas que cumplan la condición. Ejemplo:
CREATE MASKING POLICY mask_high_salaries ON employees
UPDATE salary = 0
WHERE salary > 100000
TO analyst;

Cláusula TO

En la sección TO, especifique a qué usuarios y roles debe aplicarse la política.
  • TO user1, user2: Se aplica a usuarios/roles específicos
  • TO ALL: Se aplica a todos los usuarios
  • TO ALL EXCEPT user1, user2: Se aplica a todos los usuarios excepto a los especificados
A diferencia de las políticas de filas, las políticas de enmascaramiento no afectan a los usuarios a los que no se les aplica la política. Si ninguna política de enmascaramiento se aplica a un usuario, este verá los datos originales.

Cláusula PRIORITY

Cuando varias políticas de enmascaramiento se aplican a la misma columna para un usuario, la cláusula PRIORITY determina el orden de aplicación. Las políticas se aplican por orden de prioridad, de mayor a menor. La prioridad predeterminada es 0. Las políticas con la misma prioridad se aplican en un orden indefinido. Ejemplo:
-- Se aplica segunda (prioridad menor)
CREATE MASKING POLICY mask1 ON users
UPDATE email = 'low@priority.com'
TO analyst
PRIORITY 1;

-- Se aplica primera (prioridad mayor)
CREATE MASKING POLICY mask2 ON users
UPDATE email = 'high@priority.com'
TO analyst
PRIORITY 10;

-- analyst ve 'low@priority.com' porque se aplica en último lugar
Consideraciones sobre el rendimiento
  • Las políticas de enmascaramiento pueden afectar al rendimiento de las consultas según la complejidad de la expresión
  • Algunas optimizaciones pueden deshabilitarse en tablas con políticas de enmascaramiento activas
Última modificación el 10 de junio de 2026