Seguridad Seguridad, Concurrencia y Recuperación • Para salvaguardar derechos legales y éticos de acceso a una información. • Seguridad aspectos generales • Autorizaciones de acceso • Autorizaciones a nivel de esquema • Otras consideraciones asociadas a la seguridad • Concurrencia • Propiedades ACID • Políticas institucionales sobre información no accesible • Niveles de seguridad definidos sobre el sistema a nivel de hardware, S.O., SBD • Necesidad de definir diferentes niveles de seguridad y clasificar segun ellos datos y usuarios 1 Autorizaciones de acceso 2 Autorizaciones a nivel de esquema • A. de lectura: permite la lectura pero no su • A. de Índices: Permite la creación y borrado modificación. • A. de recursos: Permite la creación de tablas • A. de Inserción: Permite la inserción pero no la • A. de Alteración: Permite el añadido y el borrado modificación de los existentes. de atributos de las relaciones • A. de Actualización: Permite la modificación • A. de eliminación: Permite el borrado de las pero no el borrado. tablas • A. de Borrado: Permite el borrado de los datos 3 4 EJ. de Seguridad Lenguaje para definir Reglas de Seguridad CREATE ROLE cajero CREATE ROLE <nombre del rol> GRAN cajero TO Juan GRANT <privilegios> ON <relación o vista> TO <lista usuarios> GRAN cajero TO Maria REVOKE <privilegios> ON <relación o vista> FROM <lista usuarios> [restrict | cascade] GRANT SELECT ON cuenta TO Cajero Equivalente GRANT SELECT ON cuenta TO Juan, Maria Privilegio: delete, insert, select, update, references, all privileges, usage (para dominios) GRANT Upadate(Importe)ON prestamo TO Juan Usuario: La palabra public hace referencia a todos los usuarios del presente y del futuro NO Equivalente 5 GRANT Upadate ON prestamo TO Juan 6 EJ. de Seguridad EJ. de Concesión de privilegios GRANT Insert(A1,A2, …, An)ON prestamo TO Juan Concede el privilegio de select al usuario y permite que el mismo lo conceda a otros usuario NO Equivalente GRANT Insert ON prestamo TO Juan GRANT Select ON sucursal TO Gerente GRANT REFERENCES (Ai)ON prestamo TO Juan with grant option REVOKE Select ON prestamo FROM Juan Restrict REVOKE grant option for select on sucursal from gerente REVOKE Update ON prestamo FROM Cajero [Cascade] valor por defecto 7 Solo anula la opción de conceder permisos 8 grant Concurrencia Seguridad. Otras consideraciones Técnicas necesarias para asegurar que transacciones concurrentes no interfieran en sus respectivas operaciones. • El creador de los objetos (tablas, vistas, roles, dominio) tiene acceso absoluto sobre los mismos. • No hay forma desde la BD de limitar el acceso a nivel de tuplas. Transacción • Una vista nos permite una forma de permitir el acceso a ciertos datos pero no a las tablas asociadas a dicha vista – Unidad lógica de trabajo – Secuencia de operaciones que transforman un estado consistente de la BD en otro estado consistente. – Termina en COMMITo en ROLLBACK • Auditorías (Logs) • Criptografiado de datos 9 Transacción.. ejemplo Transacción ... while (true) { ... try{ System.out.println (”Introducir los datos en la BD"); #sql {insert into vivienda values (:cod, :dir, :ciudad, :caraterísticas) }; if (!cliente_registrado) { #sql {insert into cliente values (:dni, :nomCli, :dirCli, :ciuCli)}; } #sql {insert into venta values (:dni, :cod, :dniRespon, :fecha, :precio)}; #sql {commit}; break; }catch(SQLException e) { if (e.getErrorCode() == 20001) { System.err.println ("Error: " + e.getMessage()); #sql {rollback}; continue; } else { System.err.println ("Error: " + e.getMessage()); #sql {rollback}; break; } } 11 } 10 Concurrencia. Problemas Pérdida de actualizaciones transacción A … READ(P) … … … P ? P + 100 WRITE(P) COMMIT T valor de P t1 50 t2 50 t3 150 t4 70 transacción B … … … READ(P) … … … … P ? P + 20 WRITE(P) ... 12 Concurrencia. Problemas Concurrencia. Problemas Análisis de Inconsistencias Dependencia con UNCOMMIT transacción A … ... … … … READ(P) READ(S) S ? P + S + 30 WRITE(S) … … … T t1 valor de P 50 valor de S 10 150 t2 150 10 190 t3 50 190 transacción B … READ(P) P ? P + 100 WRITE(P) … … ... … … … ROLLBACK 13 Transacciones. Propiedades ACID transacción A … READ(P1) READ(P2) Bat ? P1 + P2 WRITE(Bat) … … … … … … … … … READ(P3) Bat ? Bat + P3 WRITE(Bat) … T P1 50 50 t1 P2 30 P3 60 Bat 0 60 80 30 50 t2 30 50 40 60 70 t3 transacción B … … … … … … READ(P1) P1 ? P1 – 10 WRITE(P1) READ(P3) P3 ? P3 + 10 WRITE(P3) … COMMIT 70 150 14 Transacciones. propiedades ACID CAPA • Atomicidad • ATOMICITY • CONSISTENCY PRESERVATION • CONSERVACIÓN – La transacción es una unidad atómica. Se procesan todas sus operaciones o ninguna. DE LA CONSISTENCIA • Aislamiento • ATOMICIDAD • ISOLATION • PERMANENCIA • DURABILITY • AISLAMIENTO – La transacción no debe permitir que otras transacciones vean sus cambios hasta que estos estén comprometidos. 15 Transacciones. propiedades ACID 16 Propiedades ACID. Ejemplos (I) Atomicidad • Conservación de la consistencia UPDATE Cuenta SET saldo = saldo-100 WHERE cod = 1; – La ejecución correcta de una transacción cambia la BD de un estado consistente a otro también consistente. T UPDATE Cuenta SET saldo = saldo+100 WHERE cod = 2; Error del Sistema COMMIT; Aislamiento T1 saldo T2 30 • Durabilidad 130 – Después de comprometer los cambios de una transacción, éstos no se pueden perder. 17 UPDATE Cuenta SET saldo = saldo-120 WHERE cod = 1; COMMIT; UPDATE Cuenta SET saldo = saldo+100 WHERE cod = 1; 10 18 30 ROLLBACK; Técnicas de Recuperación Propiedades ACID. Ejemplos (II) Conservación consistencia T Restricción de integridad: las cuentas no pueden quedar en números rojos read (cant); UPDATE Cuenta SET saldo = saldo-cant WHERE cod = 1; SELECT saldo INTO :x FROM Kontua WHERE cod = 1; if (x < 0) {UPDATE Cuenta SET saldo = 0 WHERE cod = 1; INSERT INTO Préstamo(cuentaCod, cantidad) VALUES (1, (-1)*x); } COMMIT; Durabilidad UPDATE Cuenta SET saldo = saldo-100 WHERE cod = 1; T UPDATE Cuenta SET saldo = saldo+100 WHERE cod = 2; Razones por las que una transacción puede tener problemas • Error en el sistema (hardware o software) • Errores en las operaciones de la transacción • Condiciones de excepción detectadas por la transacción • Por los mecanismos de control de concurrencia • Fallos en partes del disco • Catástrofes COMMIT; Error del Sistema 19 Recuperación en las B.D. 20 Técnicas control interferencias • Para recuperarse cuando se produzcan errores el sistema mantiene un diario (log, journal) que contiene información sobre todas las operaciones de las transacciones que afecten a los datos de la BD. • Técnicas pesimistas (time-stamping, reservas) – Imponen a priori ciertas restricciones al solapamiento de transacciones que impiden horarios sospechosos • Entradas del log: • Técnicas optimistas (Kung) [start_transaction, T] [write_item, T, X, <valor anterior>, <valor nuevo>] [commit, T] [abort, T] – No ponen trabas al solapamiento y a posteriori se comprueba si ha habido interferencias 21 22