Universidad Nacional de Costa Rica Administración de Bases de

Anuncio
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)
Descargar