"SEGURIDAD DE LAS BASES DE DATOS"
La información es uno de los activos más importantes de las entidades, y de moso especial en algunos sectores de actividad.
Es indudable que cada dia las entidades dependen de mayor medida de la información y de la tecnologia, y que los sistemas de información están más soportadas por la tecnologia,frente a la realidad de hace pocas décadas.
Por otra parte, hace unos años la protección era más facil,con arquitecturas centralizadas y terminales no inteligentes , pero hoy en día los entornos son realmente complejos, con diverdidad de plataformas y proliferación de redes, no sólo internas sino también externas, incluso con enlaces internacionales.
Entre las plataformas físicas (hardware) pueden estar: ordenadores grandes y medios ordenadores departamentales y personales, solos o formando parte de red, e incluso ordenadores portátiles. Esta diversidad acerca la información a los usuarios, si bien hace mucho más dificil proteger los datos, especialmente porque los equipos tienen filosofias y sistemas operativos diferentes, incluso a veces siendo del mismo fabricante.
Al hablar de seguridad hemos preferido centrarnos en la información misma, aunque a menudo se hable de seguridad informatica, de seguridad de los sistemas de información o de seguridad de las tecnologias de la información.
En cualquier caso hay tres aspectos principales, como distintas vertientes de la seguridad.
La confidencialidad: se cumple cuando solo las personas autorizadas (en su sentido amplio podriamos referirnos también a sistemas)pueden conocer los datos o la información correspondiante.
Podemos preguntarnos ¿qué ocurriria si un soporte magnetico con los datos de nuestros empleados o clientes fuera cedido a terceros? ¿Cuál podria ser su uso final?¿habra una cadena de cesiones o ventas incontroladas de esos datos, que podría incluir datos como domicilios o perfil economico, o incluso datos médicos?¡y si alguien se hiciera con un disquete con lo que perciben los directivos de nuestra entidad?.
La integridad: consiste en que sólo las personas autorizadas puuedan variar (modificar o borrar) los datos. Además deben quedar pistas para control posterior y para auditoria.
Pensemos que alguien variara datos de forma que perdiéramos la información de determinadas deudas a cobrar (o que sin perderla tuvieramos que recurrir a la información en papel), o que modificara la última parte de los domicilios de algunos clientes.
Algunas de estas acciones se podrían tardar en detectar, y tal vez las diferentes copias de seguridad hechas a lo largo del tiempo estarian viciadas (corruptas decimos a veces), lo que haria deficil la reconstrucción.
La disponibilidad: se cumple si las personas autorizadas pueden acceder a tiempo a la información.
El disponer de la información después del momento necesario puede equivaler a al no disponibilidad. Otro tema es disponer de la información a tiempo pero que esta no sea correcta, e incluso que no se sepa, lo que puede originar la toma de decisiones erróneas.
Otro caso grave es la no disponibilidad absoluta. Por haberse producido algún desastre. En este caso a medida que pasa el tiempo el impacto será mayor, hasta llegar a suponer la no continuidad de la entidad, como ha pasado en muchos de los casos producidos (más de un 80% según estadísticas), ya que las incidencias son frecuentes, y tenemos cercano el caso de los daños en el área de Acapulco.
En relación con ello deben existir soluciones alternativas, basadas en medios propios o contratados, copias actualizadas de la información crítica y de programas en un lugar diferente, y un verdadero plan de continuidad que permitía restablecer las operaciones en un tiempo inferior o igual al prefijo.
Para ello los usuarios habrán determinado previamente la criticidad de las aplicaciones y el impacto en sus áreas por parte de un comité, se habrán determinado las prioridades.
En la preparación y actualización del plan debemos pensar en situaciones posibles y en el impacto que tendrían en nuestra entidad (en su caso en las de nuestros clientes), especialmente si no disponemos de la información necesaria almacenada en lugares alternativos.
La seguridad tiene varios estratos:
El marco jurídico adecuado.
Medidas técnico-administrativas, como la existencia de políticas y procedimientos, o la creación de funciones, como administración de la seguridad o auditoria de sistemas de información interna.
Ambas funciones han de ser independientes y nunca una misma persona podrá realizar las dos ni existir dependencia jerárquica de una función respecto a otra.
En cuanto a la administración de seguridad pueden existir, además, coordinadores en las diferentes áreas funcionales y geográficas de cada entidad, especialmente si la dispersión a la complejidad organizativa o el volumen de la entidad así lo demandan
En el caso de multinacionales o grupos de empresas nacionales no esta de más que exista coordinación a niveles superiores.
En todo caso, debe existir una definición de funciones y separación de tareas; no tiene sentido que una misma persona autorice una transacción, la introduzca, y revise después los resultados (un diario de operaciones, por ejemplo), porque podría planificar un fraude o encubrir cualquier anomalía, por ello deben intervenir funciones personales diferentes y existir controles suficientes.
La seguridad física, como la ubicación de los centros de procesos, las protecciones físicas, el control físico de accesos, los vigilantes, las medidas contra el fuego y el agua, y otras similares.
La llamada seguridad lógica, como el control de accesos a la información exigiendo la identificación y autenticación del usuario, o el cifrado de soportes magnéticos intercambiados transmitidos por línea. (Puede haber cifrado de la información por dispositivos físicos o a trabes de programas, y en casos más críticos como la red SWFT existen los dos niveles).
La autenticación suele ser mediante contraseña, si bien seria más lógico, aunque los castores resultan aun altos para la mayoría de sistemas, que pudieran con características biométricas del usuario, para impedir la suplantación. Entre estas pueden estar la realización de la firma con reconocimiento automático por ordenador, el análisis del fondo de ojo, la huella u otras.
RIESGOS
Al margen de la seguridad, nos parece que el mayor riesgo, aun teniendo un entorno muy seguro, es que la informática, y la tecnología de la información en general, no cubran las necesidades de la entidad: no estén alineadas con el plan de negocio.
Limitándonos a la seguridad propiamente dicha, los riesgos pueden ser múltiples: el primer paso es conocerlos, y el segundo es tomar decisiones al respecto; el conocerlos y no tomar decisiones no tiene sentido y debiera crearnos una situación de desasosiego.
Como las medidas tienen un coste, a veces los directivos se preguntan a los consultares, cuál es el riesgo máximo que podría soportar su entidad, si bien la respuesta no es fácil, porque dependen de la criticidad del sector y de la entidad misma, de su dependencia respecto a la información, y del impacto que su disponibilidad pudiera tener en la entidad.
Si nos basamos en el impacto nunca debería aceptarse un riesgo que pudiera llegar a poner en peligro la propia continuidad de la entidad, pero este listón es demasiado alto.
Por debajo de ello hay daños de menores consecuencias, siendo los errores y omisiones la causa más frecuente, normalmente de poco impacto pero frecuencia muy alta, y otras el acceso indebido a los datos (a veces a través de redes), la cesión no autorizada de soportes magnéticos con la información critica 8algunos dicen sensible), los daños por fuego, por agua (del exterior como puede ser una inundación, o una tubería interior), la variación no autorizada de programas, persiguiendo el propio beneficio o el causar un daño, a veces por venganza.
Otra figura es la del hacker, que intenta acceder a los sistemas más para demostrar (a veces sobre todo para demostrarse a si mismo) de que es capaz, así como que pueda superar las barreras de protección que hayan establecido.
Alguien podría preguntarse por que no se citan también los virus, cuando han tenido tanta incidencia; afortunadamente esta es menor ahora que hace unos años, si bien existe un riesgo constante porque de forma continua aparecen nuevas modalidades, que no son detectadas por los programas antivirus hasta que las nuevas versiones los contemplan. Y un riesgo adicional es que los virus puedan llegar a afectar a los grandes sistemas, sobre todo a través de las redes, pero esto es realmente difícil no nos atrevemos a decir que imposible por las características y complejidad de los grandes equipos y las características de diseño de sus sistemas operativos.
En definitiva, las amenazas hachas realidad pueden llegar a impactar en los datos, en las personas, en los programas, en los equipos, en la red y alguna incidencia en varios de ellos, como puede ser un incendio.
Podríamos hacernos una pregunta ¿qué es lo más crítico a proteger?
La respuesta de la mayoría probablemente sería que las personas somos lo más crítico, y el valor de una vida humana no se puede compararon los ordenadores, las aplicaciones o los datos de cualquier entidad.
Ahora bien, por otra parte, podemos determinar que los datos son aún más críticos si nos centramos en la continuidad de la entidad.
Como consecuencia de cualquier incidencia se puede producir una pérdidas, que pueden ser no solo directas (y éstas es más fácil que puedan cubrirlas los seguros), sino también indirectas, como la no recuperación de deudas al perder los datos, o no poder tomar las decisiones adecuadas en el momento oportuno por carecer de información.
Sabemos que se producen casos en gran parte de entidades, pero en general no conocemos a cuales han afectado (o lo sabemos pero no podemos difundirlo), porque por imagen no se hacen públicos los casos, y el hecho de que conozcan muchos más referidos a Estados Unidos y otros puntos lejanos que respecto a nuestros países no significa que estemos a salvo, sino que nuestro pudor es mayor y los ocultamos siempre que podemos.
PROTECCIÓN DE ACTIVOS Y VITALES
Son activos vitales todos aquellos relacionados con la continuidad de la entidad, como pueden ser: planes estratégicos, fórmulas magistrales, diseño de prototipos, resguardos, contratos, pólizas… y datos estratégicos, que son los que más nos interesan bajo la perspectiva de la seguridad de la información.
Y debemos protegerlos pensando en los intereses de los accionistas, de los clientes y también pensando en los empleados y en los proveedores.
Cabe preguntarse el coste de la seguridad frente al coste de la no seguridad, si bien con antelación no es fácil saber qué alternativas es mejor, pero no se trata de buscar la mayor rentabilidad económica, porque hay razones de otra índole.
Y debemos pensar que se trata de INVERSIONES en seguridad, aunque en algunos casos se nos diría que no es fácil reflejar como activos contables y que cual es su rentabilidad, necesariamente hemos de estar de acuerdo, pero ¿cuál es la rentabilidad de blindar la puerta de acceso a nuestro domicilio, o nuestro coche? Esa rentabilidad la podemos determinar si los dispositivos o controles han servido para evitar la agresión, pero a veces habrá constituido una medida disuasoria y no llegaremos a enterarnos de su efecto positivo.
En toso caso la seguridad puede tener aun impacto favorable en el imagen de las entidades, aunque ello sólo no suela justificar sus costes, y tanto para clientes y posibles clientes como para los empleados. Unos y otros pueden sentirse más protegidos, así como considerar más protegidos sus activos.
Y la protección no ha de basarse sólo en dispositivos y medios físicos, sino en formación e información adecuada al personal, empezando por los directivos para que, en cascada, afecte a todos los niveles de la pirámide organizativa.
Además, la existencia de funciones específicas cuando el entorno lo justifica, contribuye a incrementar la seguridad. Entre ellas las ciradas de administración de la seguridad y auditoria de sistemas de información interna.
Porque deben existir los tres niveles de protección:
El CONTROL INTERNO, basado en los objetivos de control y llevado a cabo por los supervisores a distintos nivele.
La AUDITORIA DE SISTEMAS DE INFORMACIÓN INTERNA, objetiva e independiente y con una preparación adecuada, como control del control.
La AUDITORIA DE SISTEMAS DE INFORMACIÓN EXTERNA, contratada cuando se considera necesaria, y como un nivel de protección más. Igualmente objetiva e independiente.
Los informes de auditores, internos o externos, han de señalar las posibilidades deficiencias e indicar, en su caso, las recomendaciones correspondientes.
Cabe preguntarse qué hacer, qué pasos dar. No hay soluciones únicas, sino que dependen de la entidad y del momento, por lo que se indica pasos generales.
Debe partirse de una política corporativa sobre la seguridad.
El paso siguiente puede ser la designación de personas conciertes para funciones determinadas.
Y si no existe una idea calara de cuáles son los riesgos debe hacerse una evaluación de dichos riesgos, por personas objetivas e independientes y técnicamente preparadas, que pueden ser internas, externas, o formando un equipo mixto.
Una vez conocidos los riesgos han de tomarse decisiones, tendentes a eliminarlos, que siempre es posible, a reducirlos, a transferirlos (a una compañía de seguros por ejemplo), o bien aceptarlos, a un nivel suficiente alto y corporativo.
La contratación de seguros es necesaria si bien es evidente que, respecto a la información, pueden resarcirnos de la pérdida económica en el caso de incidencias pero si no disponemos de los datos no podremos procesar y, como se ha indicado, se puede poner en peligro incluso la continuidad de la entidad.
Después la entidad ha de crear un modelo de seguridad (o adoptar uno existente) así como definir una estrategia a seguir, establecer un plan y aportar los medios necesarios, que además de presupuestad son el reconocimiento de la importancia de la seguridad, y que no quede como tareas de rellano para cubrir tiempos de ocio de los técnicos.
Uno de los primeros productos ha de ser un conjunto de objetivos de control interno, que nos gusta definir como declaraciones sobre el resultado final deseado o del propósito a ser alcanzados mediante la implantación de procedimientos de control.
Para ello la entidad puede basarse en publicaciones como los control objetives, de la información systems audit and control association, que cuenta con varios capítulos en México, así como en otros países iberoamericanos y en España.
Podemos decir que un sistema de control interno puede constar de procesos, funciones, actividades, subsistemas y dispositivos, cuya finalidad (total o parcial) sea garantizar que se alcanzan los mencionados objetivos de control.
Finalmente se han de definir proyectos concretos, con actividades, responsables, resultados y costes.
Entre dichos proyectos pueden estar:
Creación de normas,
Separación de entornos: desarrollo de aplicaciones y su explotación,
Consideración del marco legal aplicable en cada país en qué afecta.
Determinación de los propietarios de la información, y clasificación de ésta. Al respecto podemos decir que los propietarios de la información son los clientes, proveedores, empleados pero debemos además definir, dentro de la entidad, quienes habrán de ser verdaderos administradores y en cierto modo dueños de los datos, al margen del consejo de Administración, debemos llegar a niveles operativos, como podría ser el Director de Recursos humanos para los datos de empleados, o el de Marketing o de productos para la información de determinados clientes/productos.
Y la clasificación de la información sirve para diferenciar los datos de libre acceso por todos los empleados, los restringidos a departamentos o niveles verticales, o lo que puede ser altamente confidenciales; cada entidad debe definir estos niveles, no más de cuatro a cinco. Y los paquetes de control de acceso pueden incorporar las clasificaciones para dejar acceder o no según los usuarios a qué datos y para qué (solo lectura, variación, ejecución de programas).
La información sobre salud de los empleados, por poner un ejemplo, sólo debe estar accesible al servicio médico.
Plan de continuidad: es la culminación de la seguridad, si bien puede suponer una gran complejidad y un coste elevado, pero es necesario que la entidad pueda asegurar la continuidad de sus operaciones, por medios propios o ajenos, si ocurre una incidencia importante.
Controles preventivos, como exigir una contraseña antes de permitir el acceso
Controles de detección, como lo que avisan de incendios en sus fases más tempranas, a veces sin verse el fuego aún.
Controles de corrección, como las copias de información para restaurar una situación.
Podemos decir que la seguridad de la información ha de ser una preocupación constante de las entidades, a un nivel suficiente alto, que no es exclusivamente un problema técnico y de técnicos, y que se trata de un camino para el que puede haber indicaciones, pero que será diferente según la entidad e el momento. Como decía el poeta Antonio Machado "se hace camino al andar"
PROGRAMACIÓN SOBRE LA SEGURIDAD DE ACCESS
Les ofrezco una visión global del mecanismo de seguridad de Access y la forma de administrar la misma con código VB. Aclaro que VB no proporciona ningún método para crear una BD del sistema de seguridad, pero si cuenta con la capacidad de administrar la seguridad que esta provee.
SEGURIDAD DE ACCESS
Las versiones recientes de Microsoft Access ofrecen dos métodos para proteger una base de datos: contraseña para abrir un archivo de base de datos o mediante seguridad a nivel de usuario o de cuentas. Además de estos métodos, puede eliminar código modificable de VB de la base de datos y así proteger el diseño de formularios, informes y módulos de la base de datos de posibles modificaciones guardándolo como un archivo MDE. Estos últimos tópicos no serán tratados en este documento.
CONTRASEÑA DE ARCHIVO MDB
Brevemente me refiero a esta opción para centrarnos en el Sistema de Cuentas que es el propósito de este articulo. El método Contraseña de Archivo MDB es simple y consiste en habilitar una contraseña para abrir un archivo MDB especifico. El método es el adecuado para una base de datos que esté compartida entre un pequeño grupo de usuarios o sobre un sólo equipo. No es aplicable si quiere replicar la BD o pretende implantar un sistema de seguridad en red. Si desea abrir una BD con contraseña de archivo siga este código:
Dim wrkJet As Workspace
Dim dbsM97 As Database
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
Set dbsM97 = wrkJet.OpenDatabase("miBD.mdb", True, False, ";PWD=miContraseña")
Tenga en cuenta este código porque en ninguna parte de la ayuda en línea lo encuentra tan claro.
En caso de usar el DataControl, hacerlo de esta forma, (dato de Jose Ramon):
Data1.Connect = ";pwd=MiClave"
Para compactar una BD con contraseña pueden seguir este ejemplo particular (dato de Jose Ramon Laperal):
DBEngine.CompactDatabase "MiBase", "MiBaseCompacta", dbLangGeneral, _
dbVersion30, ";pwd=MiClave"
El exito de la intrucción depende de los parámetros suministrados.
SISTEMA DE CUENTAS
Los usuarios son obligados a identificarse y escribir una contraseña cuando inician Microsoft Access o una Aplicación Access. La seguridad se basa en permisos, los cuales son atributos para un grupo o usuario. Por ejemplo, a un grupo bautizado Usuarios_Alpha se les permita visualizar, introducir o modificar datos en una tabla Clientes, pero no se les permita cambiar el diseño de esa tabla, ni accesar otras tablas. Así un usuario que pertenezca a este grupo sólo tendrá estos atributos y, en particular, los que le quiera dar un Administrador.
Las tres razones principales para utilizar la seguridad a nivel de usuario son las siguientes:
- Proteger la propiedad intelectual del código
- Impedir que los usuarios cambien o inutilicen inadvertidamente una aplicación cambiando código de objetos de los que depende la aplicación.
- Proteger los datos sensibles de la base de datos.
Si quieren entender plenamente el sistema de seguridad, es necesario estudiar los conceptos del mismo, como son varios, y la teoría es amplia, les tengo que sugerir el capitulo Protección de la aplicación, en el manual Creación de aplicaciones que viene con Microsoft Access (2.0/95/97). Pero para los que están de afán, le sugiero esta receta para crear un sistema de seguridad:
1. Crear a o unirse a grupo de trabajo
Textualmente, Un grupo de trabajo de Microsoft Access es un grupo de usuarios en un entorno multiusuario que comparten datos. Un Grupo de Trabajo se sirve de un archivo donde se almacenan las cuentas. Puede usar una predeterminado, uno existente o crear uno nuevo. Para esto emplea el Administrador para grupos de trabajo., busque el archivo Wrkgadm.exe (Access 2.0 o superior).
2. Cree una Cuenta de Propietario y Una de Administrador.
Con el Grupo de Trabajo activo, inicie MS Access, abra una BD, menú Usuarios, Usuario, del cuadro de dialogo escoja Nuevo, del cuadro de dialogo escriba el Nombre y un ID personal (esta combinación identificara al usuario de aquí en adelante) y Aceptar. Para crear la cuenta de propietario siga las mismas instrucciones. El Administrador administrara el Grupo de Trabajo, el propietario como su nombre lo indica, será el dueño de la BD y sus objetos.
3. Activar el procedimiento de inicio de sesión
Una BD será protegida cuando el administrador tenga contraseña y tenga Titularidad. Con el Grupo de Trabajo activo, inicie MS Access, abra una BD, menú Cambiar Contraseña, Cambiar Contraseña. Siga el cuadro de dialogo. La próxima vez que inicie Access, el cuadro de dialogo Conexión solicitara el nombre de un usuario y su contraseña.
4. Cambie la Titularidad
Inicie la sesión con la cuenta del nuevo Administrador creado anteriormente, Cree una nueva BD: menú Archivo, Complementos, Importar BD. Seleccione el archivo MDB cuya titularidad desea cambiar, y de Aceptar. También puede cambiar la titularidad de un objeto individual, desde los diálogos Cambiar Propietario, pero no desviemos la atención. Valga aclara que las bases de datos creadas desde una sesión de grupo, no necesitan cambiar su titularidad porque la traen de nacimiento.
5. Cree las cuentas de los Usuarios.
Cree grupos y usuarios de la siguiente manera. Abra la BD, menú seguridad, Grupos o Usuarios, siga los diálogos. Los PID son importantes para el administrador, no para los usuarios, anotelos. Después de creados los usuarios y grupos, puede hacer que un usuario, digamos John, pertenezca a un grupo y así limite sus permisos. Para generalizar, recuerde, la administración de las cuentas se lleva a cabo desde el menú Seguridad, creo que no necesitas memorizar más recetas.
6. Asignar Autorizaciones
Una vez creadas las cuentas, puede asignar autorizaciones a esas cuentas. Menú seguridad, autorizaciones. Importante: su BD no estará segura hasta no eliminar las autorizaciones del usuario Administrador y del grupo Usuarios (cuentas predeterminadas de Access). En realidad la administración de autorizaciones es el proceso donde invertirá la mayor parte del tiempo (la lógica de autorizaciones se aprende ensayando). Tenga presente en autorizaciones no solo a las tablas, también a las consultas, módulos y formularios.
7. Asignar Contraseñas
Al fin llegamos al paso fácil. Asígnele una contraseña a cada uno de sus usuarios. Es más rápido con código VB. Con Access, tiene que iniciar Access con cada cuenta, ir al menú Seguridad, Cambiar Contraseña y asignar el password. Si un usuario no tiene contraseña, cualquiera puede entrar con el nombre de ese usuario, en ese momento la contraseña es una cadena vacía. Un usuario puede cambiar su contraseña en el momento que lo desee.
Otro nivel es la codificación de la BD, pero aun no he llegado a este extremo. Es útil para protegerse de hackers ¿ o, no ?. No es difícil, pero sí riesgoso (opinión personal). Desde el menú Archivo, seleccione Codificar/Decodificar BD.
Si llego hasta aquí, y no esta aún frustrado, me alegra. Vea lo que le espera para implantar una aplicación que acceda una BD protegida.
Código Visual Basic
VB proporciona una interfaz poderosa de código para administrar un sistema de cuentas. Pero antes que se anime, lo más crítico es decirle a VB cual BD del sistema usar. Tengan presente esta cita:
Cuando se instala el controlador de bases de datos motor Microsoft Jet, el programa de instalación escribe un juego de valores predeterminados en el Registro de Windows en las subclaves Engines y ISAM, para Jet 3.0. Para Jet 2.5, los valores de inicialización se encuentran en el archivo VB.INI o en el archivo <NOMBREAPL>.INI, dependiendo del valor de la propiedad IniPath del objeto DBEngine.
Es decir, muy posiblemente tendrá que vérselas con el espantoso Regedit.Exe o con los INI si usa aplicaciones de 16 bits. Al respecto, le recomiendo buscar en la ayuda en línea estos temas:
Ayuda, Tab [Index], busque inicio del motor de base de datos, y seleccione el titulo Cambio de la configuración ISAM del motor Microsoft Jet.
Ejemplos Visual Basic
Puede lanzarse a programar con VB. Los siguientes bloques de código los obtuve de la ayuda en línea, los refine y organice. Son para DAO 3.5, para otras versiones el códigos es similar, solo que más sencillos. Ha sido fuente de información mía. El módulo es muy completo y didáctico.
SEGURIDAD INFORMÁTICA
Seguridad informática, técnicas desarrolladas para proteger los equipos informáticos individuales y conectados en una red frente a daños accidentales o intencionados. Estos daños incluyen el mal funcionamiento del hardware, la pérdida física de datos y el acceso a bases de datos por personas no autorizadas. Diversas técnicas sencillas pueden dificultar la delincuencia informática. Por ejemplo, el acceso a información confidencial puede evitarse destruyendo la información impresa, impidiendo que otras personas puedan observar la pantalla del ordenador, manteniendo la información y los ordenadores bajo llave o retirando de las mesas los documentos sensibles. Sin embargo, impedir los delitos informáticos exige también métodos más complejos.
En un sistema de los denominados "tolerante a fallos" dos o más ordenadores funcionan a la vez de manera redundante, por lo que si una parte del sistema falla el resto asume el control.
Los virus informáticos son programas, generalmente destructivos, que se introducen en el ordenador (al leer un disco o acceder a una red informática) y pueden provocar pérdida de la información (programas y datos) almacenada en el disco duro. Existen programas antivirus que los reconocen y son capaces de "inmunizar" o eliminar el virus del ordenador. Para evitar problemas en caso de apagón eléctrico existen las denominadas UPS (acrónimo de Uninterrupted Power Supply), baterías que permiten mantener el sistema informático en funcionamiento, por lo menos el tiempo necesario para apagarlo sin pérdida de datos. Sin embargo, la única forma de garantizar la integridad física de los datos es mediante copias de seguridad.
El mayor problema que tienen que resolver las técnicas de seguridad informática es el acceso no autorizado a datos. En un sistema seguro el usuario, antes de realizar cualquier operación, se tiene que identificar mediante una clave de acceso. Las claves de acceso son secuencias confidenciales de caracteres que permiten que los usuarios autorizados puedan acceder a un ordenador. Para ser eficaces, las claves de acceso deben resultar difíciles de adivinar. Las claves eficaces suelen contener una mezcla de caracteres y símbolos que no corresponden a una palabra real. Además, para aumentar la seguridad, los sistemas informáticos suelen limitar el número de intentos de introducir la clave.
Las tarjetas de contraseña son tarjetas de plástico que no pueden ser manipuladas, dotadas de un microprocesador que almacena una clave de acceso que cambia frecuentemente de forma automática. Cuando se entra en un ordenador mediante una tarjeta de acceso, el ordenador lee la clave de la tarjeta y otra clave introducida por el usuario, y las compara respectivamente con una clave idéntica a la de la tarjeta (que el ordenador genera automáticamente) y con la clave de acceso del usuario, que está almacenada en una lista confidencial. En el futuro, es posible que las claves y las tarjetas de acceso se vean reforzadas por mecanismos biométricos basados en características personales únicas como las huellas dactilares, los capilares de la retina, las secreciones de la piel, el ácido desoxirribonucleico (ADN), las variaciones de la voz o los ritmos de tecleado. Sistemas operativos como Mac OS, UNIX y Windows-NT permiten restringir el acceso a recursos del sistema (ficheros, periféricos…) de acuerdo con esa identificación.
Los hackers son usuarios muy avanzados que por su elevado nivel de conocimientos técnicos son capaces de superar determinadas medidas de protección. Internet, con sus grandes facilidades de conectividad, permite a un usuario experto intentar el acceso remoto a cualquier máquina conectada, de forma anónima. Las redes corporativas u ordenadores con datos confidenciales no suelen estar conectadas a Internet; en el caso de que sea imprescindible esta conexión se utilizan los llamados cortafuegos, un ordenador situado entre las computadoras de una red corporativa e Internet. El cortafuegos impide a los usuarios no autorizados acceder a los ordenadores de una red, y garantiza que la información recibida de una fuente externa no contenga virus.
Unos ordenadores especiales denominados servidores de seguridad proporcionan conexiones seguras entre las computadoras conectadas en red y los sistemas externos como instalaciones de almacenamiento de datos o de impresión. Estos ordenadores de seguridad emplean el cifrado en el proceso de diálogo inicial, el comienzo del intercambio electrónico, lo que evita una conexión entre dos ordenadores a no ser que cada uno de ellos reciba confirmación de la identidad del otro.
Una técnica para proteger la confidencialidad es el cifrado. La información puede cifrarse y descifrarse empleando ecuaciones matemáticas y un código secreto denominado clave. Generalmente se emplean dos claves, una para codificar la información y otra para descodificarla. La clave que codifica la información, llamada clave privada, sólo es conocida por el emisor. La clave que descodifica los datos, llamada clave pública, puede ser conocida por varios receptores. Ambas claves se modifican periódicamente, lo que complica todavía más el acceso no autorizado y hace muy difícil descodificar o falsificar la información cifrada. Estas técnicas son imprescindibles si se pretende transmitir información confidencial a través de un medio no seguro como puede ser Internet. Las técnicas de firma electrónica permiten autentificar los datos enviados de forma que se pueda garantizar la procedencia de los mismos (imprescindible, por ejemplo, a la hora de enviar una orden de pago).
INTRODUCCIÓN A LA SEGURIDAD
Una base de datos es:
"Un conjunto de datos integrados , adecuado a varios usuarios y a diferentes usos" es el propio uso concurrente de los datos el que plantea problemas de seguridad que el administrador de la base de datos debe paliar en la medida de los posibles con las facilidades que le proporciona el
SGBD.
La protección de los datos deberá llevarse a cabo contra fallos físicos, fallos lógicos y fallos humanos (intencionados o no). Estos fallos alteran indebidamente los datos, los corrompen con lo que la base de datos ya no puede servir a los fines para los que fue creada.
INTRODUCCIÓN A LA SEGURIDAD
El SGBD facilita normalmente mecanismos para prevenir los fallos (subsistema de control), para detectarlos una vez que se han producido (subsistema de detección) y para corregirlos después de haber sido detectados (subsistema de
recuperación).
Aspectos fundamentales de la seguridad
• Confidencialidad. No desvelar datos a usuarios no autorizados. Comprende también la privacidad (protección de datos personales).
• Accesibilidad. La información debe estar disponible.
• Integridad. Permite asegurar que los datos no han sido falseados.
INTRODUCCIÓN A LA SEGURIDAD
LEGALES
ORGANIZATIVAS
FÍSICAS
COMUNICACIONES
INTRODUCCIÓN A LA SEGURIDAD
La seguridad en las bases de datos abarca varios temas:
• Cuestiones éticas y legales relativas al derecho a tener acceso a cierta información.
• Cuestiones de política en el nivel gubernamental, institucional o corporativo relacionadas con la información que no debe estar disponible para el público.
• Cuestiones relacionadas con el sistema.
• Necesidad en algunas organizaciones de identificar múltiples niveles de seguridad y de clasificar los datos y los usuarios según estos niveles.
El SGBD debe proveer técnicas que permitan a ciertos usuarios tener acceso a porciones selectas de una base de datos sin tener acceso al resto. Por lo regular un SGBD cuenta con un subsistema de seguridad de autorización de la base de datos que se encarga de garantizar la seguridad de porciones de la base de datos contra el acceso no autorizado.
Existen dos tipos de mecanismos de seguridad:
• Discrecionales, se usan para otorgar privilegios a los usuarios.
• 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.
Otro problema de seguridad es el acceso a una base de datos estadística, la cual sirve para proporcionar información estadística a partir de diversos criterios. Los usuarios de bases de datos estadísticas están autorizados para usarlas para obtener información estadística sobre una población pero no para tener acceso a información confidencial detallada sobre individuos específicos. La seguridad en bases de datos estadísticas debe cuidar que la información sobre individuos no sea accesible. En ocasiones es posible deducir ciertos hechos relativos a los individuos a partir de consultas, esto tampoco debe permitirse.
Otra 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.
Entre las obligaciones del DBA está otorgar privilegios a los usuarios y clasificar los usuarios y los datos de acuerdo con la polí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
INTRODUCCIÓN A LA SEGURIDAD
Amenazas a la seguridad
Hardware
Falta de corriente
Interferencias eléctricas
Daños físicos
SGBD y software de aplicación
Alteración de programas
Robos de programas
Fallos de los mecanismos de
seguridad
Redes de comunicación
Ruptura de conexiones
Problemas con el cableado
Interferencias eléctricas
Base de datos
Copias de datos no autorizada
Robo de datos
Datos corruptos por cortes eléctricos
Usuarios
Entrar con la cuenta de otro
Hackers
Virus
Mala formación
Programadores/Operadores
Políticas y procedimientos de
seguridad inadecuados
Mala formación
Software inseguro
AD/ABD
Políticas y procedimientos de
seguridad inadecuados
Controles informáticos
Estos controles informáticos para la seguridad
incluyen:
• Autorizaciones
• Vistas
• Backup y recuperación
• Integridad
• Encriptado
• Procedimientos asociados
CONFIDENCIALIDAD
En un SGBD existen diversos elementos que ayudan a controlar el acceso a los datos. En primer lugar el sistema debe identificar y autenticar a los usuarios utilizando alguno de las siguientes formas:
– código y contraseña
– identificación por hardware
– características bioantropométricas (huellas dactilares,
voz, retina del ojo, …)
– conocimientos, aptitudes y hábitos del usuario
– información predefinida
Además, el administrador deberá especificar los
privilegios que un usuario tiene sobre los objetos:
– utilizar una BD
– consultar ciertos datos
– actualizar datos, …
Para facilitar la administración los SGBD suelen incorporar el concepto el concepto de perfil, rol o grupo de usuarios que agrupa una serie de privilegios por lo que el usuario que se asigna a un grupo hereda todos los privilegios del grupo. El mecanismo de control de acceso se encarga de denegar o conceder el acceso a los usuarios. En un SGBD pueden existir diferentes tipos de autorización.
Una primera distinción puede hacerse entre:
• Autorización explícita. Normalmente usada en los sistemas tradicionales. Consiste en almacenar que sujetos pueden acceder a ciertos objetos con determinados privilegios para lo que suele utilizarse una matriz de control de accesos
• Autorización implícita. Consiste en que una autorización definida sobre un objeto puede deducirse a partir de otras (por ejemplo si se puede acceder a una clase en un SGBO se puede también acceder a todas las instancias de esa clase)
También se puede distinguir entre:
• Autorización fuerte. Las autorizaciones deducidas a partir de la misma no puedan ser invalidadas
• Autorización débil. Se permiten excepciones sobre las autorizaciones implícitas
Por último:
• Autorización positiva. Su presencia indica la existencia de autorización
• Autorización negativa. Es la denegación explícita de una autorización
El tipo de autorización que se adopte dependerá entre otras cosas de:
• La política de control elegida, pudiendo el SGBD operar como un sistema abierto (en el que un usuario puede acceder a todos los objetos excepto a aquellos que se prohíben explícitamente) o como sistema cerrado (el usuario accede sólo a aquellos objetos para los que tiene autorización previa).
• El modelo de datos, ya que usar autorización explícita en los SGBO consume mucho espacio de almacenamiento debido a la existencia de un gran número de elementos a controlar (clases, subclases, servicios, objetos complejos, …).
Otra técnica de protección de la confidencialidad (y también de la integridad) que puede utilizarse en los SGBD es la criptografía, que permite transformar el contenido de la base, haciéndolo ininteligible a cualquier usuario que acceda a la misma sin la correspondiente clave de descifrado. Por último, cabe destacar las facilidades de auditoría que ofrecen los SGBD que permiten recoger en un fichero de pistas de auditoría ciertas operaciones realizadas por los usuarios, pudiendo, de esta manera, detectar accesos no permitidos.
El lenguaje SQL soporta en la actualidad sólo control de acceso discrecional, aunque existen algunas propuestas para incluir control de acceso obligatorio. En el modelo de confidencialidad del SQL el creador de un objeto es siempre el propietario del mismo y tiene todos los privilegios sobre el objeto (salvo que sea una vista, en cuyo caso se limita los privilegios sobre la vista a los que tenía sobre las tablas subyacentes).
Hay dos niveles de asignación de privilegios discrecionales para usar el sistema de base de datos:
– El nivel de cuenta en el que el DBA especifica los privilegios particulares que tiene cada usuario, independientemente de las relaciones de la base de datos
– El nivel de relación en el que podemos controlar el privilegio para tener acceso a cada relación o vista individual de la base de datos
Los privilegios en el nivel de cuenta pueden incluir los siguientes privilegios: CREATE SCHEMA, CREATE TABLE, CREATE VIEW, ALTER, DROP, MODIFY, SELECT.
Los privilegios del segundo tipo se aplican a las relaciones individuales: SELECT, MODIFY, REFERENCES.
Para conceder privilegios se emplea la:
<sentencia de concesión>::= GRANT <privilegios> ON <nombre de objeto> TO <concedido> [<coma><concedido>…] [WITH GRANT OPTION] <lista de acción>::= SELECT | DELETE | INSERT [<parent. izq.><lista de columnas><parent. dcho.>] | UPDATE [<parent. izq.><lista de columnas><parent. dcho.>] | REFERENCES [<parent. izq.><lista de columnas><parent. dcho.>] | USAGE
Por otra parte, para revocar privilegios se emplea: <sentencia de revocación>::= REVOKE [GRANT OPTION FOR] <privilegios> ON <nombre de objeto> FROM <concedido> [{<coma><concedido>…}]<comportamiento de borrado> <comportamiento de borrado>::= CASCADE| RESTRICT
RESTRICT no dejará revocar privilegios que hayan sido concedidos a otros usuarios, mientras que si empleamos la opción en cascada, se borrarán todos los privilegios.
Hay que tener cuidado ya que a pesar de revocar los privilegios a un usuario, éste puede mantenerlos a través de otro usuario (que les haya concedido los mismos privilegios). Por otro lado, cualquier borrado de un objeto (tabla, dominio, vista, etc.) causa, como es lógico, la revocación de todos los privilegios sobre el objeto a todos los usuarios.
Otro mecanismo que juega un papel muy importante en la confidencialidad delSQL lo constituyen las vistas, que permiten ocultar información a los usuarios; y, así, conceder privilegios sólo sobre subconjuntos de las tablas.
SGBD multinivel
Los sistemas de bases de daros actuales proporcionan lo que se denomina control de acceso discrecional (son los usuarios los encargados de establecer el control a través de privilegios).
Este tipo de seguridad es suficiente para que un gran número de sistemas pero algunas aplicaciones y determinados organismos requieren además un nivel superior de seguridad que se denomina control de acceso obligatorio, que ofrecen los denominados SGBD multinivel.
Un SGBD multinivel soporta datos con diferentes niveles o clases de confidencialidad y usuarios con diferentes clases de autoridad.
Una clase de confidencialidad consta de dos componentes: uno jerárquico (ALTO SECRETO, SECRETO, CONFIDENCIAL, NO CLASIFICADO) junto a un conjunto de categorías no jerárquicas (Finanzas, Ventas, Investigación, …). La diferencia con respecto a la seguridad discrecional radica en que los datos tienen un nivel de seguridad por si mismos, con independencia de los que se atribuyan a los usuarios.
El control de acceso obligatorio se basa en dos reglas:
Regla de lectura no ascendente o propiedad de seguridad simple. Protege los datos contra accesos no autorizados. "No se permite que un sujeto S lea los daos de la clase C a no se que clase(S)=C"
Regla de escritura no descendente o propiedad * (estrella). Se ocupa de la protección de datos contra su contaminación. "No se permite que un sujeto S escriba datos de clase de seguridad C a no ser que clase(S)=C".
Aunque no existe un acuerdo generalizado sobre en qué consiste un modelo de datos relacional multinivel, algunos aspectos relevantes del mismo
son: Una relación R multinivel con protección a nivel de atributo se puede representar por R(A1, C1, …, An, Cn) donde cada atributo Ai puede tener asociado un atributo de clasificación Ci (clase de seguridad). Una relación R puede ser accedida por cualquier sujeto S que cumpla clase(S)=clase(R).
En el caso de SGBD multinivel no sólo se impide que los usuarios no autorizados accedan a la información sensible, sino que ni siquiera se deja que conozcan la existencia de dicha información (evitando así que puedan realizar inferencias sobre esta información). Esto afecta a la propia definición del modelo relacional por ejemplo en cuanto a la:
– Integridad de entidad. Todos los valores de la clave primaria deben tener la misma clasificación ya que si no fuera así un usuario de menor autoridad vería valores nulos en la calve primaria. Esta debe tener una clasificación inferior respecto al resto de los atributos de la tupla.
– Integridad referencial. Una tupla con cierta clase de seguridad no puede referenciar a una tupla de clase de seguridad superior.
También hay que tener en cuenta el efecto de poliejemplarización o polinstauración que consiste en permitir que una clave primaria se repita en varias tuplas con diferentes niveles de confidencialidad. Esto es necesario ya que si un usuario inserta una tupla del mismo valor de clave primaria que otra que ya existe pero que es invisible (para él) no se le puede avisar ya que entonces se le estaría proporcionando información para la que no está acreditado por lo que la solución es añadir una nueva tupla con la misma clave primaria pero con diferente clase de seguridad.
BD estadísticas
En este tipo de bases de datos se debe evitar que a partir de consultas que afecten a datos globales se puedan inferir valores de datos individuales o inferir que un dato elemental no tiene determinado valor. Las técnicas de protección de inferencia se pueden clasificar en:
– Conceptuales. Proporcionan una representación conceptual de los requisitos de la base de datos
– Basadas en restricciones. Restringen las consultas estadísticas que podrían revelar al usuario información confidencial
– Basadas en perturbaciones. Introducen algunos tipos de modificaciones durante el procesamiento de la consulta.
DISPONIBILIDAD
Los sistemas de bases de datos deben asegurar la disponibilidad de los datos a aquellos usuario que tienen derecho a ello por lo que proporcionan mecanismos que permiten recuperar la base de datos contra fallos lógicos o físicos que destruyan los datos en todo o en parte. Aunque sólo nos centraremos en utilidades propias del SGBD, sería conveniente además, contar con facilidades ajenas al SGBD como, por ejemplo, máquinas tolerantes a fallos, sistemas de alimentación ininterrumpida. El principio básico en el que se apoya la
El principio básico en el que se apoya la recuperación de la base de datos ante cualquier fallo es la redundancia física.
En lo que se refiere al SGBD existen dos tipos importante de fallos:
• Los que provocan la perdida de memoria volátil, debidos a interrupción del suministro eléctrico o por funcionamiento anormal del hardware
• Los que provocan la pérdida del contenido de memoria secundaria
Concepto de transacción
Lo importante ante cualquier tipo de fallo es asegurar que, después de una actualización, la base de datos se queda en un estado consistente.
Para conseguir esto se crean unidades de ejecución denominadas transacciones que pueden definirse como secuencias de operaciones que han de ejecutarse de forma atómica, es decir, o bien se realizan todas las operaciones que comprenden la transacción globalmente o bien no se realiza ninguna.
Por definición, la base de datos se encuentra en un estado consistente antes de que se empiece a ejecutar una transacción y también lo deberá estas cuando la transacción termine de ejecutarse. Las propiedades principales que debe poseer una transacción son las siguientes:
•Atomicidad.
• Preservación de la consistencia
• Aislamiento. Una transacción no muestra los cambios que produce hasta que finaliza
• Persistencia. Una vez que la transacción finaliza con éxito, sus efectos perduran en la base de datos
Una transacción pude terminar de dos formas diferentes:
• Con éxito, en cuyo caso las actualizaciones de que consta la transacción se graban (commit)
•Con fracaso, en cuyo caso debe ser restaurado el estado inicial en el que se encontrada la base de datos antes de que empezara a ejecutarse la transacción. Las actualizaciones de que consta la transacción deberán, por tanto, deshacerse (rollback)
Los principales componentes del SGBD que se encargan de la gestión y recuperación d las transacciones son:
GESTOR DE "MEMORIA INTERMEDIA"
Ficheros diarios
Para conseguir anular y recuperar transacciones, el método más extendido suele ser la utilización de un fichero denominado diario (log o journal) en el que se va guardando toda la información necesaria para
deshacer -en caso de fracasar- o rehacer -si hay que
recuperar- las transacciones.
Un registro del fichero diario suele constar de:
– identificador de la transacción
– hora de la modificación
– identificador del registro afectado
– tipo de acción
– valor anterior del registro
– nuevo valor del registro
– información adicional (por ejemplo, un puntero al registro
previo del diario que concierne a la misma transacción)
Puede surgir un problema en caso de que se realice un cambio en la BD y no en el fichero diario debido a algún fallo del equipo; por ello, normalmente se obliga a que los registros que se modifican y que se encuentran en memorias de área intermedia o memoria principal, se escriban antes en el fichero diario que en la base de datos, para poder anular así, en caso de necesidad, las transacciones. Esto se denomina en la literatura inglesa como "log write-ahead protocol".
El fichero diario puede ser un fichero circular, es decir, que una vez lleno va eliminando registros según van entrando otros nuevos, aunque lo normal es que conste de dos partes; la primera en-línea (en disco), que almacena las actualizaciones que se llevan a cabo hasta que se llena, momento en el que se pasa el contenido a la segunda parte (por ejemplo, en cinta).
Para evitar tener que recorrer todo el fichero diario, lo cual consumiría mucho tiempo, se introduce el concepto de punto de verificación o punto de recuperación (checkpoint), que se ejecuta periódicamente y que implica:
– pasar el contenido de las memorias de área intermedia al fichero diario (al igual que para la base de datos, para el fichero de diario existen unas áreas intermedias, donde se guardan registros de este fichero)
– escribir un registro de punto de recuperación en el diario
– pasar el contenido de las memorias de área intermedia de la base de datos a soporte secundario
– escribir la dirección del registro de recuperación en un fichero de rearranque.
Recientemente se han propuesto nuevas técnicas, entre las que destaca la del fichero diario efímero (ephemeral logging), que no requiere puntos de verificación, ni aborta transacciones muy largas (como sucede con el fichero diario clásico). En esta técnica se gestiona el fichero diario como una cadena de colas a las que se van añadiendo registros, llevándose a cabo, de forma automática, la recogida de basura (garbage collection) y la compresión del fichero.
Otra forma de garantizar la recuperación ante fallos sin emplear el fichero diario es la técnica de páginas ocultas (shadow paging), que consiste en mantener dos tablas de páginas durante la vida de una transacción. Al empezar la transacción ambas tablas son iguales, reflejándose todos los cambios en una sola de ellas (la primaria) y manteniendo la otra (secundaria) sin cambios. En caso de que la transacción se grabe, se desecha la página secundaria y la primaria se convierte en la actual; si la transacción aborta, se desecha la primaria y se restablece la secundaria. En esta técnica la recuperación es más rápida (que con el fichero log), pero necesita recolección de basura para reclamar bloques inaccesibles.
Recuperación de la base de datos
Al ocurrir un fallo que dé lugar a pérdida de memoria volátil, es preciso realizar la operación que se suele denominar recuperación en caliente, en la que el sistema consulta el fichero diario para determinar las transacciones que hay que deshacer porque no han sido completadas y las que hay que rehacer porque, si bien se han completado, no habían sido grabadas en la base de datos cuando se produjo el fallo. Con este fin, al recuperar la base de datos después de una caída del sistema, se obtiene la dirección del registro de recuperación más reciente y se recorre el fichero diario desde este punto hasta el final. Recuperación en frío
En caso de un fallo de memoria secundaria que afecte a la base de datos, se lleva a cabo una recuperación en frío, que consiste en utilizar una copia de seguridad de la BD, también llamada de respaldo (backup) La copia de seguridad permitirá, junto con los ficheros diarios que se han ido produciendo desde que se realizó la copia de seguridad, reconstruir la BD llevándola de forma consistente a la situación anterior a que se produjera el fallo.
Otro caso que se puede dar es el denominado error fatal que se produce cuando se pierde el fichero diario grabado en un soporte, en este caso resulta imposible recuperar la base de datos a su estado actual.
La mejor solución para evitar este problema es la que ofrecen algunos SGBD, que permiten la gestión de copias del fichero diario en dispositivos independientes. También se puede duplicar la base de datos. En general todas las técnicas de duplicación se conocen como espejo (mirroring) o duplexación (duplexing).
Disponibilidad en SQL
El SQL soporta las transacciones clásicas mediante las sentencias COMMIT y
ROLLBACK. Las transacciones se inician al empezar los programas, o al ejecutar sentencias de definición o manipulación.
INTEGRIDAD
El objetivo en cuanto a la integridad es proteger la base de datos contra operaciones que introduzcan inconsistencias en los datos, por eso hablamos de integridad en el sentido de corrección, validez o precisión de los datos de la base. El subsistema de integridad de un SGBD debe, por tanto, detectar y corregir, en la medida de lo posible, las operaciones incorrectas. Existen dos tipos de operaciones que pueden atentar contra la integridad de los datos que son las operaciones semánticamente inconsistentes y las interferencias debidas a accesos concurrentes.
Integridad semántica
Existen operaciones que pueden violar restricciones definidas al diseñar la base de datos, como pueden ser restricciones sobre los dominios o sobre los atributos. Estas restricciones pueden ser estáticas (también llamadas de estado o situación) o dinámicas (denominadas de transición).
Los SGBD tienen que ofrecer en su lenguaje de definición facilidades que permitan describir las restricciones, con una sintaxis adecuada y gran flexibilidad.
Un aspecto muy importante de estas reglas de integridad, es que se almacenan en el diccionario, como parte integrante de la descripción de los datos (control centralizado de la semántica) con lo que se consiguen las siguientes ventajas: Son más sencillas de entender y de cambiar, facilitando su mantenimiento
– Se detectan mejor las inconsistencias
– Se protege mejor la integridad, ya que ningún usuario podrá escribir un programa que las viole llevando la base de datos a estados inconsistentes
El subsistema de integridad del SGBD debe realizar las siguientes funciones:
– Comprobar la coherencia de las reglas que se definen
– Controlar las distintas transacciones y detectar las violaciones de integridad
– Cuando se produce una violación, ejecutar las acciones pertinentes
Integridad operacional
En sistemas multiusuario es imprescindible, además, un mecanismo de control de concurrencia para conservar la integridad de la base de datos, ya que se pueden producir importantes inconsistencias derivadas del acceso concurrente.
A continuación presentaremos las técnicas de control de concurrencia más tradicionales:
– Bloqueo
– Marcas de tiempo
– Marcas de tiempo multiversión
– Técnicas optimistas
para, posteriormente, resumir las principales técnicas avanzadas:
– Transacciones anidadas
– Transacciones largas
– Transacciones de coordinación
Bloqueo
Se puede definir bloqueo (también llamado cerrojo) como "una variable asociada a cada elemento de datos, que describe el estado de dicho elemento respecto a las posibles operaciones (recuperación o actualización) que se pueden realizar sobre ellos en cada momento". Las transacciones pueden llevar a cabo bloqueos, por ejemplo, sobre los registros que vayan a utilizar, impidiendo a otros usuarios la recuperación o actualización de los elementos bloqueados, pudiéndose así evitar inconsistencias en el acceso concurrente.
Los bloqueos pueden ser de varios tipos:
– Bloqueos exclusivos (o de escritura): Cuando una transacción mantiene un bloqueo de este tipo sobre un objeto, ninguna otra transacción puede acceder a él, ni adquirir ningún tipo de bloqueo sobre ese objeto, hasta que sea liberado por la transacción que lo había retenido. Este tipo de bloqueos se utiliza cuando una transacción quiere actualizar algún objeto
– Bloqueos compartidos (o de lectura): Cuando una transacción tiene sobre un objeto un bloqueo de tipo compartido, permite que otras transacciones retengan también ese mismo objeto en bloqueos compartidos, pero no exclusivos. Este tipo de bloqueo se utiliza cuando las transacciones no necesitan actualizar datos, pero quieren impedir cualquier modificación de éstos mientras son consultados
El problema con las técnicas de bloqueo es que puede producirse un interbloqueo (llamado deadlock), que es una situación que se da cuando dos o más transacciones están esperando cada una de ellas que otra libere algún objeto antes de seguir. Este problema, que ha sido estudiado en profundidad en los sistemas operativos, puede tener dos soluciones:
– Prevenir el interbloqueo, obligando a que las transacciones bloqueen todos los elementos que necesitan por adelantado.
– Detectar el interbloqueo, controlando de forma periódica si se ha producido, para lo que suele construirse un grafo de espera. Si existe un ciclo en el grafo se tiene un interbloqueo. Cada SGBD tiene su propia política para escoger las víctimas, aunque suelen ser las transacciones más recientes
Los SGBD difieren muchas veces en los niveles del bloqueo:
– un campo
– un registro/una tupla
– un fichero/una relación
– la base de datos en su totalidad
Es lo que se llama la granularidad del bloqueo, y ha de establecerse sabiendo que una granularidad muy gruesa implica tener que gestionar un menor número de bloqueos pero retrasa la ejecución de muchas transacciones en tanto no se van liberando los objetos que éstas necesitan; mientras que una granularidad más fina permite una mayor concurrencia, pero aparecen más situaciones de interbloqueo que habrán de ser resueltas.
Marcas de tiempo, ("timestamping")
Las marcas de tiempo (a veces denominadas estampillas), son identificadores únicos que se asignan a las transacciones y que pueden considerarse como el tiempo de inicio de la transacción. Esta técnica permite ordenar las transacciones y controlar un acceso en secuencia de las mismas a los datos Con esta técnica no existen interbloqueos, y todas las actualizaciones físicas se retrasan hasta la grabación de las transacciones, si una transacción quiere acceder a algún dato que ha sido actualizado por una más reciente, se deshace y se vuelve a empezar.
Existen varios protocolos basados en marcas de tiempo, entre los que destacan: WAIT-DIE que fuerza a una transacción a esperar en caso de que entre en conflicto con otra transacción cuya marca de tiempo sea más reciente, o a morir (abortar y reiniciar) si la transacción que se está ejecutando es más antigua WOUND-WAIT, que permite a una transacción matar a otra que posea una marca de tiempo más reciente, o que fuerza a la transacción peticionaria a esperar
Marcas de tiempo multiversión
El mecanismo de marcas de tiempo supone que existe una única versión de los datos; por lo que sólo una transacción puede acceder a los mismos. Se puede relajar esta restricción permitiendo que varias transacciones lean y escriban diferentes versiones del mismo dato siempre que cada transacción vea un conjunto consistente de versiones de todos los datos a los que accede.
Técnicas optimistas
Otra modalidad para el control de accesos concurrentes, la constituyen las denominadas técnicas optimistas, que permiten que las transacciones accedan libremente a los objetos, determinando antes de su finalización si ha habido o no interferencias. Cada transacción consta de dos o más fases: una fase de lectura, una fase de validación, y posiblemente una fase de escritura. Durante la fase de lectura todas las escrituras tienen lugar en copias locales (versiones transitorias) y durante la fase de validación se establece si se viola la serialidad, y las copias locales se hacen globales.
Técnicas avanzadas.
Transacciones anidadas
A veces puede ser necesario descomponer transacciones en otras más pequeñas, lo que permite una mayor modularidad y una recuperación de granularidad más fina. Podemos considerar una transacción anidada como una composición de un conjunto de subtransacciones que, a su vez, puede ser anidadas. Las subtransacciones de una transacción se pueden ejecutar concurrentemente, pudiendo cancelarse o reiniciarse una subtransacción sin afectar a la transacción de la que forma parte.
Para otras transacciones sólo es visible la de mayor nivel, como si fuera una transacción normal, por lo que realmente esta técnica no altera la serialidad; pero sí mejora el rendimiento, lo que puede ser muy importante para una recuperación rápida de la base de datos.
Transacciones largas
Existen actualmente diferentes propuestas para soportar transacciones de larga duración, que pueden clasificarse como sigue:
– las que extienden técnicas basadas en la serialidad: bloqueo altruista, validación por medio de instantáneas (control optimista que emplea técnicas de validación para establecer si se han producido errores), transacciones multinivel (en las que una operación de larga duración se abstrae en suboperaciones implementadas por un conjunto de operaciones de bajo nivel), etc.
– las que relajan la serialidad, utilizando semántica de datos o semántica específica de aplicación, sagas (transacciones largas que se descomponen en una colección de subtransacciones que pueden intercalarse en cualquier orden
con otras transacciones), corrección de predicados conflictivos, reestructuración dinámica de transacciones, etc.
Transacciones de coordinación
Recientemente han aparecido numerosas propuestas sobre transacciones cooperativas, transacciones orientadas a grupos, conversacionales, de diseño, etc. que pretenden facilitar la coordinación del acceso a los recursos gestionados por la base de datos.
Todas estas técnicas son similares, y se basan en mecanismos de control de versiones; así, por ejemplo, cuando una transacción necesita acceder a un objeto en la base de datos pública, se solicita su extracción (check out) para leer, escribir o borrarlo y se bloquea permanentemente el objeto, copiándose en una base de datos privada. Una transacción de devolución (check in) se encarga de devolverlo a la base de datos pública.
También suelen permitir que se divida los usuarios en grupos con diferentes modos de bloqueo, logrando así varios niveles de aislamiento.
Integridad en SQL
Semántica
En el estándar actual se soportan además de la clave primaria, unicidad, no nulos e integridad referencial, las restricciones de verificación (CHECK), los dominios (CREATE DOMAIN) y las aserciones (CREATE ASSERTION); sentencias que se incluyen en la definición de los elementos del esquema.
Operacional El estándar SQL no proporciona, a diferencia de los productos relacionales, ninguna sentencia para bloquear datos, sino que deja este aspecto a los implementadores.
3.2.1 "APLICACIÓN DE CAMBIOS EN LA BASE DE DATOS"
· Integración de los componentes
S.Q.L. permite agrupar las líneas de datos que tengan valores comunes, las columnas representan uno o varios nombres de columnas separados por comas y que deben obligatoriamente figurar en la lista de selección de la clausura SELECT. Se puede reemplazar los nombres de las columnas por un enteo que indique su posición relativa.
Contar todos los clientes clasificados por ciudad.
SELECT COUNT (*), ciudad FROM clients GROUP BY ciudad
Listar el número de líneas por cada pedido
SELECT COUNT (*), nº pedido FROM pedidos GROUP BY nº pedido;
Visualizar el importe de cada pedido.
SELECT NUMBER, SUM (precio*cantidad) FROM linea_pedido GROUP BY 1;
CONDICIONES DE COMPOSICION
Una composición es un enlace entre dos tablas que dispongan al menos de una columna en común, la operación de composición consiste en crear una tabla temporal compuesta por las líneas de ambas tablas que satisfagan la condicion.
Formato SELECT lista de columnas FROM lista de tabla WHERE condicion;
Cuando en dos tablas que vas a comparar <<Ejemplo>> hay una de ellas que la quieres ver y tienes que especificar de que tabla es
SELECT nombre, ape1, ape2, clientes, idcliente, fecha pedido FROM clientes, pedidos WHERE clientes.idecliente=pedidos.idcleinte;
TIPOS DE ENLACE
1.- Equicomposicion: es una composición donde la condicion es una comparación de igualdad entre dos columnas de diferentes tablas.
2.- Thetacomposicion: es una composición donde la condicion es una comparación de 2 columnas utilizando un operador distinto al de igualdad.
3.- Composición externa: es una composición que favorece una tabla con respecto a otra así las líneas de la tabla dominante serán seleccionadas aunque la condicion no se haya cumplido.
UNION DE SENTENCIAS:
S.Q.L. permite la fusión de datos pertenecientes a varias sentencias SELECT formuladas sobre una o varias tablas, una condicion esencial para efectuar esto es la necesidad de la misma lista de selección.
SELECT <<lista de columnas>> UNION (ALL) SELECT "lista de columnas" ORDER BY
"ejemplo" o tenemos dos tablas clientes y clien.santander queremos visualizar las dos tablas a la vez.
SELECT ape1, ape2, nombre FROM clientes UNION SELECT ape1, ape2, nombre FROM clien.santander ORDER BY 1;
Inserción de los componentes
La inserción de nuevos datos se hace con dos tipos de sentencias, una permite la inserción de datos provenientes del mundo exterior y otra permite la inserción de datos entre tablas.
1.- Inserción datos del exterior:
INSERT INTO <<nombre tabla>> [(<<lista columnas>>)] VALUES (datos de las columnas metidos por orden)
<<Ejemplo>> INSERT INTO clientes VALUES (5. >>José>>, >>Casas>>,>>Longo>>,…);
2.- Insertar datos entre tablas:
INSERT INTO <<nombre tabla>< [(lista columnas)]
Sentencia SELECT
La sentencia SELECT debe recoger el mismo nº de columnas que se han especificado en la lista de columnas si esta explicita o el mismo nº de columnas especificadas en la creación de la tabla si esta se ha omitido.
La sentencia SELECT no puede contener una cláusula ORDER BY ni una cláusula INTO TEMP.
<<ejemplo>> o copiar todos los clientes que sean de Santander de la tabla clientes a la tabla Cli_santander. INSERT INTO cli_santander (idcliente, nombre) SELECT idcliente, nombre O * FROM clientes WHERE ciudad="santander",;
Modificaciones a la base de datos
Las bases de datos se componen de campos. Los campos son la definición de una columna, como si fuera el encabezado de un formulario. Las bases de datos nos sirven para clasificar datos, ya sean de alumnos, coches, ordenadores etc.
¿Cómo crear nuevos campos?
Para crear nuevos campos, nos vamos al menú organizar y le pedimos <<Crear campo><. Al crear un campo, nos saldrá un menú en el cual debemos introducir el nombre del campo, el tipo de campo (letras, numérico, sumario, formulas…) y pulsamos crear. Si hemos elegido formula que deseemos crear, en este menú nos aparecerán los campos de los que disponemos y la formulas.
¿Cómo insertamos el campo creado?
Para insertar el campo que hemos creado, tenemos que entrar en el menú organizar y elegir <<insertar campo>>. Ahora nos saldrá un menú en el cual debemos introducir el campo a introducir. Si el campo es una suma general de otros ampos, deberemos introducir una nueva parte de sumario que explicamos mas adelante.
¿Cómo retocar la base de datos?
Si queremos retocar donde van situados y como la base de datos deberemos meternos en el menú organizar y elegir organizar. Nos aparecerá un solo campos de toda la base de datos, esto campos, son los común a todos los demás, si movemos un solo campo, retocaremos la base de datos entera.
¿Cómo buscar un dato específico?
Si queremos buscar un dato concreto, (un alumno en el caso de clase) basta con que nos introduzcamos en el menú organizar, y elijamos la opción Buscar, inmediatamente nos saldrá un solo menú, en dicho menú, deberemos introducir un dato, ya sea en el campo que corresponda, si deseamos buscar alumnos de 3 de B.U.P. pues deberemos introducir <<3>> y todo lo que sea común a 3 en el campo insertado nos saldrá.
Una vez escrito lo que queramos, pulsamos el botón TODOS a la izquierda del todo. Si deseamos buscar en una base de datos con dinero y buscamos los que cobran más de 100000 pues deberemos introducir el símbolo mayor que 100000 <<>100000>< en ese momento, el ordenador (pulsando antes el botón TODOS nos muestra los valores mayores al numero escrito).
¿Cómo introducir una parte única en la base de datos?
Lo primero, decir que con esto conseguimos una suma general, un calculo que nos dará el resultado total. Si tenemos una base de datos con todo lo que ganan los trabajadores y quisiéramos tener los datos de lo que ganan todos en total, deberíamos señalar todas las casillas e ir al menú edición seleccionar copiar, ir a una hoja de calculo, pegar allí lo que hemos copiado en el menú edición <<pegar>> y aparecería la hoja completa, debajo de todo los números escribir = sum (todas las columnas) y nos daría la suma total. Esto es bastante incomodo y lento y seria un grave atraso en las bases de datos pues seria una perdida de tiempo.
Las bases de datos como bien vimos en como se crean, tiene acceso a formulas, estas formulas nos dan la capacidad de una hoja de calculo y podemos sumar, multiplicar, etc. Para que nos de lo mencionado en el menú organizar y nos saldrá para retocar la base de datos.
Deberíamos insertar un campo nuevo, con la operación Sum (todos lo pagos), insertar el campo en la base de datos, pero si realizamos esta operación y la ponemos junto a las demás formulas tendríamos el problema de que lo hemos metido en una parte donde es común para todos los datos, de tal manera que si lo introducimos ahí y nos vamos a el menú organizar y dentro de este a examinar veremos que nos sale el campo de la suma pero en todas las fichas.
Como es un dato único, solo queremos que nos salga una vez, no mas. De tal manera que deberemos ponerlo abajo del todo, es el sitio ideal pero no tiene por que ser ahí. Volvemos al menú organizar, organizar. Ahora en el menú organizar damos a insertar parte, nos saldrán los tipos de partes, elegimos sumario total o general. Aceptamos y nos parecerá lo de antes pero con una especie de parte mas. En esta parte podemos introducir un dato común que tan solo aparecerá abajo del todo. Con este campo tendremos la opción de que tenga la hoja un final que no sea común a los demás datos.
Si nos fijamos bien arriba del todo ahí otra parte no mencionada aquí todavía, esta parte es la cabecera, que es el principio de la página, solo saldrá arriba del todo y no es común con los campos.
En esa parte es ideal para plasmar el Titulo, el logotipo de la empresa, colegio o lo que sea.
¿Cómo importar un simple archivo de texto (.txt) a una base de datos?
Si tenemos un archivo de texto.txt, podemos crear con su contenido una base de datos de la manera mas fácil, simplemente elegir abrir en el menú archivo, seleccionar el archivo txt y en la parte derecha abajo del programa hay una flechita si pulsamos ahí nos parecerá un submenú en el, deberemos seleccionar base de datos y elegir abrir, el archivo se empieza a importar. Finalmente nos saldrá en la base de datos, en la cual deberemos añadirle el nombre de los campos y colocar estos de tal manera que nos venga en gana.
¿Cómo crear sub-bases de datos dentro de una misma base de datos?
Si queremos tener muchas bases de datos dentro de una misma, por ejemplo una con el curso de los alumnos, otra con su sexo, otra con su matricula y lo que a pagado deberemos hacer lo siguiente, lo primero es crear una base de datos con lo que nos apetezca. Nos vamos al menú organizar y le damos a crear presentación nueva, allí nos saldrá un menú en el cual deberemos seleccionar duplicado. También esta la opción de columnas por si lo queremos distinto a lo que tenemos. Ahora en el menú organizar, debajo del todo tenemos las dos representaciones que tenemos, elegimos la ultima que es la que hemos creado y la cambiamos como queramos sin alterar la primera.
Esto nos permite un manejo muy satisfactorio por todas las hojas de cálculo de tal manera que no tengamos que estar con todos los datos en una misma hoja.
Página anterior | Volver al principio del trabajo | Página siguiente |