Puedes leer todo sin registrarte. Solo crearemos un perfil anónimo cuando decidas guardar tu progreso.
Lección 3 de 5
Row filters y column masks
Aplica row filters y column masks con funciones simples, deterministas y auditables, entendiendo su impacto en optimización e interoperabilidad.
- Duración
- 17 min aprox.
- Objetivo
- Aplica row filters y column masks con funciones simples, deterministas y auditables, entendiendo su impacto en optimización e interoperabilidad.
- Siguiente paso
- Continuar con la siguiente lección
Ver detalles del módulo
Unity Catalog avanzado y privacidad
Aplica controles centralizados a datos sensibles y demuestra cumplimiento mediante auditoría.
- Diseñar herencia y ownership
- Aplicar row filters, masks y ABAC
- Implementar retención, anonimización y purga
03OperaciónRow filters y column masks
Aplica row filters y column masks con funciones simples, deterministas y auditables, entendiendo su impacto en optimización e interoperabilidad.
+
Row filters y column masks
Aplica row filters y column masks con funciones simples, deterministas y auditables, entendiendo su impacto en optimización e interoperabilidad.
Un row filter devuelve boolean y elimina filas que el usuario no debe ver; una column mask devuelve el valor original o transformado con un tipo compatible. Pueden asignarse directamente a una tabla mediante UDFs SQL o centralizarse con ABAC. La política se evalúa en query time y la seguridad prima sobre optimizaciones que pudieran filtrar información.
Mantén UDFs simples: evita agregaciones, ventanas y lógica no determinista que limite `MERGE` o pushdown. Prueba cada grupo con usuarios representativos, incluyendo administradores exentos y service principals. Acceso por path y ciertos clientes externos no soportan tablas con políticas; inventaría interoperabilidad y crea una vista o share seguro cuando proceda.
Modelo mental
Row filters y column masks son transformaciones de seguridad insertadas en la consulta. Un row filter decide si cada fila puede atravesar; una mask sustituye el valor visible de una columna y debe devolver un tipo compatible. Pueden asignarse manualmente a una tabla o centralizarse mediante ABAC, opción recomendada para reglas repetidas. Como el motor debe impedir inferencias sobre valores protegidos, prioriza seguridad sobre ciertas optimizaciones, y funciones complejas reducen pushdown o rendimiento. Una máscara no cifra el almacenamiento ni borra el dato; controla la vista del usuario en consultas compatibles. Las claves de join, particiones y columnas usadas en la policy merecen pruebas especiales por semántica, rendimiento y limitaciones de DML.
Función de seguridad evaluada en consulta que devuelve verdadero únicamente para las filas visibles por la identidad actual.
Implementa segmentación regional, departamental o por tenant sin crear copias físicas separadas de cada conjunto.Función que sustituye dinámicamente el valor mostrado de una columna mientras conserva un tipo compatible con su contrato.
Permite compartir estructura y datos no sensibles sin exponer el valor original a lectores no autorizados.Principio por el que el motor limita transformaciones del plan si podrían revelar información protegida por filtros o máscaras.
Explica por qué una policy correcta puede cambiar pushdown o rendimiento y exige medición específica.CREATE OR REPLACE FUNCTION prod.governance.region_filter(region STRING)
RETURN IF(is_account_group_member('finance_global'), TRUE, region = 'EU');
CREATE OR REPLACE FUNCTION prod.governance.mask_email(email STRING)
RETURN IF(
is_account_group_member('pii_readers'),
email,
CONCAT('***@', element_at(split(email, '@'), -1))
);
ALTER TABLE prod.sales.customers
SET ROW FILTER prod.governance.region_filter ON (region);
ALTER TABLE prod.sales.customers
ALTER COLUMN email SET MASK prod.governance.mask_email;El filtro fijo a EU es un ejemplo de laboratorio; en producción mapea identidad a región mediante una tabla de autorización gobernada.
Puntos clave
- Row filter controla filas; column mask transforma valores visibles.
- El tipo de la mask debe ser compatible con la columna.
- Políticas complejas pueden afectar DML, pushdown y clientes externos.
Evita
- Implementar una mask que cambia STRING por un tipo incompatible.
- Usar una UDF no determinista o con subconsultas complejas y bloquear DML necesario.
Recuerdo activo