UNIVERSIDAD VERACRUZANA

       BASE DE DATOS



 DR. CARLOS TORRES GASTELÙ



         EQUIPO 2
Las restricciones de integridad proporcionan un medio
                      de asegurar que las modificaciones hechas a la...
De integridad para el modelo E_R.               Estas
restricciones eran de los tipos siguientes:

     Declaración de cla...
RESTRICCIONES DE LOS DOMINIOS
Se ha visto que hay que asociar a cada atributo un dominio de valores
posibles.

La declarac...
Los dominio no solo permite verificar los valores introducidos en la base de datos, sino
 también examinar las consultas p...
La cláusula check de SQL permite restringir los dominios de maneras
poderosas que no permiten la mayor parte de los sistem...
La orden constraint comprobación-valor-sueldo es opcional y se utiliza
para dar a la restricción el nombre de comprobación...
Las condiciones check complejas pueden ser útiles cuando se debe
asegurar la integridad de los datos, pero se debe usar co...
Conceptos básicos
Considere un par de relaciones r (R) y s (S) Y LA REUNIÓN NATURAL R |X|s.
puede haber una tupla t, de r ...
Integridad referencial en el modelo
E-R
Las restricciones de la integridad referencial con frecuencia. Si se obtiene el
es...
Modificaciones de las bases de
datos
La modificación de la base de dato puede ocasionar violaciones de la
integridad refer...
Borrar. Si se borra una tupla t1, de r1, el sistema debe calcular el conjunto de
tuplas de r2 que hacen referencia a r1:
S...
Integridad referencial en SQL
 Las claves primarias pueden especificarse como parte de la
 instrucción create table de SQL...
create table cliente
{nombre-cliente char(20), calle-cliente       char(30),
ciudad-cliente       chart 30),
primary key {...
Cuando se viola una restricción de integridad refe-rencial, el procedimiento normal es
rechazar la acción que provocó la v...
En SQL la semántica de las claves se complica por el hecho de que SQL permite valores
nulos. Los atributos de las claves e...
Para manejar estas situaciones las restricciones de integridad se
    comprueban al final de
la transacción en lugar de en...
Necesidad de los disparadores
Los disparadores son mecanismos útiles para alertar a los usuarios o para realizar de
manera...
Disparadores en SQL
Los sistemas de bases de datos SQL usan ampliamente los disparadores,
     aunque
antes de SQL: 1999 n...
Esta definición de disparador especifica que el
   disparador se inicia después (after) de cualquier
   actualización de l...
Se usaban ampliamente los disparadores para las
replicas de las base de datos; usaban disparadores,
bajo la inserción, bor...
Ejemplo de un disparador para hacer
un nuevo pedido de un producto
•   create trigger, nuevopedido after update of cantida...
Ejemplo de disparador en la sintaxis
de SQL Server de Microsoft
•   define trigger descubiendo on cuenta
•   for update
• ...
•   Los disparadores se deberían escribir con sumo
    cuidado, dado que un error de un disparador
    detectado e tiempo ...
•   Los datos guardados en la base de datos
    deben estar protegidos contra los accesos
    no autorizados, de la introd...
Violaciones de la seguridad
Entre las formas de acceso
  malintencionado se encuentran:
 La lectura no autorizada de los
...
Para proteger la base de datos hay que
adoptar medidas de seguridad en varios
niveles:
*Sistema operativo. Independienteme...
Autorizaciones para diferentes partes de la base de
datos

• La Autorización de Lectura permite la
  lectura de los datos,...
Autorización para modificar el
esquema de la base de datos
•   La Autorización de Índices permite la
    creación y borrad...
Vistas

•   Una vista puede ocultar los datos que un usuario no
    necesita ver. La capacidad de las vistas para ocultar
...
Esta vista se puede definir en
SQL de la manera siguiente:
 Create view cliente-préstamo as
 (select nombre-sucursal, no...
El concepto de papel

Considérese en un banco que tiene muchos
cajeros. Cada cajero debe tener los mismos tipos
de autoriz...
Un esquema mejor

Especifica las autorizaciones que deben tener
  los cajeros e identifica separadamente
  cuáles de los u...
Alternativas

Serían crear un identificador de usuario cajero y
   permitir que cada cajero se conectase a la base
   de d...
Trazas de auditoría
 Es un registro histórico de todos los cambios
 de la base de datos, junto con información
 sobre el u...
Privilegios en SQL

 Incluyen los privilegios delete, insert,
  select y update.
 El lenguaje de definición de datos de
...
 La lista de privilegios permite la concesión de varios
  privilegios con una sola orden.
 La siguiente instrucción gran...
   En SQL el privilegio insert también puede
    especifi-car una lista de atributos.

   El privilegio SQL references s...
Papeles

 Los papeles se pueden crear en SQL:1999
  como sigue
  create role cajero
 Se pueden conceder privilegios a lo...
Los privilegios de un usuario o
papel consisten en:

 Todos      los   privilegios  concedidos
  directamente al usuario ...
El privilegio de conceder privilegios

 Por ejemplo, si se desea conceder a U1 el
  privilegio select sobre sucur- sal y ...
 Por tanto, para retirar los privilegios que se
  han con- cedido con anterioridad hay que
  escribir
 revoke select on ...
Técnicas de cifrado

   Una buena técnica de cifrado tiene las propiedades
    siguientes:
   Es relativamente sencillo ...
   El cifrado de clave pública es un esquema
    alterna-tivo que evita parte de los problemas
    que se afrontan con DE...
Autenticación

   La autenticación se refiere a la tarea de
    verificar la identidad de una persona o
    software que ...
   La autenticación basada en palabras
    clave se usa ampliamente por los
    sistemas operativos y bases de datos. Sin...
   Los sistemas de clave pública se pueden usar
    para cifrar un sistema de desafío-respuesta. La
    BD cifra una cade...
   Otra aplicación interesante de la criptografía
    esta en las firmas digitales para verificar la
    autenticidad de ...
   Además, las firmas digitales también
    sirven para asegurar el rechazo. Es
    decir, en el caso de que una persona
...
Integridad Y Seguridad Completo
Próxima SlideShare
Cargando en…5
×

Integridad Y Seguridad Completo

4.824 visualizaciones

Publicado el

Publicado en: Tecnología, Empresariales
0 comentarios
0 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Sin descargas
Visualizaciones
Visualizaciones totales
4.824
En SlideShare
0
De insertados
0
Número de insertados
21
Acciones
Compartido
0
Descargas
159
Comentarios
0
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.

Integridad Y Seguridad Completo

  1. 1. UNIVERSIDAD VERACRUZANA BASE DE DATOS DR. CARLOS TORRES GASTELÙ EQUIPO 2
  2. 2. Las restricciones de integridad proporcionan un medio de asegurar que las modificaciones hechas a la base de datos para que los usuarios autorizados no provoquen la pérdida de la consistencia de los datos. las restricciones de la integridad protegen a la base de datos contra los daños accidentales.
  3. 3. De integridad para el modelo E_R. Estas restricciones eran de los tipos siguientes: Declaración de claves – la estipulación de que ciertos atributos pueden formar una clave para un conjunto de entidades determinado. Forma de la relación –de varios a varios, de uno a varios, de uno a uno. La restricción de la integridad puede ser un predicado arbitrario referente a la base de datos. Sin embargo, los predicados arbitrarios pueden resultar complicados de verificar.
  4. 4. RESTRICCIONES DE LOS DOMINIOS Se ha visto que hay que asociar a cada atributo un dominio de valores posibles. La declaración de que un atributo permanezca a un determinado dominio actúa como una restricción sobre los valores que pude tomar. Las restricciones de los dominios son las formas más simples de la restricción de integridad. El sistema las verifica fácilmente siempre que se introduce en las bases de datos un nuevo elemento de datos. Es posible que varios atributos tengan el mismo dominio por ejemplo: a los atributos nombre-cliente y nombre-empleado puede tener el mismo domicilio: el conjunto de los nombres de personas. Sin embargo, los dominios de saldo y de nombre de la sucursal deben ser, ciertamente, diferentes. Quizá resulte menos aviente si nombre-cliente y nombre- sucursal deben tener el mismo dominio
  5. 5. Los dominio no solo permite verificar los valores introducidos en la base de datos, sino también examinar las consultas para asegurarse de que tengan sentido las comparaciones que se haga. El principio subyacente a los dominios de los atributos es parecido a los tipos de las variables en los lenguajes de programación con tipos escritos permiten al compilador examinar el programa con mayor detalle. La clausula create domain se puede usar para definir nuevos dominios. Por ejemplo: Create domain Euros numeric (12,2) Create domain Dólares numeric (12,2) Los valores de un dominio pueden ser convertidos a otros dominios. Si el atributo A de la relación r es de tipo Euros, se puede convertir a Dólares escribiendo: Cast r.A as Dólares En una aplicación real se multiplicaría r.A por el factor de cambio antes de convertirlo a dólares. SQL también proporciona las cláusulas drop domain y alter domain para borrar o modificar dominios que se hayan declarado anteriormente.
  6. 6. La cláusula check de SQL permite restringir los dominios de maneras poderosas que no permiten la mayor parte de los sistemas de tipos de los lenguajes de programación. check permite al diseñador del esquema especificar un predicado que debe satisfacer cualquier valor asignado a una variable cuyo tipo sea el dominio. Una clausula check puede asegurar que un dominio de sueldo por hora sólo permita valores mayores que un valor especificado (como puede ser el sueldo mínimo), tal y como se muestra aquí: Create domain sueldo-por-hora numeric(5,2) Constraint comprobación-valor-suldo Check (value ≥ 4000) Check tambien puede utilizarse para restringir un dominio para que no contenga valores nulos. Create domain numero-cuenta char(10) Constraint comprobación-numero-cuenta-nulo Check (value no null)
  7. 7. La orden constraint comprobación-valor-sueldo es opcional y se utiliza para dar a la restricción el nombre de comprobación-valor-sueldo. El nombre se utiliza para indicar la restricción violada por una actualización. La cláusula check también puede utilizarse para restringir un dominio para que no contenga valores nulos, como se muestra aquí: Create domain nuemero-cuenta char(10) Constraint comprobación-numero-cuenta-nulo Check (value not null) Otro ejemplo: Create domain tipo-cuenta char(10) Constraint comprobación-tipo-cuenta Check (value in(‗Corriente‘,‘Ahorro‘)) La restricción anterior es realmente un ejemplo se una clase de restricciones denominada restricciones de integridad referencial.
  8. 8. Las condiciones check complejas pueden ser útiles cuando se debe asegurar la integridad de los datos, pero se debe usar con cuidado, dado que pueden ser costosas de comprobar. Cuando de desea asegurar que un valor que aparece en una relación, para un conjunto de atributos determinados aparezca también en otra relación para un cierto conjunto de atributos. Esta condición se denomina integridad referencial.
  9. 9. Conceptos básicos Considere un par de relaciones r (R) y s (S) Y LA REUNIÓN NATURAL R |X|s. puede haber una tupla t, de r que se reúna con ninguna tupla de s. es decir, no hay ninguna t, en s tal que t,[RПS]=tз[RПS]. Estas tuplas se denominan colgantes. Las tuplas colgantes pueden ser aceptables en función del conjunto de entidades o de relaciones que se esté modelando. Algunos casos de tuplas colgantes pueden resultar convenientes. Supóngase que hay una tupla t₂ de la relación sucursal con t₂ [nombre-sucursal]= <<Gijón>> pero que no hay ninguna tupla de relación cuenta para la sucursal de Gijón. Este es el caso hay una sucursal que no tiene ninguna cuenta. Aunque esta situación cuenta para la sucursal o cuando esta a punto de cerrar. La distinción entre estos dos ejemplos se basa en dos hechos: El atributo nombre-sucursal de Esquema-cuenta es una clave externa que hace referencia a la clave primaria de Esquema –sucursal. El atributo nombre-sucursal de Esquema-sucursal no es una clave externa.
  10. 10. Integridad referencial en el modelo E-R Las restricciones de la integridad referencial con frecuencia. Si se obtiene el esquema de la base de datos relacional creando tablas a partir de los diagramas E-R, cada relación que proceda de un conjunto de relaciones tendrá restricciones de integridad referencial. En la figura 6.1 se muestra un conjunto n-ario de las relaciones R, que relaciona los conjuntos de entidades E₁>, E₂,……,En. K¡
  11. 11. Modificaciones de las bases de datos La modificación de la base de dato puede ocasionar violaciones de la integridad referencial. A continuación se describe la comprobación que debe hacerse para cada tipo de modificación de la base de datos para preservar la siguiente restricción de integridad referencial: Insertar. Si es insertar una tupla t₂ en r₂, el sistema debe asegurar que hay una tupla t₁ de r₁, tal que t₁ [K] =t₂ [α]. Es decir ,
  12. 12. Borrar. Si se borra una tupla t1, de r1, el sistema debe calcular el conjunto de tuplas de r2 que hacen referencia a r1: Si este conjunto no es el conjunto vacio, o bien se rechaza la orden borrar como error, o bien se deben borrar las tuplas que hacen referencia a t1. La ulti-ma solución puede llevar a borrados en cascada, dado que las tuplas pueden hacer referencia a tuplas que hagan referencia a t1 Actualizar. Hay que considerar dos casos: fas actualizaciones de la relación que realiza la refe-rencia (r2) y las actualizaciones de la relación a la que se hace referencia (r1). Si se actualiza la tupla f 2 de la relación r2 y esta actualización modifica valores de la clave exter-na a, se realiza una comprobación parecida a la del caso de la inserción. Si t'2 denota el nuevo valor de la tupla i2, el sistema debe asegurar que t'2[<xjerMr,)
  13. 13. Integridad referencial en SQL Las claves primarias pueden especificarse como parte de la instrucción create table de SQL usando la clausu-la foreign key. Se ilustraran las declaraciones de clave externa usando la definición del LDD de SQL de parte de la base de datos bancaria, mostrada en la Figura 6.2. De manera predeterminada, una clave externa refe-rencia los atributos que forman la clave primaria de la tabla referenciada. SQL también soporta una versión de la clausula references, donde se puede especificar explícitamente una lista de atributos de la relación referen-ciada. Esta lista se debe declarar como clave candidata de la relación referenciada. Se puede usar la siguiente forma abreviada como parte de la definición de un atributo para declarar que el atributo forma una clave externa: nombre-sucursal char( 15) references sucursal
  14. 14. create table cliente {nombre-cliente char(20), calle-cliente char(30), ciudad-cliente chart 30), primary key {nombre-cliente)) create table sucursal {nombre-sucursal chart 15), ciudad-sucursal char<30). activo integer, primary key {nombre-sucursal), check (activo > = 0}) create table cuenta (numero-cuenta chart 10). nombre-sucursal chart 15), saldo integer, primary key (numero-cuenta), foreign key [nombre-sucursal] references sucursal. check (saldo >=0) create table impositor {nombre-cliente char(20), numero-cuenta chart 10), primary key (nombre-cliente, numero-cuenta). foreign key {nombre-cliente) references cliente, foreign key {numero-cuenta) references cuenta) FIGURA 6.2. Definición en SQL de los datos de parte de la base de dalos bancaria.
  15. 15. Cuando se viola una restricción de integridad refe-rencial, el procedimiento normal es rechazar la acción que provocó la violación. Sin embargo, la clausula foreign key puede especificar que si una acci6n 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. Considérese la siguiente definición de una restricción de integridad de la relación cuenta; create table cuenta foreign key (nombre-sucursal) references sucursal on delete cascade on update cascade, • ••) Debido a la clausula on delete cascade asociada con la declaración de la clave externa, si un borrado de una tupla de sucursal da lugar a que se viole la restricción de integridad referencial, el sistema no rechaza el borrado. El campo nom-bre-sucursal de las tuplas que realizan la referencia de cuenta se actualizan también al nuevo valor. SQL también permite que la clausula foreign key especifique una acción diferente a cascada si se viola la restricción: el campo que hace la referencia
  16. 16. En SQL la semántica de las claves se complica por el hecho de que SQL permite valores nulos. Los atributos de las claves externas pueden ser nulos, dado que no se han declarado como no nulos. 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 referencia! son formas especiales de los asertos. Ejemplos de estas restricciones pueden ser La suma de todos los importes de los prestamos de cada sucursal debe ser menor que la suma de todos los saldos de las cuentas de esa sucursal. Cada préstamo tiene al menos un cliente que tiene una cuenta con un saldo mínimo de 1.000 €. En SQL los asertos adoptan la forma create assertion <nombre-aserto> check <predicado> Permiten cambiar el comportamiento con los valores nulos; aquí no se tratan estos constructores. Para evitar esta complejidad, es mejor asegurarse de que todas las columnas con especificaciones foreign key se declaren como no nulas.
  17. 17. Para manejar estas situaciones las restricciones de integridad se comprueban al final de la transacción en lugar de en los pasos intermedios‗ (donde P es un predicado), no queda más remedio que implementarlo utilizando su equivalente «no existe X tal que no P(X)», que puede escribirse en SQL. create assertion restriccion-suma check (not exists (select * from sucursal where (select sam{importe) from prestamo where prestamo.nombre-sucursal = sucursal.nomhre- sucursal) >= (select sum (importe) from cuenta where prestamo.nombre-sucursal= sucursal.nombre-sucursal))) create assertion restriccion-saldo check (not exists (select * from prestamo where not exists (select * from prestatario, impositor, cuenta where prestamo.numero-prestamo— prestatario. numero- prestamo and pre st a ta rio. nombre –prestatario = impositor.nombre-cliente and impositor.numero-cuenta = cuenta.ntimero-cuenta and cuenta.saldo >= 1000)))
  18. 18. Necesidad de los disparadores Los disparadores son mecanismos útiles para alertar a los usuarios o para realizar de manera automática ciertas tareas cuando se cumplen determinadas condiciones. .A modo de ejemplo supóngase que, en lugar de permitir saldos de cuenta negativos, el banco trata los descubiertos dejando a cero el saldo de las cuentas y creando un préstamo por el importe del descubierto. Este préstamo recibe un número de préstamo idéntico al número de cuenta que ha tenido el descubierto. En este ejemplo la condición para ejecutar el disparador es una actualización de la relaci6n cuenta que dé lugar a un valor negativo de saldo. Insertar una nueva tupla 5 a la relación préstamo con s[nombre-sucursal] = t[nombre-sucursal snumero-préstamo ~ t[número-cuenta s[importe] = — t[saldo (Obsérvese que, dado que t[Saldo] es negativo, hay que cambiar el signo de t[saldo] para obtener el importe del préstamo - un numero positivo). Insertar una nueva tupla u a la relación prestatario con u[nombre-cliente = «Santos» unumero-préstamo] = t[numero-cuenta] Hacer que t[saldo sea 0.
  19. 19. Disparadores en SQL Los sistemas de bases de datos SQL usan ampliamente los disparadores, aunque antes de SQL: 1999 no fueron parte de la norma. Por desgracia, cada sistema de bases de datos implemento su propia sintaxis para los dispa-radores. Conduciendo a incompatibilidades. En la Figu-re 6.3 se describe la sintaxis SQL: 1999 para Los disparadores (que es similar a la sintaxis de los sistemas de bases de datos DB2 de IBM y de Oracle). create trigger descubierto after update on cuenta referencing new row as nfila for each row when nfila.saldo < 0 begin atomic s insert into prestatario >' {select nombre-cliente, numero-cuenta from impositor where nfila.numero-cuenta = impositor.numero-cuenta); insert Into prestamo values {nfila.numero-cuenta, nfila.nombre-sucursal, - nfila.saldo) update cuenta set saldo = 0 where cuenta.numero-cuenta = nfila.numero-cuenta «nd
  20. 20. Esta definición de disparador especifica que el disparador se inicia después (after) de cualquier actualización de la relación cuenta. Una instrucción de actualización SQL podría actualizar múltiples tuplas de la relación, y la clausula for each row en el código del disparador se iteraría explícitamente por cada fila actualizada. La clausula referencing new row as crea una variable nfila (denominada variable de transición) que almacena el valor de una fila actualizada después de la actualización.
  21. 21. Se usaban ampliamente los disparadores para las replicas de las base de datos; usaban disparadores, bajo la inserción, borrado o actualización de las relaciones para registrar los cambios en relaciones cambio o delta. Un proceso separado copiaba los cambios a la replica de la base de datos, y el sistema ejecutaban los cambios sobre la replica. Sin embargo, los sistemas de base de datos modernos proporcionan características incorporadas para la replica de base de datos, haciendo innecesarios a los disparadores para la replica en la mayoría de los casos.
  22. 22. Ejemplo de un disparador para hacer un nuevo pedido de un producto • create trigger, nuevopedido after update of cantidad on inventario • referencing old row as ofila, new wow as nfila • for each row • when nfila.nivel<=(select nivel • from nivelminimo • where nivelminimo.producto=ofila.producto) • and ofila.nivel<=(select nivel • from nivelminimo • where nivelminimo.producto=ofila.producto) • begin • Insert into pedidos • (select producto.cantiad • from nuevopedido • where nuevopedido.producto=ofila.producto); • end •
  23. 23. Ejemplo de disparador en la sintaxis de SQL Server de Microsoft • define trigger descubiendo on cuenta • for update • as • if n fila.saldo<0 • begin • insert into prestatario • (select nombre-cliente, numero-cuenta) • from impositor, inserted • where inserted.numero-cuenta=impositor.numero-cuenta) • insert into préstamo values • (inserted.numero-cuenta, inserted.nombre-sucursal, - inserted.saldo) • update cuenta set saldo = 0 • from cuenta, inserted • where cuenta.numero-cuenta=inserted.numero-cuenta)) • end
  24. 24. • Los disparadores se deberían escribir con sumo cuidado, dado que un error de un disparador detectado e tiempo de ejecución causa el fallo de la instrucción de inserción, borrado o actualización que inicio el disparador, en el peor de los casos esto podría dar lugar a una cadena infinita de disparos. Por ejemplo, supónganse que un disparador de inserción sobre la misma relación. La acción de inserción dispara otra acción de inserción, y a si hasta el infinito. Generalmente, los sistemas de bases de datos limitan la longitud de las cadenas de disparadores (por ejemplo, hasta 16 o 32), y consideran que las cadenas mayores son erróneas.
  25. 25. • Los datos guardados en la base de datos deben estar protegidos contra los accesos no autorizados, de la introducción o alteración malintencionadas además de la introducción o accidental de inconsistencias que evitan las restricciones de integridad. En este apartado se examina el modo en que se pueden utilizar mal los datos o hacer lo inconsistente de manera intencionada. Se presentan luego mecanismos para protegerse de dichas incidencias.
  26. 26. Violaciones de la seguridad 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
  27. 27. Para proteger la base de datos hay que adoptar medidas de seguridad en varios niveles: *Sistema operativo. Independientemente de lo seguro que pueda ser el sistema de bases de datos la debilidad de la seguridad del sistema operativo puede servir como medio para el acceso no autorizado a la base de datos. *Red . Dado que casi todos los sistemas de bases de datos permite el acceso remoto mediante terminales o redes, 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 las empresas *Físico. Los sitios que contienen los sistemas información 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.
  28. 28. Autorizaciones para diferentes partes de la base de datos • La Autorización de Lectura permite la lectura de los datos, pero no su modificación. • La Autorización de Inserción permite la inserción de datos nuevos, pero no la modificación de los existentes. • La Autorización de Actualización permite la modificación de los datos, pero no su borrado. • La Autorización de Borrado permite el borrado de los datos
  29. 29. Autorización para modificar el esquema de la base de datos • La Autorización de Índices permite la creación y borrado de índices. • La Autorización de Recursos permite la creación de relaciones nuevas. • La Autorización de Alteración permite el añadido o el borrado de atributos de las relaciones. • La Autorización de Eliminación permite el borrado de relaciones.
  30. 30. Vistas • Una vista puede ocultar los datos que un usuario no necesita ver. La capacidad de las vistas para ocultar datos sirve para simplificar el uso del sistema y para mejorar la seguridad. El uso del sistema se simplifica porque se permite al usuario restringir su atención a los datos de interés. Aunque puede que se niegue el acceso directo a una relación, puede que se le permita el acceso a parte de esa relación mediante una vista. Por tanto, 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. •
  31. 31. Esta vista se puede definir en SQL de la manera siguiente:  Create view cliente-préstamo as  (select nombre-sucursal, nombre- cliente  From prestatario, préstamo  Where prestatario. número-préstamo  = préstamo. número-préstamo)
  32. 32. El concepto de papel Considérese en un banco que tiene muchos cajeros. Cada cajero debe tener los mismos tipos de autorizaciones Grafo de concesión de autorizaciones
  33. 33. Un esquema mejor Especifica las autorizaciones que deben tener los cajeros e identifica separadamente cuáles de los usuarios de la base de datos son cajeros. Cuando se contrate a una nueva persona como cajero. Se le debe asignar un identificador de usuario e identificarle como cajero. Las autorizaciones se conceden a los papeles, de igual modo que se conceden a usuarios individuales. Se concede un conjunto de papeles a cada usuario de la base de datos para los que está autorizado.
  34. 34. Alternativas Serían crear un identificador de usuario cajero y permitir que cada cajero se conectase a la base de datos usando este identificador. El problema con este esquema es que no sería posible identificar exactamente al cajero que ha realizado una determinada transacción, conduciendo a problemas de seguridad. El uso de los papeles tiene la ventaja de requerir a los usuarios que se conecten con su propio identificador de usuario. Así, los gestores de las sucursales pueden tener autorización de concesión para conceder el papel cajero.
  35. 35. Trazas de auditoría Es un registro histórico de todos los cambios de la base de datos, junto con información sobre el usuario que realizó el cambio y en qué momento. La traza de auditoría ayuda a la seguridad de formas diferentes. Por ejemplo, si el saldo de una cuenta es incorrecto, el banco desearía revisar todas las actualizaciones realizadas sobre la cuenta para encontrar las actualizaciones incorrectas así como las personas que realizaron los cambios. Es posible crear una traza de auditoría definiendo disparadores adecuados sobre las actualizaciones de las relaciones
  36. 36. Privilegios en SQL  Incluyen los privilegios delete, insert, select y update.  El lenguaje de definición de datos de SQL incluye órdenes para conceder y retirar privilegios. La instrucción grant se utiliza para conferir autorizaciones.  Sintaxis:  grant <lista de privilegios> on <nombre de relación o de lista> to <lista de usuarios/papeles>
  37. 37.  La lista de privilegios permite la concesión de varios privilegios con una sola orden.  La siguiente instrucción grant concede a los usua-rios U 1,U2 y U3 la autorización select sobre la relación sucursal:  grant select on sucursal to U,, U2, U3  La autorización update puede concederse sobre todos los atributos de la relación o sólo sobre algunos.  La siguiente instrucción grant concede a los usua-rios U,, U, y U3 la autorización update sobre el atribu-to importe de la relación préstamo:  grant update (importe) on préstamo to U,, U2, U3
  38. 38.  En SQL el privilegio insert también puede especifi-car una lista de atributos.  El privilegio SQL references se concede sobre atri-butos concretos de manera parecida a la mostrada para el privilegio update.  La siguiente instrucción grant permite al usuario U, crear relaciones que hagan referencia a la clave nombre-sucursal de la relación sucursal como si fuera una clave externa: grant references (nombre-sucursal) on sucursal to
  39. 39. Papeles  Los papeles se pueden crear en SQL:1999 como sigue create role cajero  Se pueden conceder privilegios a los papeles al igual que a los usuarios, como se ilustra en la siguiente instrucción  grant select on cuenta to cajero  Los papeles se pueden asignar a los usuarios, así como a otros papeles, como muestran estas instrucciones.  grant carero to juan create role gestor  grant cajero to gestor grant gestor to maría
  40. 40. 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.
  41. 41. El privilegio de conceder privilegios  Por ejemplo, si se desea conceder a U1 el privilegio select sobre sucur- sal y que pueda transmitirlo a otros, hay que escribir  grant seiect 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 <lista de privilegios> on <nombre de relación o de vista>  from <lista de usuarios o papeles> [restrict I cascadel
  42. 42.  Por tanto, para retirar los privilegios que se han con- cedido con anterioridad hay que escribir  revoke select on sucursal from U1, U2, U3  revoke update (importe) on préstamo from U1, U2, U3 revoke references (nombre- sucursal) on sucursal from U1  La instrucción revoke también puede especificar restrict:  revoke select on sucursal from U1, U,. U3 restrict
  43. 43. Técnicas de cifrado  Una buena técnica de cifrado tiene las propiedades siguientes:  Es relativamente sencillo para los usuarios autori-zados 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 deter-minar la clave de cifrado.  Un enfoque, la norma de cifrado de datos (Data Encription Standard, DES) realiza una sustitución de caracteres y una reordenación de los mismos en función de una clave de cifrado.
  44. 44.  El cifrado de clave pública es un esquema alterna-tivo que evita parte de los problemas que se afrontan con DES.  Se basa en dos claves;  una clave pública y una clave privada.  Cada usuario U, tiene una clave pública C, y una clave privada Di. Todas las claves públicas están publicadas: cualquiera puede verlas.  Cada clave privada sólo la conoce el usuario al que pertenece.  Si el usuario U1 desea guardar datos cifrados, los cifra utili-zando la clave pública C1. Descifrarlos requiere la cla-ve privada Di.
  45. 45. 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 mas simple consiste en una contraseña secreta que se debe presentar cuando se abra una conexión a una base de datos.
  46. 46.  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. Si un husmeador es capaz de ―oler‖ los datos que circulan por la red, puede ser capaz de encontrar la contraseña que se envía.
  47. 47.  Los sistemas de clave pública se pueden usar para cifrar un sistema de desafío-respuesta. La BD cifra una cadena de desafío usando la clave pública del usuario y lo envía al usuario. Este descifra la cadena con su clave privada y devuelve el resultado a la BD.  El sistema de BD comprueba entonces la respuesta. Este esquema tiene la ventaja añadida de no almacenar la contraseña en la base de datos, donde podría ser vista potencialmente por administradores del sistema.
  48. 48.  Otra aplicación interesante de la criptografía esta 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 verificar con la clave publica, pero nadie podría haber generado los datos codificados sin tener la clave privada
  49. 49.  Además, las firmas digitales también sirven para asegurar el rechazo. Es decir, en el caso de que una persona que creo los datos afirmase mas tarde que no lo hizo, se puede probar que esa persona ha creado datos, a menos que haya cedido la clave privada a otros.

×