0% encontró este documento útil (0 votos)
485 vistas

Oracle Data Redaction

Este documento describe la función Oracle Data Redaction, la cual permite enmascarar datos confidenciales antes de que los resultados de consultas SQL sean devueltos a las aplicaciones. Explica cómo crear políticas de redacción completa, parcial y regular para enmascarar columnas específicas de tablas. También cubre cómo cambiar los valores predeterminados de enmascaramiento y eximir usuarios de las políticas.

Cargado por

kepler
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
485 vistas

Oracle Data Redaction

Este documento describe la función Oracle Data Redaction, la cual permite enmascarar datos confidenciales antes de que los resultados de consultas SQL sean devueltos a las aplicaciones. Explica cómo crear políticas de redacción completa, parcial y regular para enmascarar columnas específicas de tablas. También cubre cómo cambiar los valores predeterminados de enmascaramiento y eximir usuarios de las políticas.

Cargado por

kepler
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 9

Seguridad Talleres Oracle

ORACLE DATA REDACTION

ORACLE DATA REDACTION es una nueva característica de seguridad avanzada, introducida en


Oracle Database 12 c .  La función principal de esta función es enmascarar (ocultar / redactar) algunos
datos (confidenciales) de  los usuarios finales . 

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). 

En esta guía usted aprenderá a :

1. Creación de una política de redacción cuando se utiliza la redacción completa


2. Creando una política de redacción al usar la redacción parcial.
3. Creando una política de redacción al usar redacción aleatoria.
4. Crear una política de redacción al usar la redacción de expresiones regulares
5. Cambiar los parámetros de la función para una columna específica
6. Añadiendo una columna a la política de redacción.
7. Habilitar, deshabilitar y eliminar una política de redacción
8. Eximir a los usuarios de las políticas de redacción de datos

Cuando implementa políticas de redacción, debe definir lo siguiente:

 ¿Qué datos deben ser redactados?


 ¿Qué método de redacción es el más adecuado para los datos identificados?
 ¿En qué situaciones debe producirse la redacción?

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)

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

1. CREACIÓN DE UNA POLÍTICA DE REDACCIÓN CUANDO SE


UTILIZA LA REDACCIÓN COMPLETA
CASO 1 : Implementar una política de redacción completa para la columna HIRE_DATE de la tabla
HR.EMPLOYEES

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 )

1.1 CONSULTAR LA TABLA DE TRABAJO ( antes de la redacción )


SELECT FIRST_NAME , LAST_NAME , HIRE_DATE, SALARY
FROM HR.EMPLOYEES;

1.2 CREE LA POLÍTICA DE REDACCIÓN  COMPLETA 'DMSK_LAST_NAME'


La política establece que la columna  HIRE_DATE ( tabla  HR.EMPLOYEES ) se redacten
utilizando la redacción completa:

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;

1.3 VERIFIQUE LA CREACIÓN DE LA POLÍTICA

SELECT * FROM redaction_policies;

Conectado como SYSTEM consulte la tabla


SELECT FIRST_NAME , LAST_NAME , HIRE_DATE, SALARY
FROM HR.EMPLOYEES;

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

1.4 REVISAR RESULTADOS DE POLITICA DE REDACCION DEL TIPO FULL

Crear nuevo usuario LUISA con privilegios de consulta en la tabla 0E.CUSTOMERS

CREATE USER LUISA IDENTIFIED BY 123;

GRANT CREATE SESSION TO LUISA;

GRANT SELECT ON HR.EMPLOYEES TO LUISA;

Conéctese como LUISA , consulte y verifique que la columna HIRE_DATE esta enmascarada:

SELECT FIRST_NAME , LAST_NAME , HIRE_DATE, SALARY


FROM HR.EMPLOYEES;

Nota : La columna LAST_NAME no muestra datos debido a que el


valor por defecto para enmascaramiento de columna VARCHAR
es el valor nulo

La vista REDACTION_VALUES_FOR_TYPE_FULL muestra los


valores por defecto de los distintos tipos de datos.

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.

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

2. CAMBIO DEL VALOR POR DEFECTO DE ENMASCARAMIENTO


DE COLUMNAS
Inicialmente los tipos de datos compatibles con DATA REDACTION, tienen asignados
valores predeterminados por defecto. Por ejemplo el VARCHAR2 utiliza el espacio en blanco,
el NUMBER el valor cero. Utilizaremos el procedimiento
UPDATE_FULL_REDACTION_VALUES para cambiar el valor predeterminado.

Conectado como SYS modifiquemos el valor por defecto de VARCHAR2 a''X'

exec dbms_redact.UPDATE_FULL_REDACTION_VALUES ( varchar_val => 'X' );

Comprobar cambio :

select varchar_value from REDACTION_VALUES_FOR_TYPE_FULL;

Reiniciar el servidor, conéctese como LUISA y consulte :

SELECT FIRST_NAME , LAST_NAME , HIRE_DATE, SALARY


FROM HR.EMPLOYEES;

TAREA 2 :
Modificar el valor por defecto de enmascaramiento de las columnas tipo VARCHAR2 utilizando
el carácter 'T' . Comprobar.

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

3. CREACION DE POLITICA DE REDACCION PARCIAL

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

3.1 Crearemos la tabla de CREDIT_CARD en el SCHEMA : HR

CREATE TABLE HR.CREDIT_CARD ( ID INTEGER ,

IDCLIENTE VARCHAR(10) , CARD VARCHAR(12) );

INSERT INTO HR.CREDIT_CARD VALUES ( 1 , '5477815100' , '987234372687');

INSERT INTO HR.CREDIT_CARD VALUES ( 2 , '2554783107' , '772534961873');

INSERT INTO HR.CREDIT_CARD VALUES ( 3 , '9875424112' , '237498428852');

INSERT INTO HR.CREDIT_CARD VALUES ( 4 , '2547458213' , '753298721630');

COMMIT;

SELECT * FROM HR.CREDIT_CARD;

3.2 Creamos los usuarios LUCAS y MATIAS, con privilegios de consulta a la tabla
HR.CREDIT_CARD.

CREATE USER LUCAS IDENTIFIED BY 123;

CREATE USER MATIAS IDENTIFIED BY 123;

GRANT CREATE SESSION TO LUCAS , MATIAS;

GRANT SELECT ON HR.CREDIT_CARD TO LUCAS, MATIAS;

3.3 Creamos el rol denominado 'ROL_ADMINISTRADOR', asignarle este rol a LUCAS.

CREATE ROLE ROL_ADMINISTRADOR;

GRANT ROL_ADMINISTRADOR TO LUCAS;

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

3.4 Activaremos política de redacción

Activando enmascaramiento a la columna CARD de la tabla HR.CREDIT_CARD, bajo la


siguiente plantilla : ***-***-1234.
Aplica a todos los usuarios que no cuenten con el ROL de ''ROL_ADMINISTRADOR''

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

SELECT * FROM redaction_policies;

Conectados como MATIAS consultamos la tabla, recordar que tiene NO TIENE el rol de
'ROL_ADMINISTRADOR'.

SELECT * FROM HR.CREDIT_CARD;

Resultado de la tabla con enmascaramiento.

Para comprender la expresión definida en la política de redacción , consulte:

SELECT SYS_CONTEXT( 'SYS_SESSION_ROLES','ROL_ADMINISTRADOR')


FROM DUAL;

Conectados como LUCAS consultamos la tabla, recordar que tiene SI TIENE el rol de
'ROL_ADMINISTRADOR'.

SELECT * FROM HR.CREDIT_CARD;

Para comprender la expresión definida en la política de redacción , consulte:

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

SELECT SYS_CONTEXT( 'SYS_SESSION_ROLES','ROL_ADMINISTRADOR')


FROM DUAL;

3.5 Agregando una política de redacción en otra columna


Agregar una máscara a la columna IDCLIENTE de la tabla CREDIT_CARD

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;

Se muestran los resultados:

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

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.

a. Creamos nueva tabla llamada CLIENTE


CREATE TABLE HR.CLIENTE ( ID INTEGER , DATOS VARCHAR(100) , NUM_CARD VARCHAR2(12 ));

INSERT INTO HR.CLIENTE VALUES ( 1 , 'ROBERTO SINFUENTES ALVAREZ' , '012345678900' );


INSERT INTO HR.CLIENTE VALUES ( 2 , 'ALBERTO RAMIREZ HERRERA' , '254365257895' );
INSERT INTO HR.CLIENTE VALUES ( 3 , 'SOFIA CARDENAS MORALES' , '885741247995' );
INSERT INTO HR.CLIENTE VALUES ( 4 , 'LEOPOLDO MATA ROSALES' , '326247514990' );
COMMIT;

b. Crear el usuario de prueba ADAN con privilegios de lectura a la tabla SYSTEM.CLIENTE,


asignar el rol de ROL_MASK_NUMCARD

CREATE USER ADAN IDENTIFIED BY 123;


GRANT CREATE SESSION TO ADAN;
GRANT SELECT ON SYSTEM.CLIENTE TO ADAN;

CREATE ROLE ROL_MASK_NUMCARD;


GRANT ROL_MASK_NUMCARD TO ADAN;

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;

d. Conectado como ADAN consulte la tabla

SELECT * FROM SYSTEM.CLIENTE;

Instructor : ALAIN MEJIA AVALOS SESION 01


Seguridad Talleres Oracle

4. CREACION DE POLITICA DE REDACCION ALEATORIA


El tipo de redacción aleatoria generalmente se usa para los tipos de datos numéricos y fecha y
hora debido a que genera valores que hacen muy difícil su aproximación a los valores reales .

CASO 5: Implementar una política de redacción ALEATORIA en la columna SALARIO de la tabla


PERSONAL. Aplica la política al usuario ADAN.

ACCIONES PREVIAS : Conéctese como SYSTEM o como un usuario que tiene privilegios de ejecución
de DBMS_REDACT

a. Creamos nueva tabla llamada HR.PERSONAL

CREATE TABLE HR.PERSONAL ( ID INTEGER , DATOS VARCHAR(100) ,


SUELDO NUMERIC( 10)) ;

INSERT INTO HR.PERSONAL VALUES ( 1 , 'ROBERTO SINFUENTES


ALVAREZ' , 8500 );
INSERT INTO HR.PERSONAL VALUES ( 2 , 'ALBERTO RAMIREZ HERRERA' ,
9300 );
INSERT INTO HR.PERSONAL VALUES ( 3 , 'SOFIA CARDENAS MORALES' ,
5800 );
INSERT INTO HR.PERSONAL VALUES ( 4 , 'LEOPOLDO MATA ROSALES' ,
4800 );
COMMIT;

b. Asignar a ADAN privilegios de lectura a la tabla SYSTEM.PERSONAL.

GRANT SELECT ON SYSTEM.PERSONAL TO ADAN;

c. Crear una política de redacción aleatoria al campo SUELDO de la tabla PERSONAL. La


política solo aplica al usuario ADAN.

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;

d. Conectado como ADAN consulte la tabla

SELECT * FROM SYSTEM.PERSONAL;

Instructor : ALAIN MEJIA AVALOS SESION 01

También podría gustarte