Integridad y Seguridad en los sistemas de Bases de Datos

47
Integridad y Seguridad en los sistemas de Bases de Datos Javier Escobar Javier Escobar Luis Luis Ramirez Ramirez Omar Omar Asprino Asprino

Transcript of Integridad y Seguridad en los sistemas de Bases de Datos

Integridad y Seguridad en los sistemas de

Bases de Datos

Javier EscobarJavier EscobarLuis Luis RamirezRamirezOmar Omar AsprinoAsprino

ContenidoContenido1.1. Restricciones de IntegridadRestricciones de Integridad

1.1. Claves PrimariasClaves Primarias

2.2. Restricciones de los DominiosRestricciones de los Dominios

3.3. Integridad ReferencialIntegridad Referencial

4.4. AsertosAsertos

5.5. Disparadores (Disparadores (TriggersTriggers))

2.2. Seguridad y AutorizaciónSeguridad y Autorización

1.1. Tipos de SeguridadTipos de Seguridad

2.2. Seguridad de la Base de Datos y el DBASeguridad de la Base de Datos y el DBA

3.3. Violaciones de SeguridadViolaciones de Seguridad

4.4. Autorizaciones y VistasAutorizaciones y Vistas

5.5. Cifrado y AutentificaciónCifrado y Autentificación

6.6. Control de Acceso DiscrecionalControl de Acceso Discrecional

7.7. Control de Acceso ObligatorioControl de Acceso Obligatorio

1. 1. IntegridadIntegridad y y SeguridadSeguridad

Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas en la base de datos no provoquen la pérdida de la consistencia de los datos.

En el modelo Entidad – Interrelación existen dos restricciones:

•Declaración de claves (Regla de la Entidad)

•Forma de la relación (Regla de Integridad Referencial)

1.1. Claves 1.1. Claves PrimariasPrimarias

•Es el mínimo subconjunto no vacío de atributos que permiten identificar en forma unívoca una tupla dentro de la relación.

•Si existen varios conjuntos que cumplan esta condición se denominan llaves candidatas y debe ser seleccionada una de estas como llave primaria.

•Los atributos que conforman la clave primaria se denominan atributos primos.

•Esta definición determina que para un valor llave primaria solo existirá una tupla o registro en la tabla. Esta situación garantiza que no se tendrá información repetida o discordante para un valor de clave y puede ser usada como control, para evitar la inclusión de información inconsistente en las tablas.

1.2. 1.2. Restricciones de los DominiosRestricciones de los Dominios

•A cada atributo se le debe asociar un dominio de valores posibles.

•El asociar un dominio a cierto atributo constituye una restricción sobre los valores que puede tomar.

•Además de los dominios "naturales", usados como tipos de datos, el administrador del sistema puede generar sus propios dominios definiendo el conjunto de valores permitidos.

•Esta característica, usada en forma correcta, se convierte en mecanismo de control, restricción y validación desde el DBMS, de los datos a ingresar.

1.3. 1.3. Integridad Referencial (I)Integridad Referencial (I)

•La condición de Integridad Referencial se refiere a que si un valor que aparece en una relación para un conjunto de atributos determinado entonces aparece también en otra relación para un cierto conjunto de atributos.

•La integridad referencial es una propiedad deseable en las bases de datos mediante la cual se garantiza que una entidad siempre se relaciona con otras entidades que existen en la base de datos.

•La integridad referencial es un sistema de reglas que utilizan la mayoría de las bases de datos relacionales para asegurarse que los registros de tablas relacionadas son válidos y que no se borren o cambien datos relacionados de forma accidental produciendo errores de integridad.

1.3. 1.3. Integridad Referencial (II)Integridad Referencial (II)

•Cuando se define una columna como clave foránea, las filas de la tabla pueden contener en esa columna o bien el valor nulo (ningún valor), o bien un valor que existe en otra tabla, un error sería asignar a un habitante una población que no está en la tabla de poblaciones.

•La integridad referencial consiste en que los datos que referencian otros (claves foráneas) deben ser correctos.

•La integridad referencial se activa en cuanto creamos una clave foránea y a partir de ese momento se comprueba cada vez que se modifiquen datos que puedan alterarla.

Una persona se identifica por su atributo CI (Cédula de Identidad). Tiene además otros atributos como el nombre y la dirección. La entidad Factura tiene un atributo CI (del cliente) que identifica a quién pertenece la factura.

Por sentido común es evidente que todo valor de CI debe corresponder con algún valor existente del atributo CI de la entidad Persona.

Factura(Número, CI, Monto)

Persona(CI, Nombre, Dirección)

Factura(Número, CI, Monto)

Persona(CI, Nombre, Dirección)

1.3. 1.3. Integridad Referencial (III)Integridad Referencial (III)

Cuando se crea una nueva instancia de Factura, la integridad referencial exige que el atributo CI coincida con el atributo CI de alguna instancia de la entidad Persona. En caso contrario, no se permite la operación.

Cuando se intenta eliminar una instancia de Persona, la integridad referencial exige que no exista ninguna factura asociada, es decir, se comprueba que no existe ninguna instancia de Factura cuyo atributo CI coincida con el atributo CI de la instancia a borrar. En caso contrario, no se permite la operación.

1.3. 1.3. Integridad Referencial (IV)Integridad Referencial (IV)

¿Cuándo se pueden producir errores en los datos?

•Cuando insertamos una nueva fila en la tabla secundaria y el valor de la clave foránea no existe en la tabla principal.

•Cuando modificamos el valor de la clave principal de un registro que tiene ‘hijos’.

•Cuando modificamos el valor de la clave foránea, el nuevo valor debe existir en la tabla principal.

•Cuando queremos borrar una fila de la tabla principal y ese registro tiene ‘hijos’.

1.3. 1.3. Integridad Referencial (V)Integridad Referencial (V)

•Actualizar registros en cascada:

Esta opción le indica al SGBD que cuando se cambie un valor del campo clave de la tabla principal, automáticamente cambiará el valor de la clave foránea de los registros relacionados en la tabla secundaria.

•Eliminar registros en cascada:

Esta opción le indica al SGBD que cuando se elimina un registro de la tabla principal automáticamente se borran también los registros relacionados en la tabla secundaria.

1.3. 1.3. Integridad Referencial (VI)Integridad Referencial (VI)

1.4. 1.4. AsertosAsertos (I)(I)

•Un Aserto es un predicado que expresa una condición que se desea que la base de datos satisfaga siempre. Las integridades antes vistas son formas especiales de asertos.

•Cuando se crea un aserto el sistema comprueba su validez.

•Si el aserto es válido, sólo se permiten las modificaciones posteriores de la base de datos que no hagan que se viole el aserto.

1.4. 1.4. AsertosAsertos (II)(II)

create assertion restricción-suma check

(not exists (select * from sucursal

where (select sum(importe) from préstamo

where préstamo.nombre-sucursal = sucursal.nombre-sucursal) >=(select sum (importe) from cuenta

where préstamo.nombre-sucursal = sucursal.nombre-sucursal)))

La suma de todos los importes de los préstamos de cada sucursal debe ser menor que la suma de todos los saldos de las cuentas de esa sucursal.

1.5. 1.5. DisparadoresDisparadores (Triggers) (I)(Triggers) (I)

Un Disparador es una orden que el sistema ejecuta de manera automática como efecto secundario de la modificación de la base de datos.

Incluidos en el estándar SQL 1999, son mecanismos útiles ejecutados por el SGBD para alertar a los usuarios o para realizar de manera automática ciertas tareas cuando se cumplen determinadas condiciones.

1.5. 1.5. DisparadoresDisparadores ((Triggers)(IITriggers)(II))

Una base de datos que tiene un conjunto de disparadores asociados se conoce como una Base de Datos Activa.

Para diseñar un mecanismo disparador hay que cumplir dos requisitos:

•Especificar las condiciones en las que se va a ejecutar el disparador. Esto es, el evento que causa la comprobación del disparador y una condición que se debe cumplir para ejecutar el disparador.

•Especificar las acciones que se van a realizar cuando se ejecute el disparador.

1.5. 1.5. DisparadoresDisparadores (Triggers) (III)(Triggers) (III)

La descripción de un disparador comprende de tres partes:

•Evento: Es el cambio hecho sobre la base de datos que activa al disparador.

•Condición: Es la solicitud o prueba que se ejecuta cuando se activa el disparador.

•Acción: Es un procedimiento que es ejecutado cuando el disparador es activado y la condición es verdadera.

1.5. 1.5. DisparadoresDisparadores (Triggers) (IV)(Triggers) (IV)

CREATE TRIGGER <trigger name> <BEFORE|AFTER> <INSERT|DELETE|UPDATE>

ON <relation name> FOR EACH <ROW|STATEMENT>

EXECUTE PROCEDURE <procedure name> (<function args>);

CREATE TRIGGER <trigger name> <BEFORE|AFTER> <INSERT|DELETE|UPDATE>

ON <relation name> FOR EACH <ROW|STATEMENT>

EXECUTE PROCEDURE <procedure name> (<function args>);

•Sintaxis para la creación de triggers

1.5. 1.5. DisparadoresDisparadores (Triggers) (V)(Triggers) (V)

CREATE TRIGGER iniciar_conteoBEFORE INSERT ON Estudiantes DECLARE

cont INTEGER;BEGIN

cont := 0;END

CREATE TRIGGER iniciar_conteoBEFORE INSERT ON Estudiantes DECLARE

cont INTEGER;BEGIN

cont := 0;END

CREATE TRIGGER contar AFTER INSERT ON Estudiantes WHEN (new.edad < 18)FOR EACH ROWBEGIN

cont := cont + 1;END

CREATE TRIGGER contar AFTER INSERT ON Estudiantes WHEN (new.edad < 18)FOR EACH ROWBEGIN

cont := cont + 1;END

1.5. 1.5. DisparadoresDisparadores (Triggers) (VI)(Triggers) (VI)

•Los disparadores se crean con la finalidad de mantener la integridad del sistema.

•La activación de un disparador puede activar otro disparador y crear así una cadena de activación de disparadores. Si un disparador reactiva un disparador anterior se les denomina disparadores recursivos.

•Los disparadores pueden tener múltiples usos como la creación de historiales de uso de la base de datos y dotar de funciones adicionales al SGBD donde se ejecutan.

2.1. 2.1. Tipos de Seguridad (I)Tipos de Seguridad (I)

La seguridad de las bases de datos es una área amplia que abarca varios temas, entre ellos se encuentran los siguientes:

•Cuestiones éticas y legales relativas al derecho de tener acceso a cierta información

•Cuestiones de política a nivel gubernamental, institucional o corporativo, relacionadas con el tipo de información que no debe estar disponible para el publico

•Cuestiones relacionadas con el sistema, como los niveles del sistema en que deben manejarse diversas funciones de seguridad

•Las necesidades en las organizaciones de identificar múltiples niveles de seguridad y clasificar los datos y los usuarios según estos niveles

2.1. 2.1. Tipos de Seguridad (II)Tipos de Seguridad (II)

En la actualidad se acostumbra hablar de dos tipos de mecanismos de seguridad en las bases de datos:

•Los mecanismos de seguridad discrecionales se usan para otorgar privilegios a los usuarios, incluida la capacidad de tener acceso a archivos, registros o campos de datos específicos en un determinado modo.

•Los mecanismos de seguridad obligatorios sirven para imponer igualdad de múltiples niveles clasificando los datos y los usuarios en varias clases (o niveles) de seguridad e implementando después la política de seguridad apropiada de la organización.

2.1. 2.1. Tipos de Seguridad (III)Tipos de Seguridad (III)

Un problema de seguridad común a todos los sistemas de computo es el de evitar que personas no autorizadas tengan acceso al sistema, ya sea para obtener información o para efectuar cambios mal intencionados en una porción de la base de datos. El mecanismo de seguridad de un SGBD debe incluir formas de restringir el acceso al sistema como un todo. Esta función se denomina control de acceso y se pone en practicas creando cuentas de usuarios y contraseñas para que es SGBD controle el proceso de entrada al sistema.

2.1. 2.1. Tipos de Seguridad (IV)Tipos de Seguridad (IV)

Otra técnica de seguridad es el cifrado de datos, que sirven para proteger datos confidenciales que se transmiten por satélite o por algún otro tipo de red de comunicaciones. El cifrado puede proveer protección adicional a secciones confidenciales de una base de datos.

Los datos se codifican mediante algún algoritmo de codificación. Un usuario no autorizado que tenga acceso a los datos codificados tendrá problemas para descifrarlos, pero un usuario autorizado contara con algoritmos (o claves) de codificación o descifrado para descifrarlos.

2.2. 2.2. Seguridad de la base de Seguridad de la base de datos y el DBAdatos y el DBAEl administrador de bases de datos (DBA) es la autoridad central que controla un sistema de este tipo. El DBA tiene una cuenta privilegiada en el SGBD, a veces denominada cuenta del sistema, que confiere capacidades extraordinarias no disponibles para cuentas y usuarios ordinarios de la base de datos. El DBA ejecuta los siguientes tipos de acciones:

•Creación de cuentas

•Concesión de privilegios

•Revocación de privilegios

•Asignación de niveles de seguridad

El DBA es el responsable de la seguridad global del sistema de base de datos.

2.3. 2.3. Violaciones de Seguridad (I)Violaciones de Seguridad (I)

Entre las formas de acceso malintencionado se encuentran:•La lectura no autorizada de los datos (robo de información)•La modificación no autorizada de los datos•La destrucción no autorizada de los datos

La seguridad de las bases de datos se refiere a la protección frente a accesos malintencionados. Para proteger la base de datos hay que adoptar medidas de seguridad en varios niveles:

• Sistema de bases de datos• Sistema operativo• Red• Físico• Humano

2.3. 2.3. Violaciones de Seguridad (II)Violaciones de Seguridad (II)

Debe conservarse la seguridad en todos estos niveles si

hay que asegurar la seguridad de la base de datos. La

debilidad de los niveles bajos de seguridad (físico o

humano) permite burlar las medidas de seguridad estrictas

de niveles superiores (base de datos).

La seguridad dentro del sistema operativo se aplica en

varios niveles, que van desde las contraseñas para el

acceso al sistema hasta el aislamiento de los procesos

concurrentes que se ejecutan en el sistema. El sistema de

archivos también proporciona algún nivel de protección.

2.4. 2.4. Autorizaciones y Vistas (I)Autorizaciones y Vistas (I)Los usuarios pueden tener varios tipos de autorización para diferentes partes de la base de datos.

Entre ellas están las siguientes:

• La autorización de lectura permite la lectura delos datos, pero no su modificación.• La autorización de inserción permite la inserciónde datos nuevos, pero no la modificación delos existentes.• La autorización de actualización permite lamodificación de los datos, pero no su borrado.• La autorización de borrado permite el borradode los datos.

2.4. 2.4. Autorizaciones y Vistas (II)Autorizaciones y Vistas (II)

Además de estas formas de autorización para el acceso a los datos, los usuarios pueden recibir autorización para modificar el esquema de la base de datos:

• La autorización de índices permite la creacióny borrado de índices.• La autorización de recursos permite la creaciónde relaciones nuevas.• La autorización de alteración permite el añadidoo el borrado de atributos de las relaciones.• La autorización de eliminación permite el borradode relaciones.

2.4. 2.4. Autorizaciones y Vistas (III)Autorizaciones y Vistas (III)

Recordando el concepto de Vistas, decimos que:

•Una vista es una relación virtual.

•Una vista se puede construir realizando operaciones como las delálgebra relacional a partir de las relaciones base de la base de datos. Las relaciones base son aquellas que forman parte directade la base de datos, las que se encuentran almacenadas físicamente.

•Estas proporcionan un poderoso mecanismo de seguridad, ocultando partes de la base de datos a ciertos usuarios. El usuario no sabrá que existen aquellos atributos que se han omitido al definir una vista.

2.4. 2.4. Autorizaciones y Vistas (IV)Autorizaciones y Vistas (IV)

En Postgre SQL:

CREATE TABLE estudiante (nombre varchar(20), ci int8PRIMARY KEY, edad int2);

172019

173456781234565723456923

MaríaJuanLuis

edadcinombre

2.4. 2.4. Autorizaciones y Vistas (V)Autorizaciones y Vistas (V)

CREATE VIEW mayoresedad AS SELECT * FROM estudianteWHERE edad>18;

2019

1234565723456923

JuanLuis

edadcinombre

Esto permite que cuando se consulte utilizando la vista mayores de edad, sólo se impriman aquellas tuplas donde la edad es mayor a 18 en el caso de la relación Estudiantes…

Estas proporcionan un poderoso mecanismo de seguridad, ocultando partes de la base de datos a ciertos usuarios. El usuario no sabrá que existen aquellos atributos que se han omitido al definir una vista.

2.4. 2.4. Autorizaciones y Vistas (VI)Autorizaciones y Vistas (VI)

•La creación de vistas no necesita la autorización de recursos.

•El usuario que crea una vista no recibe necesariamente todos los privilegios sobre la misma. Ese usuario sólo recibe los privilegios que no proporcionan autorizaciones adicionales respecto de las que ya posee.

•Si un usuario crea una vista sobre la que no se puede conceder ninguna autorización, se deniega la solicitud de creación de la vista.

2.5. 2.5. Cifrado y Autentificación (I)Cifrado y Autentificación (I)

•Una técnica de seguridad es el cifrado de datos que sirve

para proteger datos confidenciales que se transmiten por

satélite o algún tipo de red de comunicaciones. Asimismo el

cifrado puede proveer protección adicional a secciones

confidenciales de una base de datos.

•Los datos se codifican mediante algún algoritmo de

codificación. Un usuario no autorizado tendrá problemas

para descifrar los datos codificados, pero un usuario

autorizado contará con algoritmos para descifrarlos.

2.5. 2.5. Cifrado y Autentificación (II)Cifrado y Autentificación (II)

Ejemplo que nos permitirá saber cómo utilizar las nuevas funciones de cifrado y descifrado de DB2 en este caso hipotético para proporcionar una capa adicional de seguridad:

SET ENCRYPTION PASSWORD = 'SECRETO'

INSERT INTO cliente VALUES('JOSE', ENCRYPT('1111222233334444'))

SET ENCRYPTION PASSWORD = 'SECRETO'

SELECT nombre, DECRYPT_CHAR(num_tarj)

FROM cliente

•En el código anterior, la sentencia Set Encryption Password

proporciona a DB2 la clave que se utilizará para cifrar (y

descifrar) los datos.

•En la sentencia siguiente se muestra cómo se utiliza la función

de cifrado de DB2 para codificar el número de la tarjeta de

crédito antes de grabarlo en la tabla de DB2. La última

sentencia muestra los pasos necesarios para ver el valor

original del número de la tarjeta de crédito,

‘1111222233334444’.

•En primer lugar, la clave de cifrado debe ser la misma que la

que se utilizó para cifrar el número. Después, debe utilizarse

una de las funciones de descifrado de DB2 para convertir el

valor binario cifrado en el valor original de tipo carácter.

2.5. 2.5. Cifrado y Autentificación (III)Cifrado y Autentificación (III)

•No hay palabras clave de SQL o DDS que indiquen a DB2 UDB que cifre o descifre automáticamente los datos. Hay que realizar cambios en la aplicación.

•La razón es que el cifrado y descifrado automático no ofrece una capa adicional de seguridad. Si DB2 descifra automáticamente el número de la tarjeta de crédito para todos los usuarios que lean la tabla de clientes, entonces dicho número sería visible para los mismos usuarios que antes de cifrarlo.

•Únicamente podrá sacar partido de la seguridad que ofrece el cifrado si cambia las aplicaciones y las interfaces para que descifren de forma selectiva los datos para un subconjunto de usuarios autorizados.

2.5. 2.5. Cifrado y Autentificación (IV)Cifrado y Autentificación (IV)

2.6. 2.6. Control de Acceso Discrecional (I)Control de Acceso Discrecional (I)

Obviamente, una BD para una empresa contiene grandes cantidades de información y usualmente tiene varios grupos de usuarios, la mayoría de estos usuarios necesitan acceder sólo a una pequeña parte de los datos.

Por ello, un DBMS tiene dos enfoques principales para esto:

1.- Control de acceso discrecional: Previene de accesos no autorizados a la base de datos y está basado en los derechos de acceso o privilegios y mecanismos para darle al usuario tales privilegios.

2.6. 2.6. Control de Acceso Discrecional (II)Control de Acceso Discrecional (II)

Acceso discrecional es un modo de restringir el acceso a la información basado en privilegios. Dos niveles de asignación de privilegios:

•Nivel de cuenta: En este nivel el administrador especifica los privilegios particulares que tiene cada usuario, independiente de las tablas de la BD (CREATE TABLE, CREATE VIEW, ALTER, MODIFY, SELECT).

•Nivel de relación: En este nivel se controlan los privilegios para tener acceso cada relación o vista individual. Cada tabla de BD tiene asignada una cuenta propietario, que tiene todos los privilegios sobre esa tabla y se encarga de otorgarlos al resto de cuentas.

En SQL:

•Privilegio SELECT para R confiere a la cuenta el privilegio de

consultar la BD para obtener datos de R.

•Privilegio MODIFY para R confiere a la cuenta el privilegio de

modificar las tuplas de la tabla R.

•Privilegio REFERENCES para R confiere a la cuenta el

privilegio de hacer referencia a la tabla R por media de una

clave ajena.

•En SQL las intrucciones para asignar privilegios se denomina

GRANT y las que los elimina REVOKE.

2.6. 2.6. Control de Acceso Discrecional (III)Control de Acceso Discrecional (III)

2.7. 2.7. Control de Acceso Obligatorio (I)Control de Acceso Obligatorio (I)

Entre las obligaciones del DBA está otorgar privilegios a los usuarios y clasificar los usuarios y los datos de acuerdo con lapolítica de la organización. Las órdenes privilegiadas del DBA incluyen los siguientes tipos de acciones:

1. Creación de cuentas

2. Concesión de privilegios.

3. Revocación de privilegios.

4. Asignación de niveles de seguridad.

La acción 1 de la lista sirve para controlar el acceso al SGBD en general, la 2 y la 3 para controlar las autorizaciones discrecionales y la 4 controla la autorización obligatoria

•Los mecanismos de seguridad obligatorios sirven para

imponer seguridad de múltiples niveles clasificando los

datos y los usuarios en varias clases de seguridad e

implementando después la política de seguridad apropiada

de la organización.

•Consiste en la clasificación de tanto los sujetos como los

objetos en el sistema en ‘clases de acceso’ que

determinan sus características de confidencialidad.

2.7. 2.7. Control de Acceso Obligatorio (II)Control de Acceso Obligatorio (II)

2.7. 2.7. Control de Acceso Obligatorio (III)Control de Acceso Obligatorio (III)

•Una ‘clase de acceso’ es un elemento de un conjunto de ‘clases’ parcialmente ordenadas. Las clases de acceso se definen como un conjunto formado por dos componentes, un ‘nivel de seguridad’ y un ‘conjunto de categorías’.

•Cada ‘nivel de seguridad’ es un elemento de un conjunto jerárquicamente ordenado como ‘alto secreto’ (TS), ‘secreto’(S), ‘confidencial’ (C) y ‘sin clasificar’ (U), donde TS > S > C > U.

•El conjunto de categorías es un subconjunto de un conjunto desordenado, donde los elementos pueden reflejar áreas funcionales o diferentes competencias como por ejemplo ‘finanzas’, ‘administración’, ‘ventas’ y ‘compras’ para sistemas comerciales.

2.7. 2.7. Control de Acceso Obligatorio (IV)Control de Acceso Obligatorio (IV)

Sujetos de autorización

•USUARIOS

•GRUPOS DE USUARIOS

•ROLES

•PROCESOS

Privilegios de autorización

•LEER, ESCRIBIR, EJECUTAR

•SELECCIONAR, INSERTAR, ACTUALIZAR, REFERENCIAR, INDEXAR

2.7. 2.7. Control de Acceso Obligatorio (V)Control de Acceso Obligatorio (V)

Las políticas de control de acceso se pueden clasificar en dos grupos:• Cerradas: Solamente los accesos autorizadosexplícitamente son permitidos

Abiertas: Los accesos que no son explícitamente prohibidos son permitidos.

2.7. 2.7. Control de Acceso Obligatorio (VI)Control de Acceso Obligatorio (VI)

•http://www.virtual.unal.edu.co/cursos/sedes/manizales/4060029/lecciones/cap7-1.html

•http://www.aulaclic.es/sql/b_8_1_1.htm

•http://es.wikipedia.org/wiki/Integridad_referencial

•http://es.tldp.org/Tutoriales/NOTAS-CURSO-BBDD/notas-curso-BD/node44.html

•Sistemas de Bases de Datos Conceptos Fundamentales. Segunda Edición. Elmasri; Navathe. Pearson Education. México 2000.

ReferenciasReferencias ConsultadasConsultadas

Javier EscobarJavier Escobar