DBDD - Clase 6 - Seguridad BDD

45
SEGURIDAD DISEÑO DE BASE DE DATOS

Transcript of DBDD - Clase 6 - Seguridad BDD

Page 1: DBDD - Clase 6 - Seguridad BDD

SEGURIDAD

DISEÑO DE BASE DE DATOS

Page 2: DBDD - Clase 6 - Seguridad BDD

introducciónSeguridad: Protección de los datos contra su

revelación, su alteración o su destrucción no autorizadas.

Proteger los datos ante usuarios no autorizados.

Integridad: La precisión o validez de los datos. Proteger los datos de usuarios

autorizados.

Page 3: DBDD - Clase 6 - Seguridad BDD

Consideraciones generales

Aspectos sobre el problema de la seguridad:

■ Aspectos legales, sociales y éticos ■ Controles físicos■ Cuestiones de política■ Problemas operacionales ■ Controles de hardware■ Soporte del sistema operativo ■ Los asuntos concernientes únicamente al

sistema de base de datos

Page 4: DBDD - Clase 6 - Seguridad BDD

Control de acceso

Enfoques: Control de acceso discrecional. Control de acceso obligatorio.

Page 5: DBDD - Clase 6 - Seguridad BDD

Control de acceso discrecional

Un usuario específico tendrá generalmente diferentes derechos de acceso (también conocidos como privilegios) sobre diferentes objetos.

Garantiza privilegios a usuarios, incluyendo la capacidad para acceder archivos de datos específicos, registros o campos para operar de una manera determinada (read, insert, delete, o update).

Page 6: DBDD - Clase 6 - Seguridad BDD

Control de acceso discrecional

GRANT SCHEMA NombreEsqBD AUTHORIZATION usuario;GRANT privilegios ON objeto TO usuarios [WITH GRANT OPTION]REVOKE [GRANT OPTION FOR] privilegio ON objeto FROM

usuarios{CASCADE | RESTRICT}

Privilegios a asignar: SELECT – para leer todas las columnas (incluyendo las que se añadan

con ALTER TABLE) DELETE – para remover datos INSERT (columna/s) – para incorporar nuevas tuplas con valores no

nulos (o no default) en esa/s columna/s. INSERT ídem para todas las columnas. UPDATE – análogo a INSERT para modificar datos existentes REFERENCES (columna) - para definir : foreign keys (en otras tablas)

que referencien a esta columna. Sólo el propietario puede ejecutar CREATE, ALTER, y DROP.

Page 7: DBDD - Clase 6 - Seguridad BDD

Control de acceso discrecional

WITH GRANT OPTION:permite que el poseedor de ciertos

privilegios pueda transmitirlos a otros usuarios.

Usuario puede ser un ‘username’ o PUBLICPUBLIC los privilegios se asignan a todos

(ej. GRANT SELECT ON ListaAlumnos TO PUBLIC;)

Page 8: DBDD - Clase 6 - Seguridad BDD

Control de acceso discrecional• GRANT INSERT, SELECT ON Atletas TO Byron Byron puede insertar y seleccionar tuplas de Atletas• GRANT DELETE ON Atletas TO Entrenador WITH GRANT

OPTIONEntrenador puede borrar tuplas de Atletas y autorizar borrados a otros usuarios.

• GRANT UPDATE (categoría) ON Atletas TO OrganizadorOrganizador puede actualizar solamente la categoría en las tuplas de Atletas.

• GRANT SELECT ON VistaAtletasVeteranos TO Josué, Brandon, AliceJosué, Brandon y Alice NO pueden consultar directamente la tabla Atletas

•REVOKE: Cuando un privilegio le es revocado al usuarioX, también le es revocado a los que lo obtuvieron solamente de usuarioX.

Page 9: DBDD - Clase 6 - Seguridad BDD

Control de acceso discrecionalREVOKE:

José: GRANT SELECT ON Atletas TO Martin WITH GRANT OPTION

Martín: GRANT SELECT ON Atletas TO Juan WITH GRANT OPTION

José: REVOKE SELECT ON Atletas FROM Martin CASCADE

CASCADE vs RESTRICT:

• CASCADE: Todos los privilegios ‘colgados’ también son revocados

• RESTRICT: El comando REVOKE es rechazado si produce privilegios ‘colgados’.

Page 10: DBDD - Clase 6 - Seguridad BDD

Control de acceso obligatorio Cada objeto de datos está etiquetado con un

nivel de clasificación determinado y a cada usuario se le da un nivel de acreditación.

Un objeto de datos específico sólo puede ser accedido por los usuarios que tengan el nivel de acreditación adecuado.

Los esquemas obligatorios tienden a ser jerárquicos por naturaleza

Page 11: DBDD - Clase 6 - Seguridad BDD

Control de acceso obligatorio

Clasifica usuarios y datos en múltiples

niveles de seguridad, y luego fuerza determinadas reglas acordes a cada nivel.

Page 12: DBDD - Clase 6 - Seguridad BDD

Control de acceso obligatorioModelo Bell-LaPadula:

Objetos (tablas, vistas, tuplas)Sujetos (usuarios, programas de usuario)

Clases de Seguridad:Top secret (TS), secret (S), confidential (C), unclassified (U)

TS > S> C > UCada objeto y sujeto tiene asignada una clase.El Sujeto S puede leer el objeto O sólo si clase(S) >= clase(O)

(Propiedad de Seguridad Simple)El Sujeto S puede escribir el objeto O sólo siclase(S) <= clase(O) (Propiedad *) "no read up, no write

down"

Page 13: DBDD - Clase 6 - Seguridad BDD

Control de acceso obligatorioRelaciones Multinivel

• Usuarios con permisos S y TS pueden ver ambas filas; si tiene permiso C sólo ve la primera y si tiene permiso U no ve ninguna.

• Si un usuario con permiso C trata de insertar <101, Azul, Silla, C>:

• Si se permite, viola la restricción de clave• Si no se permite, el usuario entiende que hay otro objeto con

clave 101 que tiene clase > C!• Problema resuelto si la clase se ve como parte de la clave.

Id_Objeto Color Nobre_Obj Clase

102 Café Pintura C

101 Rojo Mesa S

Page 14: DBDD - Clase 6 - Seguridad BDD

Control de Acceso basado en Roles

El acceso obligatorio o mandatorio es rígido porque hay que asignar permisos de una determinada clase a cada objeto y sujeto.

En el mundo real, los privilegios de acceso están asociados con el rol de una persona en la organización.

Cada rol debe ser creado con determinados privilegios.

Cada usuario es asociado a un rol.

Page 15: DBDD - Clase 6 - Seguridad BDD

Reglas de autorización

Las actividades de creación y mantenimiento de logins y usuarios de las bases de datos se

reparten entre: System Security Officer (SSO) System Administrator (SA) DataBase Owner (DBO).

Page 16: DBDD - Clase 6 - Seguridad BDD

Usuarios La síntesis del proceso de agregar nuevos usuarios

consta de los siguientes pasos:

1. El SSO crea una cuenta para el login al DBMS.

2. Un SA o DBO agrega un usuario; para el login creado; a una base de datos. Se puede dar al usuario un alias o asignarlo a un grupo de usuarios.

3. Un SA, DBO o propietario del objeto concede al/os usuario/s o grupo específico los permisos sobre comandos u objetos de la/s base/s de datos.

Page 17: DBDD - Clase 6 - Seguridad BDD

Usuarios• Crear logins para el DBMSSA o SSO.Procedimiento addlogin.Se agrega una fila a la tabla de sistema syslogins.

(uid) identificador de usuario.

• Crear usuario de la base de datosProcedimiento adduser.El usuario debe existir como login del DBMS.Se agrega una fila en la tabla sysusers quepertenece a la base de datos corriente.

Page 18: DBDD - Clase 6 - Seguridad BDD

Procedimientos estándar para administración de usuarios

Page 19: DBDD - Clase 6 - Seguridad BDD

PROCEDIMIENTOS ESTÁNDAR PARA ADMINISTRACIÓN DE USUARIOS

Page 20: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos

Para poder asignar autorizaciones,

primero tenemos que identificar exactamente cuál es la información importante en las empresas. Ese es el propósito de la clasificación de datos.

Page 21: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos

Beneficios: Ayuda a realizar análisis de riesgos. Facilita la planeación estratégica para la

protección de datos. Facilita deslindar responsabilidades. Concientiza a los empleados sobre el

valor de la información.  Facilita el cumplimiento con estándares y

legislaciones. (ISO/IEC 27001, SOX, Cobit, Itil) Facilita la respuesta a incidentes.

Page 22: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos

Niveles de Clasificación: Secreto: Información sensible que típicamente sólo el Director

de la empresa y sus colaboradores cercanos conocen: planes de inversiones, adquisiciones, fusiones o restructuraciones, manejo de asuntos legales, estrategias de negociación con el sindicato, etc.

Confidencial: Información que representa una ventaja

competitiva para la Empresa, y que típicamente sólo los Directores ejecutivos o un selecto grupo de individuos en cada área tienen acceso.

Page 23: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos (Cont. Niveles) Restringido: Datos operacionales de cada área, en los cuales sólo

el personal adscrito a esa área específica debe tener acceso: documentos de Finanzas, Contabilidad, Recursos Humanos, Tecnologías de Información, etc.

Interno: Documentos de interés general para todos los

empleados, sin importar adscripción. Público: Cualquier documento que se pueda

difundir libremente al exterior de la empresa

Page 24: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos (ejemplo)

Page 25: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos

Es importante tener claro en la empresa que personas pertenecen a cada uno de estos niveles.

La idea básica es que cada objeto de datos tiene un nivel de clasificación y cada usuario tiene un nivel de acreditación (con las mismas posibilidades que tienen los niveles de clasificación)

Page 26: DBDD - Clase 6 - Seguridad BDD

Clasificación de datos

Se imponen las siguientes reglas que se deben a Bell y La Padula:

1. El usuario ¡ puede recuperar el objeto j sólo si el nivel de acreditación de i es mayor o igual al nivel de clasificación de j (la "propiedad de seguridad simple")

2. El usuario i puede actualizar el objeto j sólo si el nivel de acreditación de í es igual al nivel de clasificación de j (la "propiedad de estrella").

Page 27: DBDD - Clase 6 - Seguridad BDD

Cifrado de datos Es posible que todas las precauciones que

tomemos para evitar el acceso sin autorización no sean suficientes para proteger los datos muy importantes.

En estos casos, la información puede cifrarse.

No es posible leer datos cifrados a menos que el lector sepa cómo descifrar la información.

Page 28: DBDD - Clase 6 - Seguridad BDD

Cifrado de datos

Partes de un sistema criptografico:•Un mensaje M que debe almacenarse o

transportarse.•Un criptograma C•Un conjunto de claves I•Un conjunto de reglas de encriptamiento•Un conjunto de reglas de

desencriptamiento

Page 29: DBDD - Clase 6 - Seguridad BDD

Cifrado de datos

Algoritmo de transposición columnar:

Considerar el mensaje: Ser o no ser; he ahí

la cuestión y se desea utilizar una matriz de

n x 5. En ese caso, dicha oración queda ubicada

de la siguiente forma.

Page 30: DBDD - Clase 6 - Seguridad BDD

Cifrado de datos

Así el criptograma seria el siguiente:see uó enr len ro, aas h t oshíci

Page 31: DBDD - Clase 6 - Seguridad BDD

Seguridad sql

Page 32: DBDD - Clase 6 - Seguridad BDD

CREACIÓN DE USUARIOS:

Para crear un usuario utilizamos la sentencia CREATE USER. Cuando se crea una cuenta como mínimo se tiene que asignar un único nombre (username) y una contraseña para poder autenticarse.

Para cambiar alguno de los atributos que se le ha añadido al usuario creado se utiliza la sentencia ALTER USER.

Page 33: DBDD - Clase 6 - Seguridad BDD

AUTENTICACIÓN ORACLE

Cuando uno se conecta con una instancia de una base de datos la cuenta de usuario debe de estar autenticada.

ORACLE provee tres métodos de autenticación para nuestra cuenta de usuario.

AUTENTICACIÓN MEDIANTE PASSWORD AUTENTICACIÓN EXTERNA AUTENTICACIÓN GLOBAL

Page 34: DBDD - Clase 6 - Seguridad BDD

AUTENTICACIÓN ORACLE

AUTENTICACIÓN MEDIANTE PASSWORD:

Cuando un usuario conecta con una base de datos verifica que este usuario y la contraseña introducida almacenada en la base de datos, sea correcta. Las contraseñas se guardan encriptadas en la base de datos (en el data dictionary).

SQL > CREATE USER byron IDENTIFIED BY b12z321;

En este caso b12z321 es la contraseña de byron que será guardada encriptada en la base de datos.

Page 35: DBDD - Clase 6 - Seguridad BDD

AUTENTICACIÓN ORACLE

AUTENTICACIÓN EXTERNA: Cuando un usuario conecta con la base de datos se

verifica que el nombre de usuario es el mismo que el nombre de usuario del sistema operativo para permitir la validación.

No se almacenan las cuentas en la base de datos de ninguna forma. Estas cuentas están siempre referidas con OPS$ .A partir de la versión 10g se puede configurar OS_AUTHENT_PREFIX en el spfile

SQL > CREATE USER ops$byron IDENTIFIED BY b12z321;

Mediante IDENTIFIED EXTERNALLY decimos a la base de datos que nuestra cuenta es externa y tiene que ser validada con el sistema operativo.

Page 36: DBDD - Clase 6 - Seguridad BDD

AUTENTICACIÓN ORACLEAUTENTICACIÓN GLOBAL: Cuando un usuario se conecta con la base de datos se

verifica globalmente cuando la información pasa por una opción avanzada de seguridad

( ADVANCED SECURITY OPTION ) para la autenticación tal como Kerberos, RADIUS ....

Para las cuentas globales no se almacena tampoco nada en la base de datos.

SQL > CREATE USER byron IDENTIFIED GLOBALLY AS ‘CN=alumnos,OU=campus .......’

Mediante IDENTIFIED GLOBALLY decimos a la base de datos que nuestra cuenta se autentica globalmente, mediante otra opción de seguridad avanzada.

Page 37: DBDD - Clase 6 - Seguridad BDD

ASIGNACIONES A LOS USUARIOS

ASIGNACIÓN DE UN USUARIO A UN TABLESPACE ( DEFAULT TABLESPACE )

Mediante esta sentencia asignamos un usuario a un tablespace, este será su tablespace por defecto cuando creamos un usuario.

SQL > CREATE USER byron IDENTIFIED BY b12z321 DEFAULT TABLESPACE users;

Mediante esta sentencia, en caso de tener creado ya el usuario le asignamos un tablespace.

SQL > ALTER USER byron DEFAULT TABLESPACE users;

La base de datos toma un tablespace por defecto, en caso de querer cambiar este tablespace utilizamos la siguiente sentencia

SQL > ALTER DATABASE DEFAULT TABLESPACE users;

Page 38: DBDD - Clase 6 - Seguridad BDD

ASIGNACIÓN DE UN USUARIO A UN TABLESPACE TEMPORAL Un tablespace temporal se utiliza para almacenar “segmentos”

temporales que son creados durante operaciones como ORDER BY,SELECT DISTINCT, MERGE JOIN o CREATE INDEX.

A veces a los usuarios se les asocia un tablespace temporal para realizar este tipo de operaciones, cuando estas operaciones finalizan este segmento temporal que se ha creado exclusivamente para la operación desaparece.

SQL > CREATE USER byron IDENTIFIED BY b12z321 DEFAULT TABLESPACE usersTEMPORARY TABLESPACE temp;

Mediante TEMPORARY TABLESPACE asignamos como tablespace temporal temp al usuario byron.

En caso de que el usuario esté creado si queremos asignarle un Tablespace temporal utilizamos ALTER USER

SQL > ALTER USER byron TEMPORARY TABLESPACE Temp;

Page 39: DBDD - Clase 6 - Seguridad BDD

ASIGNACIÓN DE UN PERFIL A UN USUARIO:

Al igual que podemos asignar un tablespace a un usuario, también podemos asignarle un perfil (profile). El principal perfil ( profile ) por defecto se denomina default.

Si el usuario no está lo podemos crear de la siguiente forma:

SQL > CREATE USER byron IDENTIFIED BY b12z321DEFAULT TABLESPACE usersTEMPORARY TABLESPACE tempPROFILE resource_profile;

En caso de que el usuario ya esté creado al igual que en los anteriores casos utilizamos la sentencia ALTER USER.

SQL > ALTER USER byron PROFILE resource_profile;

Page 40: DBDD - Clase 6 - Seguridad BDD

BORRADO DE UN USUARIO:

Para borrar un usuario utilizamos la sentencia DROP USER, podemos opcionalmente incluir la opción CASCADE, se utiliza para borrar recursivamente los objetos del usuario que se pretende borrar.

SQL > DROP USER byron CASCADE

Page 41: DBDD - Clase 6 - Seguridad BDD

OTORGANDO PRIVILEGIOS (GRANTING)

A un usuario podemos otorgarle una serie de privilegios. Un privilegio permite a un usuario acceder a ciertos objetos

o realizar ciertas acciones:.- Privilegios sobre Objetos ( Object privileges ) a permisos sobre

vistas, tablas, secuencias, procedimientos, paquetes.-

- Privilegios del Sistema ( System privileges ) a permisos sobre “niveles de la base de datos” como pueden ser conexión a la base de datos, creación de usuarios, limitar cuentas.

-

- Privilegios sobre Roles ( Role privileges ) a muchos permisos son otorgados mediante roles agrupando un conjunto de privilegios.Para otorgar privilegios utilizamos la sentencia GRANT, para quitar un privilegio o permiso a un usuario utilizamos la sentencia REVOKE.

Page 42: DBDD - Clase 6 - Seguridad BDD

PRIVILEGIOS (ejemplos)Privilegio sobre una tabla:

SQL > GRANT ALL ON tabla_alumnos TO byron

Siendo tabla_alumnos una tabla de nuestra base de datos y byron un usuario de esta, hemos asignado mediante GRANT ALL, todos los permisos al usuario byron sobre esta tabla.

GRANT ALL = permisos SELECT, INSERT, UPDATE, DELETE

Si queremos asignar sólo uno de estos permisos utilizamos la misma sentencia pero con el permiso que queramos otorgar.

SQL > GRANT SELECT ON tabla_alumnos TO byronSQL > GRANT SELECT,INSERT ON tabla_alumnos TO byron

Page 43: DBDD - Clase 6 - Seguridad BDD

PRIVILEGIOS (ejemplos) …Privilegio sobre una vista:

Para el caso de las vistas podemos a un usuario otorgar permisos 

SELECT, INSERT, UPDATE, DELETE, DEBUG,REFERENCES.

Siendo vista_alumnos una vista de nuestra base de datos y byron un usuario

de esta:Otorgamos al usuario byron todos los permisos sobre la vista

vista_alumnos.

SQL > GRANT ALL ON vista_alumnos TO byron

Otorgamos al usuario byron algunos permisos sobre la vista_alumnos

SQL > GRANT SELECT ON vista_alumnos TO byronSQL > GRANT SELECT,INSERT ON vista_alumnos TO byron

Page 44: DBDD - Clase 6 - Seguridad BDD

PRIVILEGIOS (ejemplos) …

Privilegio sobre una secuencia:

Con las secuencias pasa lo mismo que con los anteriores objetos vistos, para otorgar permisos se utiliza GRANT. Los permisos que podemos otorgar a una secuencia es  SELECT o ALTER.

Privilegio sobre un paquete, función o procedimiento

Los permisos que podemos otorgar a las funciones, paquetes o procedimientos almacenados en nuestra base de datos son los siguientes: EXECUTE,  DEBUG.

Page 45: DBDD - Clase 6 - Seguridad BDD

QUITANDO PRIVILEGIOS:

Si queremos quitar un privilegio a uno de estos objetos haremos lo mismo que con GRANT pero utilizando la sentencia

REVOKE.

SQL > REVOKE ALL ON tabla_usuarios FROM byron