Publicado el 19 de Mayo del 2020
865 visualizaciones desde el 19 de Mayo del 2020
358,1 KB
48 paginas
Creado hace 13a (30/06/2011)
Seguridad en BD
Universidad de los Andes
Demián Gutierrez
Enero 2009
1
¿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: http://es.wikipedia.org/wiki/Seguridad_informática
2
Seguridad
Los servidores (o nodos de cómputo) donde está el
SGBD deben estar protegidos frente al acceso de
Físico:
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
3
Seguridad
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
SGBD:
La base de datos debe ser configurada con roles,
privilegios y permisos adecuados para evitar los
accesos malintencionados
4
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?
5
Seguridad Obligatoria
(¿SGBD que lo soporten?)
Seguridad a nivel de la
aplicación: ¿?
Aplicación
Seguridad a nivel de la
BD: Usuarios, Roles,
Vistas, Permisos, etc.
SGBD
6
Seguridad Obligatoria
(¿SGBD que lo soporten?)
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.
Aplicación
7
¿SQL INJECTION?
(Tópico Aparte,
Mover a SQL)
8
¿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)
9
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?
10
SELECT * FROM user WHERE name='foo' AND
pass='whatever' OR '1'='1'
¿Cuántos registros genera la consulta anterior?
¿Les resulta ahora gracioso?
11
...volviendo al tópico (Seguridad)
12
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?)
13
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
14
Seguridad Discrecional
Usuario 1
(Grupo 1)
Usuario 2
(Grupo 1)
(Grupo 2)
Grupo 1
Grupo 2
Grupo 3
Las vistas son una
poderosa herramienta para
controlar la seguridad
Tabla 1
Tabla 2
Secuencia 2
Vista 1
Índice 1
...
15
Seguridad Discrecional
Usuario 1
(Grupo 1)
Grupo
¿Puede Usuario 1 ver los
valores de las columnas C y
Z? ¿Puede modificar alguna
fila de las tablas 2 y 3?
Vista 1:
Columna A
Columna B
Columna X
Columna Y
CREATE VIEW vista1 AS (
SELECT ColumnaA, ColumnaB,
ColumnaX, ColumnaY
FROM tabla1, tabla2
WHERE ...)
Tabla 2:
Columna A
Columna B
Columna C
Tabla 1:
Columna X
Columna Y
Columna Z
¿Cómo evitan que Usuario 1 vea ciertas filas específicas?
16
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...
1
2
3
4
17
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í?
18
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 2
(Seguridad 3)
(Más
Seguridad)
Empleado
Cédula
12.334.543
14.232.650
15.556.345
16.343.222
18.909.123 Marcos Quintero
Nombre
Pedro Perez
Juan García
Diego Rojas
Luis Silva
Sueldo
3000
2500
4000
10000
1000
Clasificación
3
3
3
4
2
19
Usuario 1
(Seguridad 2)
(Menos
Seguridad)
Seguridad Obligatoria
(Reglas)
SELECT * FROM empleado
Usuario 1
(Seguridad 2)
Usuario 2
(Seguridad 3)
SELECT * FROM empleado WHERE clasificacion <= 2
Empleado
Cédula
18.909.123 Marcos Quintero
Clasificación
2
Nombre
Sueldo
1000
SELECT * FROM empleado
SELECT * FROM empleado WHERE clasificacion <= 3
Empleado
Cédula
12.334.543
14.232.650
15.556.345
18.909.123 Marcos Quintero
Clasificación
3
3
3
2
Nombre
Pedro Perez
Juan García
Diego Rojas
3000
2500
4000
1000
Sueldo
20
Seguridad Obligatoria
(Reglas)
Usuario 1
(Seguridad 2)
INSERT INTO empleado
VALUES(16.343.222, 'Luis Silva', 2000)
INSERT INTO empleado
VALUES(16.343.222, 'Luis Silva', 2000, 2)
Empleado
Nombre
Cédula
Pedro Perez
12.334.543
Juan García
14.232.650
15.556.345 Diego Rojas
16.343.222
16.343.222
18.909.123 Marcos Quintero
Luis Silva
Luis Silva
Sueldo
Clasificación
3000
2500
4000
2000
10000
1000
3
3
3
2
4
2
21
Seguridad Obligatoria
(Reglas)
Usuario 1
(Seguridad 2)
Usuario 3
(Seguridad 4)
SELECT * FROM empleado
SELECT * FROM empleado WHERE clasificacion <= 2
Empleado
Cédula
18.909.123 Marcos Quintero
16.343.222
Clasificación
1000
2000
Luis Silva
2
2
Nombre
Sueldo
Sueldo
SELECT * FROM empleado
SELECT * FROM empleado WHERE clasificacion <= 4
Empleado
Nombre
Cédula
Pedro Perez
12.334.543
Juan García
14.232.650
15.556.345 Diego Rojas
16.343.222
16.343.222
18.909.123 Marcos Quintero
Clasificación
3
3
3
2
4
2
3000
2500
4000
2000
10000
1000
Luis Silva
Luis Silva
22
Seguridad Obligatoria
(¿SGBD que lo soporten?)
Oracle Label Security
http://www.oracle.com/technology/deploy/security/database-security/label-security/index.html
SEPostgreSQL (Security Enhaced)
http://wiki.postgresql.org/wiki/SEPostgreSQL_Introduction
23
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: http://www.postgresql.org/docs/8.4/interactive/user-manag.html
24
Seguridad Discrecional
(PostgreSQL)
Atributos
(Seguridad
global y a
nivel de BD)
tiene
Grupo
(No puede
hacer Login)
Privilegios
(Seguridad a
nivel de
Objetos)
tiene
Usuario
(Puede
hacer Login)
25
Rol
es de tipo
pertenece y
hereda privilegios
y atributos de
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...
26
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
27
Seguridad Discrecional
(PostgreSQL / Atributos)
● 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)
CREATE ROLE foo LOGIN CREATEDB PASSWORD 'foo123';
ALTER ROLE foo CREATEDB PASSWORD 'xxxyyy';
28
Seguridad Discrecional
(PostgreSQL / Sobre el password)
Archivo de Configuración de PostgreSQL
/usr/local/pgsql/data/pg_hba.conf
#TYPE
DATABASE
USER
CIDR-ADDRESS
METHOD
# "local" is for Unix domain socket connections only
#local
local
all
all
all
all
trust
password
# IPv4 local connections:
#host
host
all
all
all
all
# IPv6 local connections:
#host
host
all
all
all
all
127.0.0.1/32
127.0.0.1/32
trust
password
::1/128
::1/128
trust
password
Es decir, la estrategia de a
Comentarios de: Seguridad en BD (0)
No hay comentarios