1 Seguridad en BD Universidad de los Andes Demián Gutierrez Enero 2009.

Slides:



Advertisements
Presentaciones similares
Diseño de Bases de Datos
Advertisements

Madrid, junio de 2009 Seguridad en bases de datos: SQL Server 2005 y Oracle 10g.
Microsoft® SQL Server 2008 Usuarios, Roles, Encriptación y Back Up de la base de datos.
VISTAS (VIEWS) DEFINICIÓN Y OBJETIVO DE LAS VISTAS.
PRIVILEGIOS DE ACCESO EN INFORMIX
4.3. Privilegios de usuarios
BASE DE DATOS DISTRIBUIDAS
PL/SQL Francisco Moreno Universidad Nacional.
Control del Acceso de los Usuarios
Administración de Bases de Datos
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO MODULO IV ADMINISTRACIÓN DE BASES DE DATOS Administración del DBMS E.I. L.E. Prof. Ramón Castro Liceaga SEMINARIO.
Usuarios y privilegios MySQL. Cuentas de usuario ALTAS:  CREATE USER IDENTIFIED BY ‘contrasena’; Si no se pone ningún host, interpreta.
Prof. Daniel Obando Fuentes
MySQL LENGUAJE SQL.
Unidad 4 SEGURIDAD 4.1 Tipos de usuarios
Usuarios y privilegios
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
Usuarios. Colocar el servidor en el modo de autenticación Windows/SqlServer. En SQL Server Management Studio, click derecho, Propiedades en la Instancia.
ORACLE SQL - DCL.
Seguridad. Identificación y Autenticación  Se denomina Identificación al momento en que el usuario se da a conocer en el sistema.  La autentificación.
Sentencias DDL y DML PostgreSQL. Base de Datos I – Fundamentos Básicos PostgreSQL PostgreSQL es un servidor de base de datos relacional libre bajo la.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
COMANDOS SQL. ¿QUÉ ES SQL? El lenguaje de consulta estructurado es un lenguaje declarativo que permite la creación, acceso e interacción de bases de datos.
Curso de Aptitud Pedagógica 2006/2007 OpenOffice Base Introducción a las Bases de Datos.
Administración de Sistemas Gestores de Bases de Datos.
COMANDOS BÁSICOS MYSQL BASES DE DATOS 2 UNIVERSIDAD DE LA AMAZONIA.
Conferencia 7. Lenguaje SQL Estándar. Ejemplos.
Estado del arte y Gestión de la Información
SQL: Structured Query Language
Convenciones de nomenclatura y diseño
Lenguaje de manipulación de datos
MYSQL SQL: Lenguaje de consulta estructurado. Es un lenguaje de programación para trabajar con BD relacionadas, entre las cuales tenemos MYSQL, ORACLE,
El punte entre tu y tu base de datos
UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO
SEGURIDAD SQL Usuarios, privilegios y perfiles.
Tipos de datos en MYSQL YEAR: Año. “YYYY” o “YY”
BASE DE DATOS IUPSM CLASE PRACTICA. PROF. ING. JOSE L GUZMAN H.
SQL Prof. Martín Contreras.
Arquitectura de una Base de Datos
U.T. 11: Introducción A Las Bases De Datos
SQL: Structured Query Language
3. Control de acceso.
SQL Prof. Martín Contreras.
Técnicas y Herramientas de Computación
BASES DE DATOS.
Introducción a Transact-SQL BASES DE DATOS II. Introducción E lenguaje de programación Transact-SQL Tipos de instrucciones de Transact-SQL Elementos de.
Structure Query Languaje
SQL: structured Query Language
Banco de Dados II IMPLEMENTAÇÃO E OPTIMIZAÇÃO DE BANCOS DE DADOS
UN DISPARADOR O TRIGGER es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación. Es una rutina autónoma.
Unidad 7: Nivel Interno Algunos Conceptos Importantes
SQL Lenguaje de Consulta Estructurado
Novell Netware Autores: Cerrina Maria Josefina, Coto Marcelo,
BASES DE DATOS Quienes las utilizan? Qué son? Beneficios
Lenguaje de Manipulación de Datos
La replicación es una buena solución al problema de mover datos entre un servidor central y clientes que sólo se conectan en determinadas ocasiones. La.
Orígenes Funciones Condicionales
Oracle Pl/SQl Developer – Nivel 1
Lenguaje de consulta estructurado
Conceptos Relacionados Unidad I. Parte A.
Structure Query Languaje
Unidad V :- Integridad de datos.
Universidad Alonso de Ojeda Facultad de Ingeniería
Normalmente emparejamos tablas que están relacionadas entre sí y una de las columnas de emparejamiento es clave principal, pues en este caso, Cuando una.
Capítulo 7 USO DE BASES DE DATOS OBJETO- RELACIONALES.
TRIGGERS VISTAS Y PROCESOS Ing. Fabiola Nilda Perez Oliver
Fundamentos de las Base de Datos. Contenido Que es una Base de Datos. La diferencia entre datos e informacion. Clasificacion de las base de datos. Importancia.
Taller de Bases de Datos Ingeniería en Sistemas Computacionales M. en I.S.C Mariana Carolyn Cruz Mendoza Por Alexis Orlando Rebollar Lopez.
El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales. La sigla que se conoce como SQL corresponde.
Lenguaje de definición de datos. Un lenguaje de base de datos o lenguaje de definición de datos es un lenguaje proporcionado por el sistema de gestión.
Transcripción de la presentación:

1 Seguridad en BD Universidad de los Andes Demián Gutierrez Enero 2009

2 ¿Seguridad? La seguridad informática consiste en asegurar que los recursos de sistemas y de información (material informático o programas, bases de datos, etc.) de una organización sean utilizados de la manera en que se decidió y que el acceso a la información allí contenida, así como su modificación, sólo sea posible a las personas que se encuentren acreditadas y dentro de los límites de su autorización Fuente:

3 Seguridad Físico: Los servidores (o nodos de cómputo) donde está el SGBD deben estar protegidos frente al acceso de extraños Humano: El personal encargado de los servidores debe ser calificado y de confianza (sobornos / ingeniería social) Red: La red en la que opera el SGBD debe tener las protecciones correspondientes, protección en el envío de datos, firewalls, cifrado, entre otras

4 Seguridad SGBD: La base de datos debe ser configurada con roles, privilegios y permisos adecuados para evitar los accesos malintencionados Sistema Operativo: El sistema operativo debe estar actualizado y se deben realizar todos los esfuerzos necesarios para que no sea vulnerable Software / Aplicación: Las aplicaciones cliente de los SGBD deben ser diseñadas y desarrolladas con los niveles de seguridad adecuados

5 Seguridad Obligatoria (¿SGBD que lo soporten?) ¿Dónde implementar la seguridad? ¿Seguridad a nivel del SGBD o seguridad a nivel de la Aplicación? Recuerden el dilema: ¿Validar a nivel del SGBD, a nivel de la aplicación, a nivel del cliente?

6 Seguridad Obligatoria (¿SGBD que lo soporten?) SGBD Aplicación Seguridad a nivel de la BD: Usuarios, Roles, Vistas, Permisos, etc. Seguridad a nivel de la aplicación: ¿?

7 Seguridad Obligatoria (¿SGBD que lo soporten?) Aplicación Seguridad a nivel de la aplicación: Usuarios, Roles, Permisos y Privilegios incrustados en la lógica de negocio, restricciones de acceso a los recursos, propietarios de registros/objetos, visibilidades, etc.

8 ¿SQL INJECTION? (Tópico Aparte, Mover a SQL)

9 ¿Quién puede explicar la razón por la que esta tira cómica es tan (pero tan) graciosa? (al menos para mi) (Cortesía de xkcd)

10 SELECT * FROM user WHERE name='%NAME%' AND pass='%PASS%' (Si retorna al menos un registro, dejamos entrar al usuario) %NAME% = foo %PASS% = whatever' OR '1'='1 ¿Cuál será el SQL generado?

11 SELECT * FROM user WHERE name='foo' AND pass='whatever' OR '1'='1' ¿Cuántos registros genera la consulta anterior? ¿Les resulta ahora gracioso?

12...volviendo al tópico (Seguridad)

13 Seguridad (A nivel del SGBD) En los SGBD, el concepto de seguridad se refiere a la protección de los datos ante usuarios no autorizados, es decir, definir estrategias que permitan establecer que usuarios pueden acceder a que datos ● Tipos de seguridad en los SGBD – Seguridad Discrecional – Seguridad Obligatoria – Seguridad en Sistemas Estadísticos (¿Qué creen que sea esto?)

14 Seguridad Discrecional Se basa en otorgar privilegios a usuarios (o grupos de usuarios), en los que se incluye la capacidad de tener acceso tablas, registros o campos específicos con un determinado modo (para leer, insertar o actualizar) ● Autorizar al usuario X a realizar consultas en filas de la tabla A ● Autorizar al usuario X a utilizar un procedimiento almacenado B

15 Seguridad Discrecional Usuario 1 (Grupo 1) Usuario 2 (Grupo 1) (Grupo 2) Grupo 1 Grupo 2 Grupo 3 Tabla 1 Tabla 2 Secuencia 2 Vista 1 Índice 1... Las vistas son una poderosa herramienta para controlar la seguridad

16 Seguridad Discrecional Usuario 1 (Grupo 1) Tabla 1: Columna X Columna Y Columna Z Tabla 2: Columna A Columna B Columna C Vista 1: Columna A Columna B Columna X Columna Y CREATE VIEW vista1 AS ( SELECT ColumnaA, ColumnaB, ColumnaX, ColumnaY FROM tabla1, tabla2 WHERE...) Grupo ¿Puede Usuario 1 ver los valores de las columnas C y Z? ¿Puede modificar alguna fila de las tablas 2 y 3? ¿Cómo evitan que Usuario 1 vea ciertas filas específicas?

17 Seguridad Obligatoria Consiste en imponer seguridad de múltiples niveles, clasificando los datos y los usuarios en varias clases (o niveles) de seguridad, de manera que los usuarios puedan acceder a los datos según tengan o no el nivel necesario para el dato que desean acceder ● Las filas (o los objetos) tienen un nivel Fi de seguridad, que solo se pueden leer si el usuario tiene un nivel Ui >= Fi de seguridad

18 Seguridad Obligatoria (Reglas) ● El usuario X puede recuperar (leer) el objeto Y sólo si el nivel de acreditación (seguridad) de X (Ui) es mayor o igual que el nivel de clasificación de Y (Fi) (“propiedad de seguridad simple) ● El usuario X puede actualizar el objeto Y sólo si el nivel de acreditación de X (Ui) es igual al nivel de clasificación de Y (Fi) (“propiedad estrella”). ¿Ideas de por qué esto es así?

19 Seguridad Obligatoria (Reglas) La segunda regla anterior evita que existan filtraciones de seguridad hacia abajo, o que un usuario escriba datos que luego no pueda leer... (hacia arriba) Usuario 1 (Seguridad 2) (Menos Seguridad) Usuario 2 (Seguridad 3) (Más Seguridad)

20 Seguridad Obligatoria (Reglas) Usuario 1 (Seguridad 2) SELECT * FROM empleado SELECT * FROM empleado WHERE clasificacion <= 2 SELECT * FROM empleado SELECT * FROM empleado WHERE clasificacion <= 3 Usuario 2 (Seguridad 3)

21 Seguridad Obligatoria (Reglas) Usuario 1 (Seguridad 2) INSERT INTO empleado VALUES( , 'Luis Silva', 2000) INSERT INTO empleado VALUES( , 'Luis Silva', 2000, 2)

22 Seguridad Obligatoria (Reglas) Usuario 1 (Seguridad 2) SELECT * FROM empleado SELECT * FROM empleado WHERE clasificacion <= 2 SELECT * FROM empleado SELECT * FROM empleado WHERE clasificacion <= 4 Usuario 3 (Seguridad 4)

23 Seguridad Obligatoria (¿SGBD que lo soporten?) Oracle Label Security security/index.html SEPostgreSQL (Security Enhaced)

24 Seguridad Discrecional (PostgreSQL) PostgreSQL manages database access permissions using the concept of roles. A role can be thought of as either a database user, or a group of database users, depending on how the role is set up. Roles can own database objects (for example, tables) and can assign privileges on those objects to other roles to control who has access to which objects. Furthermore, it is possible to grant membership in a role to another role, thus allowing the member role use of privileges assigned to the role it is a member of. Fuente: manag.htmlhttp:// manag.html

25 Seguridad Discrecional (PostgreSQL) Rol Privilegios (Seguridad a nivel de Objetos) Atributos (Seguridad global y a nivel de BD) Usuario (Puede hacer Login) Grupo (No puede hacer Login) es de tipo pertenece y hereda privilegios y atributos de tien e

26 Seguridad Discrecional (PostgreSQL) Advertencia: La herencia entre Grupo, Usuario y Rol y la relación entre Grupo y Usuario tiende a crear mucha confusión en lo que respecta a la terminología...

27 Seguridad Discrecional (PostgreSQL) Los roles de la BD son “usuarios”, son globales, es decir, no existen por cada base de datos CREATE ROLE nombre_rol; DROP ROLE nombre_rol; SELECT * FROM pg_roles; rolname |super|inherit|createrole|createdb|catupdate|canlogin|connlimit|pass| postgres|t |t |t |t |t |t | -1|****|... foo |f |t |f |t |f |t | -1|****|... Para más información sobre el resultado del select consultar el manual de PostgreSQL

28 Seguridad Discrecional (PostgreSQL / Atributos) CREATE ROLE foo LOGIN CREATEDB PASSWORD 'foo123'; ALTER ROLE foo CREATEDB PASSWORD 'xxxyyy'; ● LOGIN: La posibilidad de hacer login ● SUPERUSER: Permisos de superusuario (usar con cuidado) ● CREATEDB: La posibilidad de crear bases de datos ● CREATEROLE: La posibilidad de crear otros roles ● PASSWORD 'string': Para asignar una contraseña (String es el password)

29 Seguridad Discrecional (PostgreSQL / Sobre el password) #TYPEDATABASEUSERCIDR- ADDRESSMETHOD # "local" is for Unix domain socket connections only #localallall trust localallall password # IPv4 local connections: #hostallall /32 trust hostallall /32 password # IPv6 local connections: #hostallall::1/128 trust hostallall::1/128 password Archivo de Configuración de PostgreSQL /usr/local/pgsql/data/pg_hba.conf Es decir, la estrategia de autentificación puede variar y ajustarse según las necesidades (No solo en PostgreSQL, sino en la mayoría de los SGBD)

30 ESQUEMAS SCHEMAS (Tópico Aparte, Mover a SQL)

31 Seguridad Discrecional (PostgreSQL / Privilegios) SGBD Schema 1tabla/objeto 1 BD1 BD2 BD3 BDn... Schema 2 Schema 3 Schema N... tabla/objeto 2 tabla/objeto 1 tabla/objeto N... tabla/objeto 1 No todos los SGBD usan esta esta estrategia, pero es común que la mayoría definan estructuras de este tipo

32 Crear o Eliminar una Schema (¿Qué es un Schema?) test=# \dn List of schemas Name | Owner information_schema | postgres pg_catalog | postgres pg_toast | postgres pg_toast_temp_1 | postgres public | postgres (5 rows) test=# CREATE SCHEMA some_schema_name; CREATE SCHEMA test=# \dn List of schemas Name | Owner information_schema | postgres pg_catalog | postgres pg_toast | postgres pg_toast_temp_1 | postgres public | postgres some_schema_name | postgres (6 rows) test=# test=# DROP SCHEMA some_schema_name; DROP SCHEMA test=# \dn List of schemas Name | Owner information_schema | postgres pg_catalog | postgres pg_toast | postgres pg_toast_temp_1 | postgres public | postgres (5 rows) test=# El schema es básicamente un espacio de nombre, es posible tener tablas con el mismo nombre en diferentes schemas

33 Seguridad Discrecional (PostgreSQL / Privilegios) test=# CREATE SCHEMA some_name_a; CREATE SCHEMA test=# CREATE SCHEMA some_name_b; CREATE SCHEMA test=# CREATE TABLE some_name_a.tableX (id INT); CREATE TABLE test=# CREATE TABLE some_name_b.tableX (id INT); CREATE TABLE test=# INSERT INTO some_name_a.tableX VALUES (1); INSERT 0 1 test=# INSERT INTO some_name_b.tableX VALUES (9); INSERT 0 1 test=# SELECT * FROM some_name_a.tableX; id test=# SELECT * FROM some_name_b.tableX; id TEST some name A some name B tableX Los schemas ayudan en la seguridad en el sentido de que son OBJETOS a los que les podemos asignar privilegios y que agrupan a OTROS OBJETOS

34...volviendo al tópico (Seguridad)

35 Seguridad Discrecional (PostgreSQL / Privilegios) Cuando un “objeto” (tabla, secuencia, índice, etc) es creado usualmente se le asigna un dueño. Por defecto, el dueño es el rol (usuario) que crea el objeto. Es decir, para la mayor parte de los objetos, inicialmente, sólo el dueño y el superusuario pueden hacer algo con el objeto Para permitir a otros usuarios hacer algo con esos objetos es necesario asignar privilegios, de los cuales hay de distintos tipos: (Lamina siguiente)

36 Seguridad Discrecional (PostgreSQL / Privilegios) SELECT, INSERT, UPDATE, DELETE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE, USAGE Los privilegios se asignan con el comando GRANT: GRANT UPDATE ON tabla TO rol; y se eliminan con REVOKE: REVOKE ALL ON tabla FROM rol;

37 Ejemplo en SQL con SELECT e INSERT... Seguridad Discrecional (PostgreSQL / Privilegios)

38 SELECT Permite hacer SELECT de cualquier columna en la tabla, vista o secuencia especificada. También permite usar COPY FROM. Para secuencias este privilegio permite usar la función currval. INSERT Permite insertar nuevas filas en la tabla especificada, también permite la operación COPY TO sobre la tabla en cuestión. Seguridad Discrecional (PostgreSQL / Privilegios)

39 Seguridad Discrecional (PostgreSQL / Privilegios) UPDATE Permite actualizar cualquier columna de la tabla especificada. SELECT... FOR UPDATE y SELECT... FOR SHARE también requieren este privilegio (Además del privilegio SELECT). Para secuencias, este privilegio permite el uso de la función nextval y setval. DELETE Permite eliminar filas de la tabla en cuestión.

40 Seguridad Discrecional (PostgreSQL / Privilegios) REFERENCES Para crear claves foráneas es necesario tener este privilegio tanto en la tabla que hace la referencia como en la tabla referenciada. TRIGGER Permite crear gatillos en la tabla especificada

41 Seguridad Discrecional (PostgreSQL / Privilegios) CREATE Si se asocia a bases de datos, permite crear esquemas dentro de la base de datos. Si se asocia a esquemas permite crear objetos (tablas, vistas, etc) dentro del esquema. Para cambiar el nombre de un objeto es necesario tener este privilegio.

42 Seguridad Discrecional (PostgreSQL / Privilegios) CONNECT Permite a los usuarios conectarse a la base de datos especificada. TEMPORARY TEMP Permite la creación de tablas temporales en la base de datos especificada.

43 Seguridad Discrecional (PostgreSQL / Privilegios) EXECUTE Permite el uso de la función especificada (Sólo aplica a funciones)

44 Seguridad Discrecional (PostgreSQL / Privilegios) USAGE Para lenguajes de procedimientos permite el uso del lenguaje especificado (para crear funciones en el lenguaje especificado) Para esquemas permite el acceso a los objetos contenidos en el esquema (asumiendo que los privilegios de los objetos particulares se cumplen) Para secuencias, permite el uso de la función currval y nextval sobre la secuencia especificada.

45 Seguridad Discrecional (PostgreSQL / Privilegios) ALL PRIVILEGES Da todos los privilegios disponibles. La palabra PRIVILEGES es opcional en PostgreSQL pero su uso es obligatorio en el estándar SQL.

46 Seguridad Native PostgreSQL restricts DB users with ACLs on views. This means that access paths to a certain table cannot be described clearly, because multiple views to a table may be defined. Moreover, an ACL on a table is not evaluated when accessed from a view. Thus, a DB user who has the authority to define a view can access any information in the database. Un ejemplo de la clase de problemas que se pueden encontrar...

47 Gracias ¡Gracias!

48 Seguridad ● Añadir – Seguridad en sistemas estadísticos (O dejarlo como tarea)