Lectura 10 - Integridad Y Seguridad

miércoles, 21 de enero de 2009

INTRODUCCIÓN

En el presente resumen se muestra como las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a las bases de datos por los usuarios autorizados no provoquen la pérdida de la consistencia de los datos, Esto es, que las restricciones de integridad protegen a la base de datos contra los daños accidentales.

También se muestra que además de la protección contra la introducción accidental de inconsistencia, puede ser necesario proteger los datos almacenados en la base de datos frente a accesos no autorizados y destrucción o alteración malintencionada.


INTEGRIDAD Y SEGURIDAD

Restricciones de los dominios.

Anteriormente hemos visto que hay que asociar a cada atributo un dominio de valores posible. Las restricciones de los dominios son la forma más simple de restricción de integridad, ya que el sistema las verifica fácilmente siempre que se introduce en la base de datos un nuevo elemento de datos.

La definición adecuada de las restricciones de los dominios aparte de permitir la verificación de los datos introducidos a la base de datos, permite también examinar las consultas para asegurarse de que tengan sentido las comparaciones que hagan. El principio subyacente a los dominios de los tributos es parecido al de los tipos de las variables en los lenguajes de programación.

En la cláusula CHECK de SQL, por ejemplo, se permite al diseñador del esquema especificar un predicado que debe satisfacer cualquier valor asignado a una variable cuyo tipo sea el dominio.

Por ejemplo, para asegurar que un dominio de sueldo por horas solo permita valores mayores que u n valor especificado debe usarse el siguiente código:

Create domain sueldo-por-hora numeric (5,2)
Constraint comprobación-valor-sueldo
Check (value ≥ 4,00)

Las condiciones CHECK complejas pueden ser útiles cuando se desea asegurar la integridad de los datos, pero se deben usar con cuidado, dada que pueden ser costosas de comprobar.

Integridad referencial

Se conoce así al aseguramiento de que un valor que aparece en una relación para un conjunto de atributos determinado aparezca también en otra relación para un cierto conjunto de atributos.

Las restricciones de integridad referencial aparecen con frecuencia. Si se obtiene el esquema de la base de datos relacional creando tablas a partir de los diagramas entidad relación, cada relación que proceda de un conjunto de relaciones tendrá restricciones de integridad referencial (Llaves externas).
En SQL, las claves primarias pueden especificarse como parte de la instrucción create table, usando la cláusula foreign key. De manera predeterminada, una clave externa referencia los atributos que forman la clave primaria de la tabla referenciada. Por ejemplo:

Create table cliente
(nombre-cliente char(20),
Calle-cliente char(30),
Ciudad-cliente char(30),
Primary key (nombre-cliente))

Otra fuente de restricciones de integridad referencial son los conjuntos de entidades débiles. La modificación de la base de datos puede ocasionar violaciones de la integridad referencial también.

Cabe mencionar que la cláusula antes mencionada Foreign key puede especificar si una acción de borrado o de actualización de la relación a la que hace referencia viola la restricción, en lugar de rechazar la acción, hay que adoptar medidas para modificar la tupla de la relación que hace la referencia con objeto de restaurar la restricción.

Asertos

Un aserto es un predicado que expresa una condición que se desea que la base de datos satisfaga siempre. Las restricciones de dominio y las de integridad referencial son formas especiales de los asertos que se pueden verificar con facilidad y se aplican a una gran variedad de aflicciones de bases de datos.

En SQL los asertos adoptan la siguiente forma:

Create assertion check
Cuando se crea un aserto el sistema comprueba su validez. Si el aserto es valido, solo se permiten las modificaciones posteriores de la base de datos que no hagan que se viole el aserto. Asertos complejos deben usarse con cautela ya que pueden introducir una sobrecarga importante, lo que lleva a soslayar el soporte para los asertos generales.

Disparadores

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. Para llevarlo a cabo deben seguirse los siguientes pasos:

1.- Especificar las condiciones en las que se va a ejecutar el disparador (mediante un evento y una condición).
2.- Especificar las acciones que realizara cuando se ejecute el disparador.

Las bases de datos almacenan a estos disparadores como datos normales, por lo que son persistentes y accesibles para todas las operaciones de la base de datos. Al almacenar un disparador es el SMBD el responsable de ejecutarlo cada vez que ocurra el evento especificado y se satisfaga la condición correspondiente.

Los disparadores son mecanismos útiles para alertar a los usuarios o para realizar de manera automática ciertas tareas cuando se cumplen determinadas condiciones.

En SQL se usan ampliamente los disparadores, por ejemplo, supóngase que el valor del campo de numero telefónico de una tupla insertada esta vacío, que indica la ausencia de un numero de teléfono. Se puede definir un disparador que reemplace el valor por el valor Null. Se usa la instrucción Set para realizar estas modificaciones.

Create trigger poner-nulo before update on r
Referencing new row as nfila
For each row
When nfila.numero-teléfono=’’
Set nfila.numero-teléfono=null

Muchos sistemas de base de datos proporcionan implementaciones no estándar de disparadores, o implementan solo algunas de las características de los disparadores. . Por ejemplo, muchos de los sistemas de bases de datos no incrementan la cláusula befote, y usan la palabra clave on en lugar de alter. Puede que no implementen la cláusula referencing. En su lugar, pueden especificar tablas de transición usando las palabras claves insert o deleted.

Seguridad y autorización.

Los datos guardados en la base de datos deben estar protegidos contra los accesos no autorizados, de la destrucción o alteración malintencionadas además de la introducción accidental de inconsistencias que evitan las restricciones de integridad.

Violaciones de la seguridad.

Algunas formas de acceso mal intencionado son:

 Lectura no autorizada de los datos (Robo de información).
 Modificación no autorizada de los datos.
 Destrucción no autorizada de los datos.

Para proteger de forma adecuada una base de datos hay que adoptar medidas de seguridad en varios niveles:

Sistema de base de datos. Algunos usuarios están autorizados para el acceso a una parte limitada de información, por lo tanto es responsabilidad del sistema de base de datos asegurarse de que no se violen estas restricciones de autorización.
Sistema operativo. La debilidad de la seguridad del sistema operativo puede servir como medio para el acceso no autorizado a la base de datos.
Red. La seguridad en el nivel del software de la red es tan importante como la seguridad física, tanto en Internet como en las redes privadas de la empresa.
Físico. Los sitios que contienen los sistemas informáticos deben estar protegidos físicamente contra la entrada de intrusos.
Humano. Los usuarios deben ser autorizados cuidadosamente para reducir la posibilidad de que alguno de ellos dé acceso a intrusos a cambio de sobornos u otros favores.
Autorizaciones.

Los usuarios pueden tener varios tipos de autorización para diferentes partes de la base de datos, por ejemplo:

De lectura: Permite la lectura de datos pero no su modificación.
De inserción: Permite la inserción de datos nuevos, pero no la modificación de los ya existentes.
De actualización: Permite la modificación de los datos pero no su borrado.
De borrado: Permite el borrado de los datos.

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:

De índices: Permite la creación y borrado de índices.
De recursos: Permite la creación de nuevas relaciones.
De alteración: Permite el añadido o el borrado de atributos de las relaciones.
De eliminación: Permite el borrado de relaciones.

Es importante destacar que para permitir al administrador de la base de datos que regule el uso de los recursos del sistema es necesario tratar la creación de índices como un privilegio.

La forma superior de autoridad es la concedida al administrador de la base de datos, pues es el precisamente el que puede autorizar usuarios nuevos, reestructurar la base de datos, etc. Esta forma de autoridad es análoga a la proporcionada al superusuario u operador del sistema operativo.

Autorizaciones y vistas.

Como ya hemos visto, las vistas son un medio de proporcionar a un usuario un modelo personalizado de la base de datos. Estas pueden ocultar los datos que no necesitan ver los usuarios. La capacidad de las vistas para ocultar datos mejora la seguridad. Se puede utilizar una combinación de seguridad en el nivel relacional y en el nivel de las vistas para limitar el acceso de un usuario precisamente a los datos que necesita.

Por ejemplo considérese que un empleado que necesita saber los nombres de todos los clientes que tienen un prestamo en cada sucursal. Este empleado no esta autorizado para ver la información concerniente a los prestamo concretos que tiene cada cliente. Por lo tanto se le debe negar el acceso directo a la relacioon, prestamo. Pero si tendra acceso a la informcion necesaria, esto es a la vista cliente-prestamo que consiste solo en los nombres de los clientes y las sucursales en los que tienen un prestamo. Esta vista se define de la siguiente manera en SQL:

Create view cliente-prestamo as
(select nombre-sucursal, nombre-cliente
from prestatario, prestamo
where prestatario.numero-prestamo
= prestamo.numero-prestamo)

Concesión de privilegios.

El usuario al que se le ha concedido alguna forma de autorización, puede ser autorizado a transmitir esa autorización a otros usuarios, pero hay que tener cuidado con el modo en que se puede transmitir esa autoridad para asegurar que esta puede ser retirada en el futuro.

El lenguaje SQL tiene los privilegios delete, insert, select y update. Además incluye órdenes para conceder y retirar privilegios. La instrucción grant se utiliza para conferir autorizaciones. La forma básica de muestra a continuación:
Grant on to

La lista de privilegios permite la concesión de varios privilegios con una sola orden.

Por ejemplo en la siguiente instrucción grant se concede a los usuarios U1, U2 y U3 la autorización update sobre el atributo importe de la relación préstamo:

Grant update (importe) on préstamo to U1,U2,U3

Papeles

En la base de datos se crean papeles, estos facilitan la asignación de un conjunto de privilegios a un usuario de acuerdo al papel que el usuario desempeña en la organización.

En SQL se pueden crar de la siguiente forma:

Create role cajero

Se pueden conceder privilegios a los papeles al igual que a los usuarios, como se muestra:
Grant select on cuenta
to cajero

Los papeles se pueden asignar a los usuarios, así como a otros papeles, como muestran estas instrucciones.

Grant cajero to Juan
Create role gestor
Grant cajero to gestor
Grant gestor to maria

Los privilegios de un usuario o papel consisten en:

 Todos los privilegios concedidos directamente al usuario o papel.
 Todos los privilegios concedidos a papeles que se hayan concedido al usuario o papel.

Un usuario o papel al que se le concede un privilegio no está autorizado de manera predeterminada a concedérselo a otros usuarios o papeles. Si se desea conceder un privilegio a un usuario y permitirle que lo transmita a otros usuarios hay que añadir la cláusula with grant option a la orden grant correspondiente. Por ejemplo, si se desea conceder a U1 el privilegio select sobre sucursal y que pueda transmitirlo a otros, hay que escribir:

grant select on sucursal to U1 with grant option

Para retirar una autorización se utiliza la instrucción revoke. Adopta una forma casi idéntica a la de grant:

revoke on
from [restrict cascade]

Cifrado y autenticación

Puede que las diferentes provisiones para la autorización que haga un sistema de bases de datos no proporcionen suficiente protección para los datos extremadamente delicados. En tales casos se pueden cifrar los datos. Los datos cifrados no se pueden leer a menos que el lector sepa la manera de descifrarlos (descodificarlos).
El cifrado también forma la base de los buenos esquemas para la autenticación de usuarios en una base de datos.

Técnicas de cifrado

Puede que las técnicas de cifrado sencillas no proporcionen la seguridad adecuada, dado que puede ser sencillo para un usuario no autorizado romper el código. Como ejemplo de una técnica de cifrado débil considérese la sustitución de cada carácter por el siguiente en el alfabeto. Así, Navacerrada se transforma en: Ñbwbdfssbeb.

Una buena técnica de cifrado tiene las propiedades siguientes:

 Es relativamente sencillo para los usuarios autorizados cifrar y descifrar los datos.
 El esquema de cifrado no depende de lo poco conocido que sea el algoritmo, sino más bien de un parámetro del algoritmo denominado clave de cifrado.
 Es extremadamente difícil para un intruso determinar la clave de cifrado.

Un enfoque, la norma de cifrado de datos (DES) realiza una sustitución de caracteres y una reordenación de los mismos en función de una clave de cifrado. Para que este esquema funcione los usuarios autorizados deben proveerse de la clave de cifrado mediante un mecanismo seguro.

El cifrado de clave pública es un esquema alternativo que evita parte de los problemas que se afrontan con DES. Se basa en dos claves; una clave pública y una clave privada.

Autenticación

La autenticación se refiere a la tarea de verificar la identidad de una persona o software que se conecte a una base de datos. La forma más simple consiste en una contraseña secreta que se debe presentar cuando se abra una conexión a la base de datos.

La autenticación basada en palabras clave se usa ampliamente por los sistemas operativos y bases de datos. Sin embargo, el uso de contraseñas tiene algunos inconvenientes, especialmente en una red.

Un esquema más seguro es el sistema de desafíorespuesta. El sistema de bases de datos envía una cadena de desafío al usuario. El usuario cifra la cadena de desafío usando una contraseña secreta como clave de cifrado y devuelve el resultado. El sistema de bases de datos puede verificar la autenticidad del usuario descifrando la cadena con la mima contraseña secreta, y comparando el resultado con la cadena de desafío original. Este esquema asegura que las contraseñas no circulen por la red.

Otra aplicación interesante de la criptografía está en las firmas digitales para verificar la autenticidad de los datos; las firmas digitales desempeñan el papel electrónico
de las firmas físicas en los documentos. La clave privada se usa para firmar los datos y los datos firmados se pueden hacer públicos. Cualquiera podría verificarlos con la clave pública, pero nadie podría haber generado los datos codificados sin tener la clave privada. Por tanto, se puede comprobar que los datos fueron creados realmente por la persona que afirma haberlos creado.

Además, las firmas digitales también sirven para asegurar el rechazo. Es decir, en el caso de que una persona que creó los datos afirmase más tarde que no lo hizo (el equivalente electrónico de afirmar que no se ha firmado un talón) se puede probar que esa persona ha creado los datos (a menos que haya cedido su clave privada a otros).

Conclusión

A forma de conclusión se puede decir que la información del autor es clara y concisa en cuanto a mostrarnos la importancia de la seguridad e integridad en los datos almacenados en las bases de datos, al mismo tiempo que nos muestra la forma de aplicar esta información a través de ejemplos.

Bibliografía

Fundamentos de Bases de Datos. Cuarta Edición
Silberschatz; Korth; Sudarshan.
McGraw Hill. 2002
Páginas 141-159.

0 Comments: