Enmascaramiento dinámico de datos mediante cifrado
Este tutorial proporciona instrucciones sobre cómo configurar y utilizar el enmascaramiento dinámico de datos mediante cifrado en Netezza Performance Server.
El enmascaramiento dinámico de datos ayuda a evitar el acceso no autorizado a datos confidenciales de objetos de base de datos, como campos o columnas de tablas, ocultándolos a usuarios sin privilegios. Las reglas de enmascaramiento sólo se aplican en los resultados de la consulta y los datos de la base de datos no se ven afectados, por lo que pueden ser utilizados por otras aplicaciones que necesiten acceder a estos datos.
Acerca de esta tarea
En este tutorial se utiliza el siguiente esquema de ejemplo:

Las columnas " customer_name
" y " customer_address
" son las columnas sensibles que deben enmascararse y cifrarse. De todos los usuarios que pueden acceder a estas tablas (es decir, que tienen el privilegio " SELECT
") sólo los que tienen el rol " ACCOUNTS
" pueden ver las dos columnas sensibles. Para los demás usuarios, estos valores se enmascaran mediante encriptación.
La forma estándar de hacerlo es restringir el acceso a las tablas subyacentes y superponer vistas a las tablas que cambien los valores en función de la función del usuario. Para ello, primero cambie el nombre de la tabla subyacente y, a continuación, cree una vista, utilizando el nombre original de la tabla, que proyecte valores cifrados para las columnas sensibles en función de los roles que tengan acceso.
Procedimiento
Resultados
alice
" necesita un informe del total de " order_amount
, desglosado por el código de estado:select
sum(order_amount) as total,
customer_state
from customers inner join orders using (customer_id)
group by customer_state;
TOTAL | ESTADO_DEL_CLIENTE |
10750.01 | NY |
2000.00 | EI |
99.99 | XX |
Alice puede acceder a CLIENTES (la vista enmascarada). La columna ' customer_id
' no está encriptada, y se utiliza para unir contra la tabla ORDERS. La columna " customer_state
" no está codificada y se utiliza para hacer el roll-up (por estado). Pero " customer_name
y " customer_address
" son sensibles. Si decide verlos, están encriptados:
select * from customers order by customer_id;
CUSTOMER_ID | NOMBRE_CLIENTE | DIRECCIÓN_CLIENTE | ESTADO_DEL_CLIENTE | CUSTOMER_ZIP |
10031 | &J.&#+RXV | /U/%9$,1WZJ\*?<1L3- | EI | 90210 |
21451 | INR0-F50_0 | 1U*"\(7H"V;3S%NH0]!= ['T | NY | 55555 |
43918 | I_*$)VM0X0 | 0U+;!="XWV;#T&^Y#F#=8[ | NY | 98765 |
60844 | M>6%(7Q0Y@ | -T+#!9$@9T+#T6L(5L0 | NY | 55554 |
80008 | H>F0*F]0Y@ | 1L>B4*7<#U:WN&Z,JISI7YS< | XX | 0 |
ACCOUNTS
que le permite ver los datos fuente no encriptados:set role accounts;
select * from customers order by customer_id;
CUSTOMER_ID | NOMBRE_CLIENTE | DIRECCIÓN_CLIENTE | ESTADO_DEL_CLIENTE | CUSTOMER_ZIP |
10031 | Mark F | 234 Main Street | EI | 90210 |
21451 | Clark K | 1 Avenida Metrópolis | NY | 55555 |
43918 | Bruce W | 1600 Gotham Lane | NY | 98765 |
60844 | Pedro P | 500 Fifth Ave. | NY | 55554 |
80008 | Diana P | Isla de Themyscira | XX | 0 |