dbdd - clase 6 - seguridad bdd
Post on 10-Aug-2015
39 Views
Preview:
TRANSCRIPT
SEGURIDAD
DISEÑO DE BASE DE DATOS
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.
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
Control de acceso
Enfoques: Control de acceso discrecional. Control de acceso obligatorio.
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).
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.
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;)
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.
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’.
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
Control de acceso obligatorio
Clasifica usuarios y datos en múltiples
niveles de seguridad, y luego fuerza determinadas reglas acordes a cada nivel.
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"
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
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.
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).
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.
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.
Procedimientos estándar para administración de usuarios
PROCEDIMIENTOS ESTÁNDAR PARA ADMINISTRACIÓN DE USUARIOS
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.
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.
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.
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
Clasificación de datos (ejemplo)
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)
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").
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.
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
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.
Cifrado de datos
Así el criptograma seria el siguiente:see uó enr len ro, aas h t oshíci
Seguridad sql
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.
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
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.
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.
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.
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;
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;
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;
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
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.
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
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
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.
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
top related