BASE DE DATOS II

TEMA

SEGURIDAD

MODULO

02
Elaborado por:

Dr. Manuel Jesús Sánchez Chero
Profesor del Curso

TEMA

14

Material Didáctico para uso exclusivo en clase

 Conocer el proceso de validación de usuarios. a otros sólo se les debería permitir recuperar datos.  Conocer los identificadores de Usuarios. Los requerimientos de seguridad de una base de datos de producción típica son muchos y muy variados:  Los datos de cualquier tabla dada deberían ser accesibles a algunos usuarios. el acceso debería estar restringido en base a las columnas.  Algunos usuarios deberían tener denegado el acceso mediante SQL interactivo a una tabla. Dr. La seguridad es especialmente importante en un DBMS basado en SQL. puesto que SQL interactivo hace el acceso a la base de datos muy sencillo.  Conceder privilegios a usuarios.  Algunos usuarios deberían tener permitido actualizar datos en una tabla particular.Tema 4 SEGURIDAD Objetivos Al finalizar este capítulo. pero se les debería permitir programas de aplicación que actualicen la tabla. el participante aprenderá a:  Conocer que es un esquema de seguridad. la seguridad de los datos almacenados es una preocupación primordial.  Para algunas tablas. Manuel Jesús Sánchez Chero Página 2 de 14 . pero el acceso a otros debería ser impedido. SEGURIDAD SQL Cuando alguien confía sus datos a un sistema de gestión de base de datos.

El esquema de seguridad SQL se basa en tres conceptos principales:  Los Usuarios. El DBMS permitirá o prohibirá la acción dependiendo de qué usuario esté efectuando la petición. son las acciones que un usuario tiene permitido efectuar para un determinado objeto de la base de datos. para especificar que usuario tienen que privilegios sobre los objetos de la base de datos. La seguridad se aplica generalmente a las tablas y bases de datos enteras también pueden ser protegidos. La mayoría de los usuarios tendrán permiso para utilizar ciertos objetos de la base de datos. Para establecer un esquema de seguridad en una base de datos se utiliza la sentencia SQL GRANT. Un usuario diferente puede tener un conjunto diferente de privilegios. son los elementos a los cuales se puede aplicar la protección de seguridad SQL. son los actores de la base de datos. suprime o actualiza los datos. El lenguaje SQL define un panorama general para la seguridad de la base de datos. CONCEPTO DE SEGURIDAD La implementación de un esquema de seguridad y el reforzamiento de las restricciones de seguridad son responsabilidad del software DBMS. pero puede carecer de permiso para utilizar DELETE o UPDATE filas de una tabla. Cada vez que el DBMS recupera. inserta. Un usuario puede tener permiso para SELECT e INSERT sobre filas en una tabla determinada.  Los Privilegios. y las sentencias SQL se utilizan para especificar restricciones de seguridad. lo hace a cuenta de algún usuario.El esquema de seguridad SQL. proporciona estos tipos de protección para datos en una base de datos relacional. La Figura muestra cómo podrían ser utilizados estos conceptos de seguridad en un esquema de seguridad para la base de datos. Dr. Manuel Jesús Sánchez Chero Página 3 de 14 . pero tendrán prohibido el uso de otros.  Los Objetos de la base de datos.

Manuel Jesús Sánchez Chero Página 4 de 14 . En DB2 por ejemplo los idusuarios no pueden tener más de ochos caracteres. pero muchos productos DBMS comerciales tienen diferentes restricciones. El id-usuario se encuentra en el núcleo de la seguridad SQL. El id-usuario determina si la sentencia va a ser permitida o prohibida por el DBMS. Toda sentencia SQL ejecutada por el DBMS se lleva a cabo a cuenta de un id-usuario específico. En una base de datos de producción los id-usuarios son asignados por el administrador.ESQUEMA DE SEGURIDAD PARA UNA BASE DE DATOS IDENTIFICADORES DE USUARIO (ID-USUARIO) Cada usuario de una base de datos en SQL tiene asignado un id-usuario. un nombre breve que lo identifica al usuario dentro del software DBMS. que identifica al usuario que ha creado y que tiene la propiedad de la base de datos. En una base de datos puede haber únicamente un solo id-usuario. El estándar SQL ANSI/ISO permite que los id-usuarios tengan hasta 18 caracteres y requiere que sean nombres SQL válidos. En SYBASE los id-usuarios Dr.

pero no dice nada con respecto al mecanismo de asociar Dr. Manuel Jesús Sánchez Chero Página 5 de 14 . sin embargo la práctica más común es asignar un id-usuario diferente a cada persona. VALIDACION DE USUARIO El estándar SQL ANSI/ISO especifica que los id-usuarios proporciona seguridad en la base de datos. En la siguiente figura muestra a varios usuarios que necesitan acceso a la base de datos. por eso es mejor limitar los id-usuarios en ocho o menos caracteres. ASIGNACIONES DE ID-USUARIOS PARA LA BASE DE DATOS El estándar SQL ANSI/ISO utiliza el término id-autorización en vez de id-usuario y usted encontrará ocasionalmente este término utilizado en otra documentación SQL. Técnicamente id-autorización es un término más preciso.pueden tener hasta 30 caracteres. Existen situaciones como observa en la figura varios usuarios usan el mismo id-usuario como es el caso del Dpto. puesto que el papel de la identificación (id) es determinar la autorización o privilegio en la base de datos. de Procesado de Pedidos.

Algunos productos DBMS implementan su propia seguridad por ejemplo cuando se utiliza MYSQL hay que especificar un nombre de usuario y la contraseña asociada en la orden que arráncale programa. En SQL Interactivo. Manuel Jesús Sánchez Chero Página 6 de 14 . cuando se escriben sentencias SQL en una utilidad ¿Cómo determina el DBMS qué el id-usuario está asociado con las sentencias? La mayoría de las implementaciones SQL comerciales establecen un id-usuario para cada sesión de base de datos. la sesión comienza cuando arranca el programa el programa SQL interactivo y dura hasta que se abandona el programa. Todas las sentencias SQL utilizadas durante la sesión están asociadas con el id-usuario especificado para la sesión. en efecto autoriza a utilizar el id-usuario que suministra. Generalmente debe suministrarse tanto un id-usuario como una contraseña asociada al comienzo de una sesión.un id-usuario con una sentencia SQL. El DBMS comprueba la contraseña para verificar que el usuario está. Conectarse al MYSQL en modo texto [root@pnichiclayo /]# mysql -u root –p Dr. Por ejemplo.

Commands end with . El estándar SQL ANSI/ISO especifica 4 privilegios para tablas Dr. or \g. Type ‘\c’ to clear the buffer.Enter password:****** Welcome to the MySQL monitor.23. Manuel Jesús Sánchez Chero Página 7 de 14 .’ or ‘\h’ for help. Your MySQL connection id is 3 to server version: 3. mysql> Conectarse al MYSQL en modo gráfico PRIVILEGIOS El conjunto de acciones que un usuario puede efectuar sobre un objeto de una base de datos se denomina los privilegios para el objeto.41 Type ‘help.

Manuel Jesús Sánchez Chero Página 8 de 14 . Un usuario con el privilegio ALTER sobre una tabla particular puede utilizar la sentencia ALTER TABLE para modificar la definición de una tabla. Dr. Estos 4 privilegios son soportados por virtualmente todos los productos SQL comerciales.  El privilegio INSERT permite insertar nuevas filas en una tabla.  El privilegio UPDATE permite modificar filas en una tabla. Muchos DBMS comerciales ofrecen privilegios adicionales sobre las tablas por ejemplo MYSQL soporta un privilegio ALTER y INDEX para las tablas. un usuario con el privilegio INDEX puede crear un índice para la tabla con la sentencia CREATE INDEX.  El privilegio DELETE permite eliminar filas en una tabla. permitiendo actualizaciones de estas columnas. se puede especificar la tabla en la cláusula from de una sentencia SELECT. con este privilegio se puede especificar la tabla en la cláusula FROM de una sentencia DELETE. pero desautorizando actualizaciones a otras columnas. El privilegio SELECT permite recuperar datos de una tabla. con este privilegio. con este privilegio se puede especificar la tabla en la cláusula INTO de una sentencia INSERT. El privilegio UPDATE puede restringirse a columnas especificas de la tabla. con este privilegio se puede especificar la tabla como tabla destino en una sentencia UPDATE.

 Create_priv. Permite parar el servidor mediante mysqladmin shutdown. Permite utilizar la sentencia SELECT.DESCRIPCIÓN DE LOS DIFERENTES PRIVILEGIOS DEL SERVIDOR MYSQL  Select_priv. Permite utilizar la sentencia DROP. Permite utilizar la sentencia CREATE  Drop_priv.  Delete_priv.  Process_priv. Permite utilizar la sentencia DELETE. Permite utilizar la sentencia INSERT. Permite recargar el sistema mediante mysqladmin reload. Manuel Jesús Sánchez Chero Página 9 de 14 .  Shutdown_priv.  Insert_priv.  Reload_priv. Dr. permite utilizar la sentencia UPDATE.  Update_priv. Permite manejar procesos del servidor.

 Alter_priv. Sintaxis GRANT { ALL [ PRIVILEGES ] | permisos [ .  Grant_priv.. Permite leer y escribir ficheros usando comando como SELECT INTO OUTFILE Y LOAD DATA INFILE.n ] } { [ ( column [ . Permite otorgar permisos a otros usuarios. Permiso Dr..  Index_priv.n ] ) ] ON { basededatos } TO cuenta-usuario [ WITH GRANT OPTION ] Argumentos ALL Especifica que se conceden todos los permisos aplicables. Permite crear o borrar indices. Manuel Jesús Sánchez Chero Página 10 de 14 . File_priv.. GRANT Crea una entrada en el sistema de seguridad que permite a un usuario de la base de datos actual trabajar con datos de la base de datos actual o ejecutar instrucciones SQL específicas.. Permite utilizar la sentencia ALTER TABLE.. PRIVILEGES Es una palabra clave opcional que se puede incluir para cumplir con SQL-92..

La cláusula WITH GRANT OPTION sólo es válida con los permisos de objeto. los permisos se aplican a todas las columnas de la tabla. n Marcador de posición que indica que el elemento se puede repetir en una lista separada por comas. Si no se suministra una lista de columnas con los permisos SELECT y UPDATE. DELETE. Cuando se conceden permisos sobre una tabla. la lista de permisos puede incluir uno o más de los siguientes permisos: SELECT. basededatos Es el nombre de la a base de datos sobre la que se conceden los permisos Cuenta-usuario Es la cuenta de seguridad a la que se aplican los permisos. Ejemplos  Crea un usuario demostración y le concede todo los permisos a todas la base de datos GRANT ALL PRIVILEGES ON *. INSERT.Se trata de un permiso de objeto que se concede. Es posible suministrar una lista de columnas junto con los permisos SELECT y UPDATE. Manuel Jesús Sánchez Chero Página 11 de 14 . una función de valores de tabla.* TO 'demostracion'@'%' Dr. column Es el nombre de la columna de la base de datos actual sobre la que se conceden los permisos. REFERENCES o UPDATE. WITH GRANT OPTION Especifica que se concede a cuenta-usuario la capacidad de conceder el permiso de objeto especificado a otras cuentas de seguridad.

update. Update. Sobre la base de datos empresa. delet. Alter. GRANT Select ON empresa. index. Alter.ubigeo TO 'yaisa'@'%' Dr. References ON empresa. Index. Manuel Jesús Sánchez Chero Página 12 de 14 . GRANT Select. insert. En este ejemplo de crea un usuario yaisa y su contraseña karime y se le concede los permisos de select.* TO 'yaisa'@'%' IDENTIFIED BY 'karime'  en este ejemplo al usuario yaisa se le da el permiso de select sobre la tabla ubigeo de la base de datos empresa. Delete. Drop. create y Drop. Create. Insert.

 En este ejemplo se puede apreciar gráficamente que el usuario yaisa tiene el permiso de UPDATE sobre la columna SUELDO de la tabla persona de la base de datos empresa (última fila del gráfico). Dr. Manuel Jesús Sánchez Chero Página 13 de 14 .

¿Cuáles son los privilegios que especifica el estándar SQL ANSI/ISO? PRACTICA N° 4 Utilizando la base de datos EMPRESA dar los siguientes permisos a los Usuarios: Dr. Manuel Jesús Sánchez Chero Página 14 de 14 . 8. 6. 5.Preguntas de repaso 1. 7. 2. ¿Qué es seguridad? ¿Qué es permiso? ¿Qué son usuarios de base de datos? ¿Qué entiende usted por validación de Usuarios? ¿Qué utilidad tiene la sentencia GRANT? ¿Qué es para usted DBMS? ¿Menciones algunos Manejadores de Base de Datos que usted conoces? ¿Cuáles son los tipos de privilegios que tiene el servidor de base de datos MYSQL? 9. 4. 3.