Universidad Nacional de Costa Rica Administración de Bases de Datos Seguridad en la base de datos Para más información visite: http://www.slinfo.una.ac.cr Autor: Steven Brenes Chavarría Email: sbrenesms@gmail.com Fecha: 18/8/2012 INTRODUCCIÓN La seguridad de las bases de datos es importante para evitar la fuga de información de la empresa, además, de lograr una razonable estabilidad de la información y prevenir futuros accesos no autorizados que interrumpan el flujo normal de la empresa. Este tema abarca los siguientes puntos: Seguridad de accesos. Seguridad de usuarios. SEGURIDAD DE ACCESOS La seguridad de accesos se refiere al nivel de seguridad de los datos almacenados en la Base de Datos para evitar alguna alteración de la información. La política de toda empresa con respecto a la seguridad de accesos deberá contemplar los siguientes ítems: 1. La información almacenada en la Base de Dato deberá recibir un apropiado nivel de protección. 2. La información se deberá categorizar para así obtener su frecuencia de uso y grado de protección que deberá tener. 3. Se deberá crear un sistema para clasificar la información para así definir apropiadamente su nivel de protección. La siguiente tabla se muestra algunos criterios para esta clasificación: Criterios Criterio Código Descripción Datos personales DP Existencia de datos que son personales y que no deben divulgarse Variabilidad VP Existirán datos que cambien poco o existe relativamente, un gran lapso de tiempo antes de que se lleguen a modificar, y a estos habrá que darles un tratamiento especial Confidencialidad CD Existencia de datos que deben permanecer secretos en la organización Datos Financieros Son datos sobre estados financieros que no deben ser divulgados DF Los niveles de protección deberán de contemplar las necesidades de la empresa Los informes extraídos de la Base de Datos como por ejemplo reportes deberán ser clasificados según su valor y grado de accesibilidad. Por último se deberán crear usuarios y roles para que accedan a la información clasificada, esto se detallará en el tema siguiente. SEGURIDAD DE ACCESOS La seguridad de usuarios es usada para darles privilegios a los distintos usuarios de una base de datos. Estos privilegios serán para ejecutar sentencias SQL, alterar el funcionamiento de la Base de Datos o para alterar la estructura física de la Base de Datos. Deberá de existir una política definida para la seguridad de usuarios y accesos de estos a la Base de Datos. Se deberá crear horarios de acceso para los diferentes usuarios y así registrar todo acceso no autorizado o fuera de horario que los usuarios tengan a la Base de Datos. Se deberán de crear roles para los distintos usuarios de la Base de Datos, clasificarlos y catalogarlos, para su correcta asignación a los usuarios. Se deberá realizar las siguientes actividades o procesos: 1. Crear un usuario: Toda administración de bases de datos requerirá la creación de usuarios para tener acceso a la información 2. Eliminar o inactivar un usuario: Cuando un usuario deja de ser necesario, este deberá ser inactivado o eliminado, para evitar el acceso a la información dentro de la Base de Datos. 3. Modificar un perfil 4. Dar privilegios a un usuario: para que un usuario pueda trabajar sobre diversas tablas, vistas, procedimientos y demás elementos de la Base de Datos, este deberá de poseer privilegios para poder tener acceso a estos elementos. 5. Quitar privilegios a un usuario: Con el transcurrir del tiempo, un usuario puede perder privilegios sobre elementos dentro de la base de datos, y estos deberán ser eliminados de inmediato. 6. Crear Roles: Al manejar varios usuarios, e incontable número de privilegios que este puede llegar a tener, es útil manejar roles; así, podremos dar los mismos privilegios a distintos usuarios que cumplen con el mismo rol. 7. Modificar Roles: Un rol también puede ganar o perder privilegios a lo largo de su vida útil. 8. Eliminar Roles o inactivarse: Cuando un rol deja de ser útil, este debe de eliminarse. 9. Asignar roles a un Usuario o a un role: Una vez creado algún rol, este no será útil hasta que se le asigne a algún usuario. Crear un usuario CREATE USER NOMBRE_USUARIO IDENTIFIED BY CLAVE_ACCESO [password expire] [DEFAULT TABLESPACE ESPACIO_TABLA] [TEMPORARY TABLESPACE ESPACIO_TABLA] [QUOTA {ENTERO {K | M} | UNLIMITED } ON ESPACIO_TABLA]; DEFAULT TABLESPACE= Asigna a un usuario el tablespace por defecto para almacenar los objetos que cree. Si no se asigna ninguno, el tablespace por defecto es SYSTEM. TEMPORARY TABLESPACE= Especifica el nombre del tablespace para trabajar temporales. Si no se especifica ninguno, el tablespace por defecto es SYSTEM. QUOTA= Asigna un espacio en megabites o kilobites en el tablespace asignado. Si no se especifica esta cláusula, el usuario no tiene cuota asignada y no podrá crear objetos en el tablespace. Eliminar un usuario La eliminación consiste en el borrado los usuarios, sus permisos y sus datos. La sentencia es: DROP USER <usuario> [CASCADE] Dar quitar privilegios de usuarios para objetos Para darle privilegios a los usuarios es necesario ejecutar la siguiente consulta: {GRANT | REVOKE} PRIVILEGES ON OBJECT TO USERNAME; Privilegios sobre objetos ALTER EXECUTE INDEX INSERT READ REFERENCES SELECT UPDATE ALL ó ALL PRIVILEGES Dar y quitar privilegios de usuarios sobre el sistema Para darle privilegios a los usuarios es necesario ejecutar la siguiente consulta: {GRANT | REVOKE} PRIVILEGES TO USERNAME; Privilegios del sistema CREATE ANY SYNONYM DROP ANY ROLE ALTER ANY CLUSTER CREATE ANY TABLE DROP ANY SEQUENCE ALTER ANY INDEX CREATE ANY TRIGGER DROP ANY SNAPSHOT ALTER ANY PROCEDURE CREATE ANY TYPE DROP ANY SYNONYM ALTER ANY ROLE CREATE ANY VIEW DROP ANY TABLE ALTER ANY SEQUENCE CREATE CLUSTER DROP ANY TRIGGER ALTER ANY SNAPSHOT CREATE DATABASE LINK DROP ANY TYPE ALTER ANY TABLE CREATE ANY LIBRARY DROP ANY VIEW ALTER ANY TYPE CREATE PROCEDURE DROP LIBRARY ALTER ANY TRIGGER CREATE PROFILE DROP PROFILE ALTER DATABASE CREATE PUBLIC DATABASE LINK DROP PUBLIC DATABASE LINK CREATE PUBLIC SYNONYM DROP PUBLIC SYNONYM CREATE ROLE DROP ROLLBACK SEGMENT ALTER SESSION CREATE ROLLBACK SEGMENT DROP TABLESPACE ALTER SYSTEM CREATE SEQUENCE ALTER TABLESPACE CREATE SESSION ALTER USER CREATE SNAPSHOT ANALYZE ANY CREATE SYNONYM AUDIT ANY CREATE TABLE AUDIT SYSTEM CREATE TABLESPACE BACKUP ANY TABLE CREATE TRIGGER BECOME USER CREATE TYPE COMMENT ANY TABLE CREATE USER CREATE ANY CLUSTER CREATE VIEW CREATE ANY DIRECTORY DELETE ANY TABLE CREATE ANY INDEX DROP ANY CLUSTER CREATE ANY LIBRARY DROP ANY DIRECTORY CREATE ANY PROCEDURE DROP ANY INDEX CREATE ANY SEQUENCE DROP ANY LIBRARY CREATE ANY SNAPSHOT DROP ANY PROCEDURE ALTER PROFILE ALTER RESOURCE COST ALTER ROLLBACK SEGMENT DROP USER EXECUTE ANY PROCEDURE EXECUTE ANY TYPE FORCE ANY TRANSACTION FORCE TRANSACTION GRANT ANY PRIVILEGE GRANT ANY ROLE INSERT ANY TABLE LOCK ANY TABLE MANAGE TABLESPACE RESTRICTED SESSION SELECT ANY SEQUENCE SELECT ANY TABLE SYSDBA SYSOPER UNLIMITED TABLESPACE UPDATE ANY TABLE ROLES Los roles son un conjunto de privilegios, asignables a un usuario. Roles Predefinidos por Oracle (select * from dba_roles;) CONNECT RESOURCE DBA EXP_FULL_DATABASE IMP_FULL_DATABASE DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE SELECT_CATALOG_ROLE Se puede operar cualquiera de las siguientes instrucciones de Oracle: CREATE ROLE (crear) ALTER ROLE (modificar) DROP ROLE (borrar) SET ROLE (activar, desactivar) GRANT (conceder un permiso o un rol a un rol) REVOKE (denegar un permiso o un rol a un rol) Ejemplo de algunas consultas: CREATE ROLE administrador; GRANT all_privileges TO administrador; GRANT administrador TO steven_user; SET ROLE administrador; PRACTICA 1. 2. 3. 4. 5. 6. 7. Convertir a scott en DBA Crear un usuario llamado PRUEBA1 y darle únicamente el permiso para conectarse Dar al usuario PRUEBA1 permiso para crear tablas Desde SCOTT, dar al usuario PRUEBA1 el permiso de consultar la tabla EMP Desde SCOTT, dar al usuario PRUEBA1 el permiso de insertar en la tabla EMP Desde SYSTEM, dar al usuario PRUEBA1 el permiso de crear otros usuarios Desde SYSTEM, dar al usuario PRUEBA1 el permiso de crear otros usuarios (por ejemplo, PRUEBA2) de forma que estos, a su vez, puedan crear otros usuarios (por ejemplo, PRUEBA3) OTROS TEMAS DE SEGURIDAD 1. Control de seguridad utilizando vistas 2. Control de seguridad utilizando Mantadory Access Control 3. Grafos de seguridad (option with grant option)