PDF de programación - Seguridad en BD

Imágen de pdf Seguridad en BD

Seguridad en BDgráfica de visualizaciones

Publicado el 19 de Mayo del 2020
750 visualizaciones desde el 19 de Mayo del 2020
358,1 KB
48 paginas
Creado hace 12a (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
  • Links de descarga
http://lwp-l.com/pdf17662

Comentarios de: Seguridad en BD (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad