Unidad 6: Seguridad en BBDD Relacionales Flashcards
Seguridad de Información
Está vinculada a:
- Leyes vigentes
- Ley 25326: Ley de protección de Datos Personales
- GDPR (General Data Protection Regulation)
- Normas ISO 27000 (27001: 2022 / 27002: 2022)
Asegura la información en tres dimensiones:
- Confidencialidad
- Integridad
- Disponibilidad
Confidencialidad
Asegura que sólo quienes estén autorizados pueden acceder a la información
Integridad
Asegura que la información y sus métodos de proceso son exactos y completos
Disponibilidad
Asegura que los usuarios autorizados tienen acceso a la información y a sus activos asociados cuando lo requieran.
Integridad y Disponibilidad
En bases de Datos Relacionales:
- Respeto a las características del modelo relacional
- Resistencia a fallos garantizada a través del Modelo de transacciones
Modelos de Transacciones
Desde el punto de vista del:
Usuario: Operaciones con significado en el modelo semántico.
Base de datos: Varias operaciones elementales que deben ejecutarse como una unidad lógica.
Transacción
Conjunto de operaciones que se ejecutan como única operación lógica.
Están delimitadas por instrucciones de inicio de trascaccion y fin de transaccion
El uso de las transacciones está condicionado a que el sistema sea:
- MonoUsuario
- MultiUsuario (Existe concurrencia)
Propiedades de las transacciones
ACAD
- Atomicidad
- Consistencia
- Aislamiento
- Durabilidad
Atomicidad
(Realización completa)
Se debe considerar una única operación lógica, aunque esté formada por varias operaciones simples que deben ejecutarse en forma completa o no ejecutarse.
Consistencia
(Conservación de Coherencia)
Debe asegurarse incluso aunque varias transacciones se efectúen concurrentemente
Aislamiento
(Concurrencia no problemática)
Debe mantenerse el nivel de concurrencia en función de los accesos que tendrán lo usuarios
Durabilidad
(Pemanencia de los Cambios)
Tras una transacción, los nuevos valores de la BBD deben mantenerse a pesar de cualquier tipo de fallo del sistema.
Estados de la base de datos
- Consistente
- Inconsistente
Consistente
Si una base de datos es consistente antes de ejecutar una transaccion, tiene que seguir siéndolo después de ejecutar dicha transacción.
Inconsistente
Hay que asegurarse que las inconsistencias no sean visibles en un sistema de base de datos. Los estados inconsistentes sólo deben aparecer durante la ejecución de las transacciones.
Estado de las Transacciones
- Activa: Estado inicial. La transacción permanece en este estado durante su ejecución.
- Parcialmente comprometida: La treansacción pasa a este estado cuando acaba de realizar la última instrucción.
- Fallida: La transacción pasa a este estado tras descubrir que no puede continuar la ejecución normal
- Abortada: La transacción pasa a este estado después de haber restablecido la base de datos a su estado anterior (Se realiza un ROLLBACK implícito).
- Comprometida: La transacción pasa a este estado tras completarse con éxito luego de la marca de fin de transacción (COMMIT)
Ejecución de las transacciones
En la medida que se ejecutan las transacciones se registran en el archivo de bitácora o log de transacciones.
Ejecución de las transacciones (SERVICIOS)
- Transparencia de recuperación: Restaura a un estado consistente después de una falla.
- Transparencia de concurrencia: Los usuarios perciben la base de datos como un sistema monousuario
Concurrencia
La ejecución de varias transacciones en forma concurrente permite:
- Mejorar la productividad
- Mejorar la utilización de recursos
- Reducir el tiempo de espera
Pero puede:
- Destruir la consistencia de la base de datos
Necesidad del control de concurrencia
Problemas de:
- Actualización perdida por intercalación de operaciones.
- Lectura sucia
- Lectura fantasma
- Lectura no repetible
Actualización perdida por intercalación de operaciones
Cuando la actualización de un usuario sobrescribe la de otro
Lectura sucia
Se leen datos que otra transacción ha modificado sin que la misma se haya confirmado (no se ejecutó el COMMIT)
Lectura fantasma
Es cuando, por ejemplo, una transacción lee datos con ciertas condiciones de registro, otra transacción inserta datos que la consulta no recuperó. Por último, la consulta original se vuelve a ejecutar y se encuentra con registros que inicialmente no existían. Los registros nuevos son “fantasmas” porque no existían en la consulta original.
Lectura no repetible
Se leen los mismos datos más de una vez en una transacción y los mismos no coinciden
Niveles de Aislamiento
Para evitar los problemas de concurrencia y equilibrar el trabajo se deberá planificar las transacciones especificando el nivel de aislamiento.
- Comportamiento serializable
- Lectura repetible
- Lectura comprometida
- Lectura no comprometida
Comportamiento serializable
Todos los bloqueos se conservan hasta el final de la transacción. Es el mayor nivel de aislamiento.
Lectura repetible
Impide que dos lecturas consecutivas den diferentes resultados. No evita la lectura fantasma
Lectura comprometida
Se utilizan bloqueos compartidos que impiden sólo la lectura de actualizaciones incorrectas
Lectura no comprometida
No utiliza bloqueos. Pueden ocurrir cualquiera de los problemas de concurrencia.
Granularidad
La granularidad es el tamaño de los elementos. A mayor granularidad, menor concurrencia.
Clasificación de fallos
- Dependiendo de la información
- Con pérdida de información
- Sin pérdida de información
-Entre los fallos con pérdidas de información:
-Debido a causas físicas o lógicas externas a la transacción (Software o Hardware)
- De la transacción:
- Lógicos: internos de la transacción
- En el sistema: bloqueos
Fallos lógicos de la transacción
Errores locales o condiciones de excepción detectadas durante la transacción (ROLLBACK o ABORT)
- Antes de actualizar el puntero: La base de datos queda en el estado anterior a la transacción
- Después de actualizar el puntero: La base de datos queda en el estado posterior a la transacción.
Fallo en el sistema
- Antes de actualizar el puntero: Cuando se reinicie verá el contenido anterior a la transacción
- Después de actualizar el puntero: Cuando se reinicie verá el contenido posterior a la transacción
Recuperabilidad
Si una transacción falla es necesario deshacer su efecto para asegurar la atomicidad
Confidencialidad
Para garantizar la confidencialidad de la información, los SGBDR ofrecen mecanismos para controlar el acceso.
- Mecanismos de seguridad
- Control de accesos
- Asignación de privilegios
Control de accesos
El lenguaje de control de datos (DCL) permite establecer mecanismos de control para garantizar la seguridad de acceso a los datos.
Para la seguridad puede autorizar y denegar privilegios a usuarios para acceder a la base de datos
Mecanismos de seguridad
- Mecanismos de seguridad discrecionales
- Mecanismos de seguridad obligatorios
Mecanismos de seguridad discrecionales
Se usan para conceder privilegios para los usuarios para el acceso a los distintos objetos de la base de datos. Estos privilegios permitirán el acceso en un modo: Lectura, escritura o actualización
Mecanismos de seguridad obligatorios
Sirven para imponer seguridad de múltiples niveles para implementar la política de seguridad apropiada a la organización
Asignación de privilegios
- Nivel de cuenta
- Nivel de relación
Nivel de cuenta
El DBA especifica los privilegios particulares que tiene cada cuenta independiente de las relaciones de la base de datos
Nivel de relación
En este nivel podemos controlar los privilegios para tener acceso a cada relación o vista individual de la base de datos
Problemas de seguridad asociados al acceso
- Almacenar cadenas de conexión a bases de datos de forma segura
- Usar identidades apropiadas para tener acceso a la base de datos
- Asegurar datos que se extienden en la red.
- Autenticar llamadores en la base de datos.
- Autorizar llamadores en la base de datos.