Procedimientos Almacenados MySQL 5 - Capitulo III: Procedimiento almacenado, aportación a seguridad y velocidad

6 - Capitulo III: Procedimiento almacenado, aportación a seguridad y velocidad

[editar]
Monografía creado por Isaias Cansino García.
02 de Febrero de 2008





Capitulo III: Procedimiento almacenado, aportación a seguridad y velocidad

3.1.-Definición de DBMS
3.2.-Algunos DBMS
3.2.1.-MYSQL
3.2.2.-SQLSERVER
3.2.3.-ORACLE
3.3.-Seguridad
3.3.1-Manejo de usuarios
3.3.1.1.-Administrador de la base de datos
3.3.1.2.-Usuarios de la base de datos
3.3.2.-Encriptación de claves de usuarios
3.3.3.-Asignación de privilegios a usuarios
3.3.4.-Asignación de privilegios basados en host














Capítulo III: DBMS y su seguridad.

Por el hecho de que los procedimientos almacenados se alojan en un DBMS es necesario tener clara la constitución de este elemento para la comprensión completa del tema de estudio y temas posteriores, es por ello que se verá en este capítulo todo lo relacionado con los DBMS.

En este capítulo se menciona la definición del DBMS y se abordará de manera general el proceso mediante el cual trabaja, se hará mención de características de algunos DBMS y con la finalidad de ir adentrando al lector en el manejo de MYSQL que será el manejador de base de datos a utilizar en el anexo de este documento, se podrá observar una breve historia de éste. Un elemento importante que pretende contribuir a fortalecer este texto es la seguridad, es por ello que se dejó una sección completa a la seguridad en donde se podrá observar de que forma se administran los usuarios, la manera en que se puede realizar una asignación de privilegios y como el sistema encripta las claves de ellos.

3.1.- Definición de DBMS.

“Un DBMS ( Sistema manejador de base de datos) consiste en un conjunto de datos relacionados unos con otros entre sí y un grupo de programas en ejecución los cuales otorgan la posibilidad de acceso, modificación, control y seguridad de la información almacenada en la base de datos”

Como se observa en la definición de un DBMS este tipo de sistemas de almacenaje y consulta de información ha cambiado tanto que es difícil encontrar similitudes con sus antepasados los archivos de texto plano. Como se deja ver en la definición el DBMS está dividido en dos grandes partes, la base de datos como información física que se encuentra en algún medio de almacenamiento y los programas que ejecutan diferentes rutinas alrededor de ellos, obsérvese la imagen siguiente con la finalidad de identificar éstos.


Imagen 7: Diagrama general de funcionamiento de un DBMS

Manejador de base de datos: constituye la interfaz entre los datos de bajo nivel almacenados en la base de datos, los programas de aplicación y las consultas que se hacen al sistema.

El precompilador de DML: Este convierte las sentencias DML enviadas por un usuario en llamadas normales entendibles y ejecutables por el lenguaje huésped en el DBMS.

El precompilador DDL: convierte las sentencias DDL recibidas en un conjunto de tablas que contienen metadatos.

Manejador de archivos: encargado de gestionar espacio en disco y de las estructuras de datos que se van a emplear para representar la información almacenada en el disco.

Ahora ya conociendo algunos de los elementos que constituyen un DBMS se presentarán algunos de los más conocidos manejadores de bases de datos que existen actualmente.

3.2.- Algunos DBMS.

Como es sabido a la fecha de la publicación de este documento existen varios DBMS, lógicamente diferentes entre si, esto implica diferencias en condiciones de licencia, su seguridad, robustez, rapidez, manejo de algún tipo de columna, costos etc. Es por ello que en el documento aparte de proponer el uso de procedimientos almacenados en las bases de datos también se sugiere la realización de un análisis minucioso de las necesidades que tiene el proyecto sobre el cual se implementarán los procedimientos almacenados, ya que de las diferentes necesidades a cubrir del proyecto se hará la elección del DBMS a utilizar, es por ello que en esta sección que dejan ver las características mas significativas de algunos DBMS mas representativos hasta el momento.

Es importante hacer una observación, ya que los DBMS que se mencionarán en esta sección cuentan con características parecidas solamente se mencionarán los apartados que sean más sobresalientes de ellos o que sean particulares de algún DBMS.

3.2.1.-MySQL

Es un sistema de gestión de base de datos relacionales teniendo dos características sobresalientes desde sus primeras versiones, la seguridad y la velocidad. También se puede mencionar que es Open Source, esto quiere decir que es posible usar y modificar el software, MYSQL se desarrolló desde un principio para tratar grandes cantidades de datos y ha demostrado su superioridad en este sentido con algunas de las soluciones comerciales que imperaban en ese momento.

Este servidor de base de datos fue escrito en C y C++, es por ello que la ejecución de él en cualquier plataforma resulta viable, además como era de esperarse de cualquier DBMS tiene compatibilidad con múltiples procesadores.
De la misma manera es empotrable con muchos lenguajes de programación mediante sus diferentes ODBC.


Soporta los siguientes elementos.

• Índices.
• Disparadores.
• Funciones.
• Procedimientos almacenados.
• Integridad referencial.
• Actualización y eliminación en cascada.
• Utilización de campos binarios.
• Administración de usuarios sobre base de datos, tablas y campos.
• Vistas.
• Explain.
• Modelo cliente – servidor.
• Etc.


3.2.2.-SQL SERVER.

Este es un sistema manejador de base de datos relacionales de la empresa Microsoft, es por ello que tiene una gran aceptación entre una cantidad importante de desarrolladores, sobretodo aquellos que acostumbran utilizar algunas de las versiones del sistema operativo Windows.

Este importante DBMS es capaz de poner a la disposición de muchos usuarios grandes cantidades de datos de forma simultánea. Además de contar con las siguientes características.

• Soporte de transacciones.
• Escalabilidad, estabilidad y seguridad.
• Soporta procedimientos almacenados.
• Entorno gráfico de administración.
• Permite trabajar bajo el modelo cliente servidor.
• Permite administrar información de otros servidores.

Aunque uno de los grandes inconvenientes de este DBMS es que no es multiplataforma, como era de esperarse viniendo de la familia de productos de Microsoft, lo cierto es que, si bien tiene este y otros aspectos negativos también heredó de esta familia el ambiente amigable e intuitivo de muchos de sus productos hermanos.

Paradójicamente “es difícil hacer algo fácil” y esto se aplica a la perfección en SQL server, ya que si bien es cierto que los diferentes ambientes que presenta Microsoft son amigables, también es cierto que es complicado obtener una aplicación robusta mientras mas amigables sea esta.

Pero solamente el análisis minucioso del proyecto para el cual se esté buscando el DBMS podrá decir cual es el que mejor se adapta a sus necesidades, por que SQL server podrá tener muchas desventajas, entre plataforma, licencias, lo que es más estar enclavado en ese sistema operativo, pero lo que si es una realidad es que los tiempos de desarrollo de un proyecto utilizando SQL server y algun lenguaje propio de Microsoft es mucho menor comparado con otra base de datos y otro lenguaje.

3.2.3.-ORACLE.

Ahora se aborda del DBMS mas utilizado en el ámbito empresarial, y no es raro que se utilice casi solamente en el ámbito empresarial ya que solo las grandes empresas tienen el poder monetario para la compra de las licencias de este DBMS, algunos expertos en la materia mencionan que cada peso lo vale. Pero para poder gozar una opinión objetiva en este sentido se tendría que conocer las características de este DBMS, es por ello que a continuación se listan.

• Soporte de transacciones.
• Estabilidad.
• Escalabilidad.
• Es multiplataforma.
• Soporta procedimientos almacenados.
• Vistas.
• Índices.
• Disparadores.
• Eliminación y actualización en cascada.
• Funciones definidas por el usuario.

Seguramente hicieron falta muchas mas características de este DBMS o las que se numeran las hace muy bien, además de esto se puede decir que Oracle allá por los años 70´s cuando aún tenía el nombre de relational software resultó como el sistema mas completo en el ámbito de base de datos, esto en un estudio técnico realizado por aquella época, lo anterior por que usaba la filosofía de base de datos relacional, algo que en esos años era todavía desconocido.

Nuevamente se llega al punto donde es importante analizar el proyecto para el cual se está buscando DBMS, para esta elección se deben de tener claros los costos, conocimientos, mantenimiento y un sin fin de puntos que tienen que ver con el DBMS, ya que en la mayoría de los proyectos las necesidades se cubren con algún producto de la competencia de este monstruo de las bases de datos.

3.3.- Seguridad.

En este apartado se mostrará la manera en que los DBMS traen implementada seguridad por default en ellos, como lo son la configuración de usuarios y administración de ellos mediante privilegios, fijación de máximo de conexiones restricciones en bases de datos y tablas etc. aunque desde luego estos elementos son muy útiles, existen otras acciones que se pueden implementar entre los usuarios de la DB y el inmueble donde se encuentra alojada ésta como lo es por ejemplo la implementación de un VPN (virtual private network) y desde luego la elaboración de manuales de procedimientos y reglamentos claros de utilización de la base de datos.

3.3.1.-Manejo de usuarios.

Como es de suponer la base de datos puede ser o será utilizada por un sin número de personas a los cuales se les llamará usuarios. Se debe de tener en cuenta que existe un diferencia abismal entre una pequeña base de datos (A) alojada en una máquina personal que almacena un directorio de amigos a una base de datos (B) donde se almacenan las finanzas de un país, este comentario se incluye ya que la lista de amigos se pudiera extraviar, borrar o dañar y no pasaría de dar al propietario de ella un mal rato, pero esto no es ni siquiera pensable en el segundo caso, es mas aún los diferentes usuarios que tendrán interacción con la base (B) deben ser identificados a la perfección, es decir, llevar un seguimiento del momento de ingreso a la BD y que actividades que realizó en ella. Es por ello que como forma de control de una base de datos se tuvo que incluir el concepto de usuarios de la base de datos.

Los motivos expuestos en el párrafo anterior dieron origen a una división de los usuarios que tienen acceso a la base de datos, esto con la finalidad de facilitar la asignación de privilegios entre ellos.

3.3.1.1.-Administrador de la base de datos

Una de las razones que se pretende con una base de datos es tener un control centralizado tanto de datos como de los programas que accedan a ella. La persona que tiene ese control se le llama administrador de base de datos, y las funciones mas importantes que tiene son las siguientes.

• Definición del esquema.
• Definición de estructura de almacenamiento y del método de acceso.
• Modificación de esquema y de organización física.
• Concesión de autorización para el acceso a datos.
• Especificación de las limitantes de integridad.

Ahora bien, si este usuario es el encargado de realizar todo lo anterior ¿ quien se encarga de realizar las operaciones comúnmente utilizadas?, se debe de tener presente que la finalidad de una base de datos es crear un ambiente propicio para escribir y leer datos, bueno esa tarea la realizan los siguiente tres
3.3.1.2.-Usuarios de la base de datos

Programadores de aplicaciones: No es difícil de describir a este usuario, es aquel que realiza aplicaciones para otros usuarios, generalmente profesionales de la computación.

Usuarios sin experiencia: son usuarios complejos que interactúan con el sistema sin escribir programas. (Mantenimiento, tanto de base de datos, regeneración, índices, auditores).

Usuarios ingenuos: usuarios poco complejos que interactúan con el sistema llamando a alguna de las aplicaciones realizadas anteriormente.

3.3.2.- Encriptación de claves de usuarios.

Antes de comenzar con la encriptación de claves de usuario se debe tener claro que tanto los nombres de usuario como las contraseñas en los diferentes DBMS no tienen nada que ver con los nombres de usuarios que se asignaron para el sistema operativo. También es necesario mencionar que los diferentes DBMS tienen diferentes características en lo que se refiere a la encriptación de las claves, es por ello que no se entrará en características particulares de cada uno de ellos.

Lo que si es homogéneo en los diferentes DBMS es que todos ellos cuentan con una tabla de acceso donde guardan la información de los usuarios y junto con los campos de usuarios y host ( máquina de donde se puede conectar este usuario) cuentan con un campo para especificar las claves de ellos, aunque en la mayoría de los casos el valor que se ingresa en este campo no corresponde a la encriptación de la clave si es la encriptación de una parámetro que se genera a partir de la clave, esto se realiza para que incluyendo los pocos usuarios que tengan acceso de lectura a esta tabla usuarios no estén en condiciones de observar dicha clave. Como se ilustra a continuación.


Imagen 8: Encriptación de claves de usuario

3.3.3.- Asignación de privilegios a usuarios.

Como se ha venido mencionando a lo largo de este capítulo, la seguridad es importante y la configuración de los privilegios en un sistema es una tarea importante que debe realizar el administrador dicho sistema, desde luego la asignación de estos se puede realizar desde una herramienta administrativa diseñada para ello, no sería conveniente mencionar cual o cuales, ya que existe una infinidad, lo que si sería útil es conocer la manera en que mediante el insertado de datos y modificación de ellos en la base de datos que tiene el DBMS para el control de ello se puede asignar y denegar privilegios a un usuario, en la imagen que se tiene a continuación se puede ver la estructura común en los DBMS que se utiliza para realizar esta tarea.


Imagen 9: Base de datos administradora de privilegios en un DBMS

En esta imagen se aprecian cuatro tablas que tienen todo el control de privilegios sobre la(s) base(s) de datos, tablas y columnas,


Tabla user.

Es aquella donde se almacena la información del usuario como lo es la clave, nombre de usuario y un campo llamado host que es donde se especifica la dirección ip o el nombre del equipo donde se puede conectar el usuario almacenado en el campo user, esta tabla tiene como llave primaria el conjunto de los campos (host,user) es decir, esto nos facilita otorgarle al mismo usuario diferentes privilegios dependiendo de donde esté conectado, los campos (select,insert,update,delete) sus valores de entrada son (‘Y’,’N’) ‘Y’ si cuenta con ese privilegio y ‘N’ si no es así.

Tabla db:

Si el DBMS tiene varias bases de datos y se requiere personalizar privilegios entre ellas y los usuarios es necesario configurar la tabla (db) ya que aparte de los campos (select,insert,update,delete,user,host) tiene un campo llamado database, en este campo es donde se tiene que especificar a cual base de datos se le están asignando los privilegios al usuario, y de qué host.

Tabla tables priv.:

Ahora, si se desea que los usuarios conectados de un host determinado puedan tener privilegios solamente a alguna base de datos en específico y a una o unas tablas, se puede realizar mediante la manipulación de esta tabla. Y permitirle que pueda tener privilegios en una tabla determinada.
Tabla columns_priv:

Pero las restricciones siguen, si se quieren personalizar los privilegios a nivel de columnas de cierta tabla, de alguna base de datos de alguna host en específico se puede hacer manipulando la tabla (columns_priv)

Jerarquisación de privilegios:

Como se ha visto en la imagen 9, en todas las tablas tiene los campos (select,insert,update,delete) y como se mencionó anteriormente estos tiene solamente dos valores de entrada ‘Y’ y ‘N’, estos valores son para permitir o denegar el privilegio de esa acción sobre las bases de datos o base de datos en específico ,tablas o columnas. Y estos elementos se manejan de manera jerárquica, es decir, si se da privilegio en la tabla (db) solamente de inserción, pero en la tabla (user) se ha asignado todos los privilegios para ese usuario, el usuario podrá realizar todas las operaciones sin problema alguno, esto es por que la tabla user tiene una jerarquía mayor que la tabla db, como la tabla db tiene mayor jerarquía que la tabla tables_priv y así sucesivamente.

3.3.4.- Asignación de privilegios basados en host.

Ahora se comenta la asignación de privilegios basados en host, para aclarar este tema se definirá como host al punto desde el cual se está conectando el usuario, es lógico pensar que los DBMS son sistemas de bases de datos que tienen todas las características necesarias para el trabajo en red, es por ello que los desarrolladores de manejadores de bases de datos han incluido en sus aplicaciones los elementos necesarios para administrar además de los privilegios, el punto desde el que pueden hacer uso de ellos, con esto se logra hacer a las bases de datos muy seguras.

Es sabido que en la actualidad muchas aplicaciones tienen acceso a una base de datos mediante Internet, y el realizar esto trae consigo una gran cantidad de posibilidades de ataque, pero sin embargo en ocasiones no queda otra alternativa, es aquí cuando los privilegios basados en host toman una gran importancia. Esto por la razón que a un usuario se le pueden asignar solamente privilegios de selección e inserción desde cualquier host y de selección, inserción, modificación y eliminación desde los equipos que se encuentren dentro de la red corporativa.

Aunque la siguiente imagen es poco estricta con las diferentes tablas que intervienen en el proceso de control de acceso de los usuarios, es muy útil para ilustrar la conveniencia de personalizar privilegios mediante el host de conexión como lo asegura el texto posterior a ella.

Imagen 10: Red corporativa e internet accesando a la base de datos

En la imagen se supone que el DBMS almacena una base de datos de una empresa en la cual los vendedores realizan pedidos a lo largo de la republica utilizando Internet, es por ello que los privilegios mínimos que se les dará al usuario (user1) en las diferentes tablas serán de selección e inserción, pero para prevenir que remotamente sean borrados o modificados los datos de las diferentes tablas nos reservamos la asignación de los privilegios de inserción y eliminación, pero en el caso de que dicho usuario llegue a estar dentro de la red corporativa si tendrá la oportunidad de modificar y eliminar sus pedidos , es por ello que en la tabla de privilegios se deja ver que en la primer columna solamente tiene habilitados las casillas de selección e inserción al estar conectado desde cualquier equipo del mundo. Pero si este usuario utiliza un equipo de la oficina entonces tendrá habilitados todos los privilegios.

En la imagen hay que destacar que el símbolo “%” permite al usuario conectarse desde cualquier nodo de la red.
[editar]

2 opiniones

MUY CLARO

ME ACLARÓ MUCHAS DUDAS, EL EJEMPLO DADO ME SIRVIÓ MUCHO, GRACIAS
Más teórico e histórico

Parece que está bien, aunque no es lo que buscaba, pues es un documento que tiene más de teoría e historia que de enseñanza y práctica.

Monografías relacionados con 'Procedimientos Almacenados MySQL 5'