sábado, 11 de abril de 2009

Seguridad, Mecanismos de Seguridad, Concurrencia, Metodos de Control




SEGURIDAD EN BASE DE DATOS

Al hablar de seguridad hemos preferido centrarnos en la información misma, aunque a menudo se hable de seguridad informática, de seguridad de los sistemas de información o de seguridad de las tecnologías 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 podríamos referirnos también a sistemas) pueden conocer los datos o la información correspondiente.


La integridad: consiste en que sólo las personas autorizadas puedan 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 tuviéramos 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 estarían viciadas (corruptas decimos a veces), lo que haría difícil 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.
Hoy en día, las bases de datos son componentes cardinales de cualquier aplicación basada en web, permitiendo que los sitios web provean contenido dinámico. Debido a que información considerablemente sensible o secreta puede ser almacenada en tales bases de datos, usted debe considerar seriamente la forma de protegerlas.
Para recuperar o almacenar cualquier información necesita conectarse a la base de datos, enviar una consulta válida, recoger el resultado y cerrar la conexión. Hoy en día, el lenguaje de consultas usado comúnmente en estas interacciones es el Lenguaje de Consultas Estructurado (SQL por sus siglas en Inglés). Puede apreciar cómo un atacante puede intentar acometidas con una consulta SQL.
Como puede apreciar, PHP no puede proteger su base de datos por sí solo. Las siguientes secciones están dirigidas a servir de introducción a los conceptos básicos de cómo acceder y manipular bases de datos desde scripts PHP.
Mantenga en mente esta simple regla: protección en profundidad. Entre más acciones tome para incrementar la protección de su base de datos, menor será la probabilidad de que un atacante tenga éxito, y exponga o abuse de cualquier información secreta que estuviera almacenada. Un buen diseño del esquema de la base de datos y de la aplicación basta para lidiar con sus mayores temores.


Mecanismos de Seguridad de la BD

· Control de accesos
· Control de flujo
· Control de inferencia
· Encriptado

Métodos para el Control de Accesos


· Control de Acceso Discrecional
Garantiza privilegios a usuarios, incluyendo la capacidad para acceder archivos de datos específicos, registros o campos para operar de una manera determinada (read, insert, delete, o update).
· Control de Acceso Mandatorio


Clasifica usuarios y datos en múltiples niveles de seguridad, y luego fuerza determinadas reglas acordes a cada nivel.

Seguridad a cargo del DBMS
Encriptado de Datos
· Los datos son ilegibles a menos que se tenga conocimiento del código.
Seguimiento del ‘rastro’ (Audit Trail)
· si alguien entra en la BD
· A que datos accedió y que hizo con ellos

Seguridad a Nivel de Usuario en SQL


· Cada usuario tiene ciertos derechos sobre ciertos objetos.
· Distintos usuarios: los mismos o distintos derechos sobre los mismos objetos.

Para controlar la granularidad de los derechos de acceso los usuarios pueden tener derechos (autorización / privilegios) sobre:
• Tabla
• Vista




CONCURRENCIA EN BASE DE DATOS



El termino concurrencia se refiere al hecho de que los DBMS (SISTEMAS DE ADMINISTRACION DEBD) permiten que muchas transacciones puedan accesar a una misma base de datos a la vez.

En un sistema de estos se necesitan algún tipo de mecanismos de control de concurrencia para asegurar que las transacciones concurrentes no interfieran entre si.

En sistemas multiusuario, es necesario un mecanismo para controlar la concurrencia. Se pueden producir inconsistencias importantes derivadas del acceso concurrente, como por ejemplo, el problema de la operación perdida.

Métodos de control de concurrencia

Protocolos basados en técnicas de bloqueo

Cabe destacar antes de comenzar el estudio de los protocolos basados en bloqueos que son los más utilizados por los SGBD comerciales. Los demás tienen un alcance más teórico que práctico.

Un bloqueo es una variable asociada a un elemento de datos de la base de datos, usada para restringir las operaciones que se pueden aplicar sobre él.

Existen varios tipos de bloqueo: binarios (de propiedades limitadas), compartidos, exclusivos (usados en la práctica), y bloqueos de certificación.

Las operaciones sobre bloqueos se deben implementar como secciones críticas, es decir, de forma indivisible; el SGBD no deberá alternar sus instrucciones con otras.

Bloqueos binarios

Se caracterizan por tener dos valores posibles, bloqueados y desbloqueados. Cada elemento de la base de datos tiene un bloqueo distinto. El bloqueo señala si una transacción está operando sobre el elemento o está libre para que se pueda operar con él. De esta manera se impide que dos o más transacciones estén operando sobre un mismo elemento al mismo tiempo.

La implementación de un bloqueo binario es simple; basta con un vector de la siguiente forma: donde el booleano es en sí el indicador del bloqueo.

Bloqueos de lectura/escritura

Son una ampliación de los bloqueos binarios. Tenemos que el bloqueo puede tener tres posibles posiciones: libre, bloqueado para lectura, y bloqueado para escritura. De esta forma, más de una transacción puede tener un mismo elemento de datos bloqueado para lectura, pero sólo una para escritura. Si una transacción quiere escribir en ese elemento, habrá de esperar a que el bloqueo quede libre (cualquiera que sea el tipo de bloqueo), y a continuación, bloquearlo para escritura. Si quiere leer, sólo tendrá que esperar si el elemento está bloqueado para escritura. Se dice por tanto, que el bloqueo de lectura es compartido y el de escritura exclusivo. Tendremos por tanto tres operaciones; bloquear_escritura(X), bloquear_lectura(X) y desbloquear(X).

Problemas del bloqueo en dos fases: interbloqueo y espera indefinida
El interbloqueo se produce cuando cada transacción T en un conjunto de dos o más transacciones está esperando a algún elemento que está bloqueado por alguna otra transacción T' de dicho conjunto. En este estado, cada transacción está parada en espera a que otra transacción libere el recurso. Las condiciones para que se produzca en interbloqueo son las siguientes:

1. Exclusión mutua. Cada elemento está bloqueado por una transacción, o está libre.
2. Retención y espera: Una transacción que ya tiene elementos bloqueados puede solicitar un elemento adicional, y esperar que se le asigne, sin devolver previamente ninguno de los anteriores.
3. No apropiación: Sólo puede liberar un elemento la transacción que lo tiene asignado; no se lo puede quitar otra transacción que tenga mayor prioridad, ni el SGBD.
4. Espera circular: Existe una cadena circular, compuesta por dos transacciones o más, y otros tantos elementos intercalados, de manera que cada proceso está esperando que se le asigne un elemento, el cual, a su vez, está asignado al siguiente proceso de la cadena.
5. Bloqueo mutuo o deadlock: Un proceso se encuentra en estado de deadlock si esta esperando por un suceso que no ocurrirá nunca. Se puede producir en la comunicación de procesos y mas frecuentemente en la gestión de recursos.






Existen cuatro condiciones necesarias para que se pueda producir deadlock:

· Los procesos necesitan acceso exclusivo a los recursos.
· Los procesos necesitan mantener ciertos recursos exclusivos mientras esperan por otros.
· Los recursos no se pueden obtener de los procesos que están a la espera.
· Existe una cadena circular de procesos en la cual cada proceso posee uno o más de los recursos que necesita el siguiente proceso en la cadena.


El tratamiento del interbloqueo está orientado bien a prevenirlo, bien a detectarlo y evitarlo.

Protocolos de prevención de interbloqueo

Bloqueo en dos fases conservador: consiste en ordenar todos los elementos de la base de datos y asegurarse de que una transacción que necesite varios elementos los bloqueará según ese orden. Su inconveniente es que obliga al programador a conocer la manera en que están ordenados estos elementos.

Detección del interbloqueo: este enfoque es más práctico, y más interesante si esperamos que haya poca interferencia entre transacciones. La forma más sencilla y conocida es mediante el grafo de espera de transacciones/elementos. Se tiene que existe interbloqueo si el grafo de espera tiene un ciclo. El sistema revisa periódicamente este grafo, y si encuentra un ciclo, elige una transacción víctima para abortarla y así romper el anterior. El inconveniente de este sistema es decidir una política adecuada para la frecuencia de la comprobación y la selección de víctimas.

Conceptos Basicos, Modelo Relacional, Algebra Relacional, Modelo Jerarquico, Modelo de Red

Conceptos básicos:


· Registro: es el conjunto de información referida a una misma persona u objeto. Un registro vendría a ser algo así como una ficha.

· Campo clave: campo que permite identificar y localizar un registro de manera ágil y organizada.
· Tablas: unidad donde crearemos el conjunto de datos de nuestra base de datos. Estos datos estarán ordenados en columnas verticales. Aquí definiremos los campos y sus características. Más adelante veremos qué es un campo.



· Campo: unidad básica de una base de datos. Un campo puede ser, por ejemplo, el nombre de una persona. Los nombres de los campos, no pueden empezar con espacios en blanco y caracteres especiales. No pueden llevar puntos, ni signos de exclamación o corchetes. Si pueden tener espacios en blanco en el medio. La descripción de un campo, permite aclarar información referida a los nombres del campo.


· Clave primaria: es una clave única elegida entre todas las candidatas, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas. Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL.


· Clave foránea: es una referencia a una clave en otra tabla. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y si a donde están referenciadas. Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados, pero obviamente se permite que haya varios empleados en un mismo departamento, pero existirá solo un departamento.


Modelo Relacional:



El modelo relacional para la gestión de una base de datos es un modelo de datos basado en la lógica de predicado y en la teoría de conjuntos. Es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Su idea fundamental es el uso de «relaciones». Estas relaciones podrían considerarse en forma lógica como conjuntos de datos llamados «tuplas».la mayoría de las veces se conceptualiza de una manera más fácil de imaginar, esto es, pensando en cada relación como si fuese una tabla que está compuestas por registros (cada fila de la tabla sería un registro o tupla), y columnas (también llamadas campos).


Los fundamentos principales del modelo relacional: la independencia lógica y física de los datos.
Características (modelo relacional en BD)



· Una base de datos relacional se compone de varias tablas o relaciones.
· No pueden existir dos tablas con el mismo nombre.
· Cada tabla es a su vez un conjunto de registros, filas o tuplas.
· Cada registro representa un objeto del mundo real.
· Cada una de estos registros consta de varias columnas, campos o atributos.
· No pueden existir dos columnas con el mismo nombre en una misma tabla.
· Los valores almacenados en una columna deben ser del mismo tipo de dato.
· Todas las filas de una misma tabla poseen el mismo número de columnas.
· No se considera el orden en que se almacenan los registros en las tablas.
· No se considera el orden en que se almacenan las tablas en la base de datos.
· La información puede ser recuperada o almacenada por medio de sentencias llamadas «consultas».
Ejemplo de modelo relacional:







Álgebra Relacional


El álgebra relacional es un conjunto de operaciones que describen paso a paso como computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.

Modelo Jerárquico


Una Base de datos jerárquica es un tipo de Sistema Gestor de Bases de Datos que, como su nombre indica, almacenan la información en una estructura jerárquica que enlaza los registros en forma de estructura de árbol (similar a un árbol visto al revés), en donde un nodo padre de información puede tener varios nodos hijo.


Esta relación jerárquica no es estrictamente obligatoria, de manera que pueden establecerse relaciones entre nodos hermanos. En este caso la estructura en forma de árbol se convierte en una estructura en forma de grafo dirigido. Esta variante se denomina Bases de datos de red. En el modelo jerárquico sólo se pueden modelar relaciones 1:N, aunque esto se podía arreglar mediante el uso de los llamados "vínculos virtuales" que posibilitan las relaciones N:M.

Ejemplo de modelo jerárquico:




Modelo de Red

Es un Modelo de base de datos concebido como un modo flexible de representar objetos y su relación. El modelo de red permite a cada registro para tener múltiples registros paternales y de Hijos, formando una estructura de enrejado. El argumento principal a favor del modelo de red, en comparación con el modelo jerárquico, era que permitió un modelado más natural de relaciones entre entidades.



Ejemplo de Modelo de red:



Reglas de Negocio, Normalizacion, SQL ( DDL - DML - TCL - DCL)

Reglas de Negocio

Se pueden considerar como cualquier restricción, necesidad, requerimiento, o actividad especial que debe ser verificada al momento de intentar grabar información, borrar, actualizar o consultar la ya existente; las mismas son impuestas por los usuarios o los administradores de la base de datos.
Ejemplo: puedes definir un campo o una tabla que contenga información relacionada los clientes a los que se les vende algún determinado producto. Tal vez, la regla te indique, que las claves para determinados clientes de una determinada región empiece con A, para otros con B y así con las claves, pero con los nombres u otros determinantes de identificación con un determinado valor, ISO, algo así.
Normalización

El proceso de normalización de bases de datos consiste en aplicar una serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo relacional.
Las bases de datos relacionales se normalizan para:
Evitar la redundancia de los datos.
Evitar problemas de actualización de los datos en las tablas.
Proteger la integridad de los datos.

En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla sea considerada como una relación tiene que cumplir con algunas restricciones:

*Cada columna debe tener su nombre único.
*No puede haber dos filas iguales. No se permiten los duplicados.
*Todos los datos en una columna deben ser del mismo tipo.
DML

Es la abreviatura de Lenguaje de Manipulacion de Datos. Es usada para almacenar, modificar, borrar, insertar y actualizar datos en una base de datos.

Ejemplos: SELECT, UPDATE, INSERT statements

DDL

Es la abreviatura de Lenguade de Definicion de Datos. Es usada para crear y modificar la estructura de los objetos en la base de datos.
.
Ejemplos: CREATE, ALTER, DROP statements

DCL

Es la abreviatura de Lenguaje de Control de Datos. Es usada para crear los roles, permisos y la integridad referencial que es usada para controlar el acceso a la base de datos como medida de suguridad.

Ejemplos: GRANT, REVOKE statements

TCL

Es la abreviatura de Lenguaje de Control de Transacciones. Es usada para controlar las diferentes transacciones que ocurren dentro de una base de datos

Ejemplo: COMMIT, ROLLBACK statements

Generalidades Basicas

Datos
Son los hechos que describen sucesos y entidades."Datos" es una palabra en plural que se refiere a más de un hecho. Los datos son comunicados por varios tipos de símbolos tales como las letras del alfabeto, números, movimientos de labios, puntos y rayas, señales con la mano, dibujos, etc.
La importancia de los datos está en su capacidad de asociarse dentro de un contexto para convertirse en información. Por si mismos los datos no tienen capacidad de comunicar un significado y por tanto no pueden afectar el comportamiento de quien los recibe. Para ser útiles, los datos deben convertirse en información para ofrecer un significado, conocimiento, ideas o conclusiones.

Información

Información es un conjunto de datos significativos y pertinentes que describan sucesos o entidades.

Sistema de archivos

Un sistema de archivos es un método para el almacenamiento y organización de archivos de computadora y los datos que estos contienen, para hacer más fácil la tarea de encontrarlos y accederlos. Los sistemas de archivos son usados en dispositivos de almacenamiento como discos duros y CD-ROM e involucran el mantenimiento de la localización física de los archivos.

Base de datos

Almacén de datos relacionados con diferentes modos de organización. Una base de datos representa algunos aspectos del mundo real, aquellos que le interesan al diseñador. Se diseña y almacena datos con un propósito específico. Con la palabra "datos" se hace referencia a hechos conocidos que pueden registrarse, como ser números telefónicos, direcciones, nombres, etc.
Las bases de datos almacenan datos, permitiendo manipularlos fácilmente y mostrarlos de diversas formas.

Sistema de información

Es el sistema de personas, registros de datos y actividades que procesa los datos y la información en cierta organización, incluyendo manuales de procesos o procesos automatizados.

Archivo


Un archivo es un grupo de datos estructurados que son almacenados en algún medio y pueden ser usados por las aplicaciones. Los archivos como colección de datos sirven para la entrada y salida a la computadora y son manejados con programas.

Modelo

Un modelo es una representación de un objeto, sistema o idea, de forma diferente al de la entidad misma. El propósito de los modelos es ayudarnos a explicar, entender o mejorar un sistema. Un modelo de un objeto puede ser una réplica exacta de éste o una abstracción de las propiedades dominantes del objeto.

Modelo E-R:

Es un tipo de modelo de datos conceptual de alto nivel que se emplea en el diseño de las base de datos relacionales. El modelo entidad-relación muestra la estructura de la base de datos empleando todo tipo de herramientas conceptuales.

Relación
Una relación o vínculo entre dos o más entidades describe alguna interacción entre las mismas.

Cardinalidad:

Número máximo de entidades que están relacionadas con una única entidad del otro conjunto de entidades que interviene en la relación.

Podemos clasificar las relaciones de tipo:

1:1 La cardinalidad en ambas direcciones es 1.
1: N La cardinalidad máxima en una dirección es 1 y en la otra muchos (Primer ejemplo).
N: M Son muchas la cardinalidad máxima en ambas direcciones (Segundo ejemplo).

sábado, 31 de enero de 2009

Objetivos Generales

1.) Generalidades Basicas.
2.)
3.) Reglas de Negocio.
Normalizacion de Tablas.
Sentencias SQL ( DDL - DML - TCL - DCL ).
4.) Conceptos Basicos.
Modelo Relacional.
Algebra Relacional.
Modelo Jerarquico.
Modelo de Red .
5.)Seguridad, Mecanismos de Seguridad, Concurrencia, Mecanismos de Control