"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 |