Oracle Data Redaction
Oracle Data Redaction
ORACLE DATA REDACTION enmascara los datos confidenciales justo antes de que los resultados de
la consulta SQL se devuelvan a la aplicación que emitió la consulta. Los datos almacenados en la base de
datos NO se cambian de ninguna manera.
Desde el punto de vista de las licencias, forma parte de la opción de seguridad avanzada (solo disponible
como opción para Oracle Database Enterprise Edition). Sin embargo, después, Oracle decidió hacerlo
también disponible en Oracle Database 11 g (solo en la versión 11.2.0.4).
NOTA:
Las políticas de redacción aplican si esta activa.
Se puede establecer solo un política de redacción a una
tabla o vista
Aunque Oracle Data Redaction como concepto es fantástico,
debe tener en cuenta que existen algunas limitaciones de
implementación (por ejemplo, tipos de datos no
compatibles)
ACCIONES PREVIAS :
Conéctese como SYSTEM o como un usuario que tiene privilegios de ejecución de
DBMS_REDACT.
Crear el usuario HR y las tablas correspondientes ( script entregado por el instructor )
BEGIN
dbms_redact.add_policy
(object_schema => 'HR',
object_name => 'EMPLOYEES',
policy_name => 'DMSK_LAST_NAME',
column_name => 'LAST_NAME',
function_type => DBMS_REDACT.FULL,
expression => '1=1');
END;
Conéctese como LUISA , consulte y verifique que la columna HIRE_DATE esta enmascarada:
TAREA 1 :
Implementar una política de redacción completa que nombrara como "REDACT_EMPLOYEES",
que enmascara la columna SALARY de la tabla HR.EMPLOYEES. Comprobar.
Comprobar cambio :
TAREA 2 :
Modificar el valor por defecto de enmascaramiento de las columnas tipo VARCHAR2 utilizando
el carácter 'T' . Comprobar.
Redacción parcial significa que solo una parte de los datos en una columna específica será
enmascarada, mientras que la otra parte de los datos será visible para el usuario, por ejemplo, los
primeros 12 dígitos de la tarjeta de crédito. el número será redactado, mientras que otros 4
dígitos serán visibles.
CASO 2: Implementar una política de redacción PARCIAL para la columna CARD de la tabla
HR.CARD reemplazando los primeros 9 caracteres con el símbolo '#'. Aplica a todos los usuarios
que no cuenten con privilegios EXEMPT_REDACTION_POLICY
ACCIONES PREVIAS : Conéctese como SYSTEM o como un usuario que tiene privilegios de ejecución
de DBMS_REDACT
COMMIT;
3.2 Creamos los usuarios LUCAS y MATIAS, con privilegios de consulta a la tabla
HR.CREDIT_CARD.
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'HR',
object_name => 'credit_card',
column_name => 'card',
column_description => 'Columna sensible',
policy_name => 'CARD_PARCIAL',
policy_description => 'Enmascara campo CARD',
function_type => DBMS_REDACT.PARTIAL,
function_parameters => 'VVVFVVVFVVVVVV, VVV-VVV-VVVVVV, *, 1,6',
expression => 'SYS_CONTEXT(
''SYS_SESSION_ROLES'',
''ROL_ADMINISTRADOR'') =
''FALSE''');
END;
Consultando políticas de redacción
Conectados como MATIAS consultamos la tabla, recordar que tiene NO TIENE el rol de
'ROL_ADMINISTRADOR'.
Conectados como LUCAS consultamos la tabla, recordar que tiene SI TIENE el rol de
'ROL_ADMINISTRADOR'.
BEGIN
DBMS_REDACT.alter_policy (
object_schema => 'HR',
object_name => 'credit_card',
policy_name => 'CARD_PARCIAL',
action => DBMS_REDACT.add_column,
column_name => 'IDCLIENTE',
function_type => DBMS_REDACT.partial,
function_parameters => 'VVVFVVVFVVVV,VVV-VVV-VVVV,#,1,6'
);
END;
CASO 4: Implementar una política de redacción PARCIAL para la columna NUM_CARD de la tabla
HR. CLIENTE reemplazando los primeros 8 CARACTERES con el símbolo '*'. Aplica a los
usuarios que cuenten con el rol ROL_MASK_NUMCARD.
c. Crear una política de redacción que enmascare los 8 primeros digitos con el texto '*' del
campo NUM_CARD. La política solo aplica a los usuarios que cuenten con el rol
ROL_MASK_NUMCARD
BEGIN
DBMS_REDACT.ADD_POLICY(
object_schema => 'system',
object_name => 'CLIENTE',
column_name => 'NUM_CARD',
column_description => 'Datos sensibles',
policy_name => 'MASK_CLIENTE_NUMCARD',
policy_description => 'Enmascaramiento a columna NUM_CARD',
function_type => DBMS_REDACT.PARTIAL,
function_parameters => 'VVVVVVVVVVVV, VVVVVVVVVVVV, *, 1,8',
expression => 'SYS_CONTEXT( ''SYS_SESSION_ROLES'',
''ROL_MASK_NUMCARD'') = ''TRUE''' );
END;
ACCIONES PREVIAS : Conéctese como SYSTEM o como un usuario que tiene privilegios de ejecución
de DBMS_REDACT
begin
dbms_redact.add_policy
(object_schema => HR,
object_name => 'PERSONAL',
policy_name => 'MASK_PERSONAL_SUELDO',
column_name => 'SUELDO',
function_type => DBMS_REDACT.RANDOM,
expression => 'SYS_CONTEXT(''USERENV'',
''SESSION_USER'') = ''ADAN''');
end;