Departamento de Lenguajes y Sistemas Informáticos Avda Reina Mercedes s/n. 41012 Sevilla Tlf/Fax 954 557 139 E-mail lsi@lsi.us.es www.lsi.us.es E.T.S. Ingeniería Informática Diseño de Bases de Datos SEGURIDAD (Tema 6) 1. Introducción. Es la protección de los datos contra el acceso, alteración o destrucción no autorizada. La seguridad implica controlar que los usuarios están autorizados para llevar a cabo lo que tratan de hacer. Mientras que la integridad implica asegurar que lo que tratan de hacer es correcto. La información sobre las autorizaciones de acceso a los datos estarán escritas en algún lenguaje apropiado (en nuestro caso SQL) y se mantienen en el catálogo o diccionario del sistema. El SGBD deberá supervisar que se cumplan estas restricciones de autorización. La unidad de información para propósito de seguridad (es decir el objeto de datos que pudiera requerir protección individual) puede ser desde una base de datos o conjunto de tablas completo hasta un valor específico en una posición específica de fila y columna. Un usuario puede tener diferentes derechos de acceso o autorizaciones sobre diferentes objetos de información. En SQL el sistema cuenta con dos mecanismos para el mantenimiento de la seguridad. • Las vistas. Permiten ocultar datos confidenciales a usuarios no autorizados. • Las autorizaciones. Mediante el cual usuarios con derechos específicos pueden conceder de manera selectiva y dinámica esos derechos a otros usuarios. Seguridad Página 1 de 3 2. Seguridad en SQL. El mecanismo de vistas hace posible dividir conceptualmente la base de datos en fragmentos con objeto de ocultar información. Sin embargo, no permite especificar las operaciones que los usuarios autorizados pueden ejecutar con esos fragmentos. Esta función la realizan las proposiciones GRANT (conceder) y REVOKE (revocar). Para poder realizar cualquier operación en SQL, el usuario debe contar con la autorización apropiada, en caso contrario la operación se rechazará con un mensaje de error. Por ej. para ejecutar: SELECT * FROM S; el usuario debe tener autorización de selección sobre S. Cuando se realiza la instalación de la base de datos parte del procedimiento implica la designación de un usuario con privilegios específicos como administrador del sistema (que se identificará, al igual que el resto de los usuarios, mediante un identificador de usuario). Este usuario privilegiado recibe de manera automática una autorización especial llamada SYSADM que confiere el derecho a realizar todas las operaciones del sistema. Puede crear otros usuarios y conceder las autorizaciones. La concesión de derechos se hace mediante la proposición GRANT. GRANT <derecho> ON TABLE <nombre tabla/vista> TO <nombre de usuario> Algunos ejemplos: GRANT SELECT ON TABLE tabla1 TO usuario1 GRANT SELECT ON TABLE tabla1 TO public GRANT SELECT, UPDATE (columna1, columna2,..) ON TABLE tabla1 TO usuario1, usuario2,.. GRANT ALL ON TABLE tabla1 TO usuario1 Seguridad Página 2 de 3 En general, las autorizaciones aplicables a tablas son: Autorización SELECT UPDATE DELETE INSERT ALTER INDEX CONNECT RESOURCE ALL Seleccionar Actualizar Eliminar Insertar Derecho a ejecutar ALTER TABLE Derecho a ejecutar CREATE INDEX Conectarse a la Base de Datos Crear objetos Todos los permisos Especificando WITH GRANT OPTION en la proposición GRANT, es posible que dicho usuario pueda ceder el permiso a otro usuario. GRANT <derecho> ON TABLE <nombre tabla/vista> TO <nombre de usuario> WITH GRANT OPTION Para revocar las autorizaciones se utiliza la proposición REVOKE. REVOKE <derecho> ON TABLE <nombre tabla/vista> FROM <nombre de usuario> Seguridad Página 3 de 3