Leccion 05 - Oracle Data Redaction PDF

Title Leccion 05 - Oracle Data Redaction
Author Alain Mejia Avalos
Course Base de Datos
Institution Universidad Nacional de Ingeniería
Pages 10
File Size 518.7 KB
File Type PDF
Total Downloads 23
Total Views 140

Summary

ENMASACARAMIENTO DE DATOS EN ORACLE...


Description

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

Instructor : ALAIN MEJIA AVALOS

Talleres Oracle

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;

Instructor : ALAIN MEJIA AVALOS

SESION 01

Seguridad

Talleres Oracle

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

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 ALVAREZ' , 8500 ); INSERT INTO HR.PERSONAL HERRERA' , 9300 ); INSERT INTO HR.PERSONAL , 5800 ); INSERT INTO HR.PERSONAL 4800 ); COMMIT;

VALUES ( 1 , 'ROBERTO SINFUENTES VALUES ( 2 , 'ALBERTO RAMIREZ VALUES ( 3 , 'SOFIA CARDENAS MORALES' VALUES ( 4 , 'LEOPOLDO MATA ROSALES' ,

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


Similar Free PDFs