Está en la página 1de 129

CAPITULO 4

BASE DE DATOS
ORIENTADAS A OBJETOS

CONTENIDO

3. INTEGRIDAD DE UNA BASE DE DATOS


3.1. Definicin de integridad
3.2. Restricciones de integridad
3.3. Confiabilidad de la base de datos
3.4. Seguridad e Integridad
3.5. Niveles de Seguridad

3.1. DEFINICIN DE INTEGRIDAD

La integridad tiene como funcin proteger la BD


contra
operaciones
que
introduzcan
inconsistencias en los datos.
Se habla de integridad en el sentido de
correccin, validez o precisin de los datos.

3.1. DEFINICIN DE INTEGRIDAD

Cuando los contenidos se modifican con


sentencias INSERT,
DELETE o UPDATE,
la
integridad de los datos almacenados puede perderse
de muchas maneras diferentes.

3.1. DEFINICIN DE INTEGRIDAD

3.1. DEFINICIN DE INTEGRIDAD

La integridad hace referencia a:


la integridad de los datos
la integridad del origen

3.1. DEFINICIN DE INTEGRIDAD

El subsistema de integridad de un SGBD debe


por tanto detectar y corregir, en la medida de
lo posible, las operaciones incorrectas.

3.2. RESTRICCIONES DE INTEGRIDAD

Las restricciones son limitaciones que


deseamos imponer en nuestra sistema, para
no almacenar datos incorrectos

3.2. RESTRICCIONES DE INTEGRIDAD

3.2. 1. RESTRICCIONES DE DOMINIO

Conjunto de valores y de operaciones permitidas


sobre los datos.
Restringir el tipo mediante tipos de datos, longitud
El formato mediante reglas y restricciones CHECK
Definiciones NOT NULL

3.2.1. RESTRICCIONES DE DOMINIO


NOT NULL
En forma predeterminada, una columna puede ser NULL. Si no desea permitir
un valor NULL en una columna, querr colocar una restriccin en esta columna
especificando que NULL no es ahora un valor permitido.
Por ejemplo, en la siguiente instruccin:
CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));
Las columnas SID y Last_Name no incluyen NULL, mientras que
First_Name puede incluir NULL.

3.2.1. RESTRICCIONES DE DOMINIO


La restriccin CHECK asegura que todos los valores en una columna
cumplan ciertas condiciones.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));
La columna SID slo debe incluir enteros mayores a 0.

3.2.1. RESTRICCIONES DE DOMINIO

3.2.1. RESTRICCIONES DE DOMINIO

3.2.1. RESTRICCIONES DE DOMINIO


LLAVE FORANEA
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));
Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);
SQL Server:
CREATE TABLE Orders
(
Order_ID NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

3.2.2. RESTRICCIONES
REFERENCIALES

Protege las relaciones definidas entre las tablas


cuando se crean, actualizan o eliminan filas. La
integridad referencial garantiza que los valores
de clave sean coherentes en las distintas
tablas.

3.2.2. RESTRICCIONES
REFERENCIALES

3.2.2. RESTRICCIONES
REFERENCIALES
Opciones

No Action

Por Defecto, hace rollback a la instruccin


para insert o update de la clave foranea.

Cascade

Elimina o actualiza los valores de la clave


referenciada

Set Null

Cuando se elimina el registro


correspondiente a la clave primaria de la
tabla referenciada, la clave foranea toma
el valor null

Set Default

Cuando se elimina el registro


correspondiente a la clave primaria de la
tabla referenciada, la clave foranea toma
el valor por defecto

3.2.2. RESTRICCIONES
REFERENCIALES

DEFAULT

3.2.2. RESTRICCIONES
REFERENCIALES

NO ACTION

3.2.2. RESTRICCIONES
REFERENCIALES

CASCADE

3.2.2. RESTRICCIONES
REFERENCIALES

SET NULL

3.2.2. RESTRICCIONES
REFERENCIALES

SET DEFAULT

3.2. 3. RESTRICCIONES DE UNICIDAD

La restriccin UNIQUE asegura que todos los


valores en una columna sean distintos.
CREATE TABLE Customer
(SID integer Primary Key,
Last_Name varchar (30),
First_Name varchar(30),
Email Unique);

La columna Email no puede incluir valores


duplicados, mientras dicha restriccin no se
aplica para columnas Last_Name y
First_Name.

3.2.2. RESTRICCIONES DE UNICIDAD

JOINS

JOINS

tblEmployee

tblDepartment

CROSS JOIN

Genera el producto cartesiano de las tablas


involucradas en la combinacin. El resultado es igual
al nmero de filas de la primera tabla multiplicado
por el nmero de filas de la segunda tabla.

CROSS JOIN

INNER JOIN OR JOIN

RETORNA SOLO LOS REGISTROS


COINCIDEN EN AMBAS TABLAS

QUE

INNER JOIN

LEFT JOIN OR LEFT OUTHER JOIN

Incluye todas las filas de la tabla de la izquierda


especificada en la clusula LEFT y no slo
aquellas en las que coincidan las columnas
combinadas.

LEFT JOIN OR LEFT OUTHER JOIN

RIGHT JOIN OR RIGHT OUTHER JOIN

Se devuelven todas las filas de la tabla de la


derecha. Cada vez que una fila de la tabla de
la derecha no tenga correspondencia en la tabla
de la izquierda, se devuelven valores
NULL para la tabla de la izquierda

RIGHT JOIN OR RIGHT OUTHER JOIN

FULL JOIN OR FULL OUTHER JOIN

Una combinacin externa completa devuelve


todas las filas de las tablas de la izquierda y
la derecha. Cada vez que una fila no tenga
coincidencia en la otra tabla, las columnas de la
lista de seleccin de la otra tabla contendrn
valores NULL

FULL JOIN OR FULL OUTHER JOIN

FULL JOIN OR FULL OUTHER JOIN

DISPARADORES (TRIGGERS)

Los Triggers o Disparadores son objetos que se


asocian con tablas y se almacenan en la base de
datos.
se ejecutan cuando sucede algn evento sobre
las tablas a las que se encuentra asociado

DISPARADORES (TRIGGERS)

TRIGGERS DML

DISPARADORES (TRIGGERS)

Los eventos que hacen que se ejecute un trigger


son las operaciones de insercin (INSERT),
borrado (DELETE) o actualizacin (UPDATE), ya
que modifican los datos de una tabla.

DISPARADORES (TRIGGERS)

DISPARADORES (TRIGGERS)

TRIGGERS INSERT

La tabla INSERTED es especialmente usada por


los triggers. Cuando se adiciona una nueva fila a
una tabla, una copia de la fila tambin es
adicionada a la tabla INSERTED, a la cual solo
puede acceder el trigger.

TRIGGERS INSERT

TRIGGERS DELET

La tabla DELETED es especialmente usada por


los triggers. Cuando una fila es borrada, una
copia de esa fila tambin es adicionada a la tabla
DELETED, a la cual solo puede acceder el
trigger.

TRIGGERS DELET

TRIGGERS UPDATE

La
tabla
INSERTED
y
DELETED
es
especialmente usada por los triggers cuando se
actualizan los datos. La tabla Inserted guarda el
nuevo registro y la tabla Deleted el antiguo
registro

TABLAS TEMPORALES

UPDATE TRIGGER

UPDATE TRIGGER

TRIGGER INSTEAD OF

INSTEAD OF

TRIGGER INSTEAD OF

Trigger

Inserted or Updated?

Instead Of
Insert

Inserted Table contiene los nuevos


datos insertados, Deleted Table est
vaca.

Instead Of
Delete

Deleted Table contiene los datos


eliminados, Inserted Table est vaca

Instead of
Update

Inserted Table contiene los nuevos


datos insertados y Deleted Table
contiene los datos antiguos, antes de
la actualizacin.

TRIGGER INSTEAD OF

TRIGGER INSTEAD OF

TRIGGER INSTEAD OF INSERT

TRIGGER INSTEAD OF INSERT

TRIGGER INSTEAD OF INSERT

TRIGGER INSTEAD OF INSERT

TRIGGER INSTEAD OF INSERT

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF UPDATE

TRIGGER INSTEAD OF DELETE

TRIGGER INSTEAD OF DELETE

TRIGGER INSTEAD OF DELETE

Seguridad?

La seguridad informtica consiste en asegurar


que los recursos de sistemas y de
informacin (material informtico o
programas, bases de datos, etc.) de una
organizacin sean utilizados de la manera
en que se decidi y que el acceso a la
informacin all contenida, as como su
modificacin, slo sea posible a las
personas que se encuentren acreditadas y
dentro de los lmites de su autorizacin
Fuente: http://es.wikipedia.org/wiki/Seguridad_informtica
73

Seguridad?

74

Seguridad
Fsico:
Los servidores (o nodos de cmputo) donde est el
SGBD deben estar protegidos frente al acceso de
extraos

75

Seguridad
Humano:
El personal encargado de los servidores debe ser
calificado y de confianza
(sobornos / ingeniera social)

76

Seguridad

Red:
La red en la que opera el SGBD debe tener las
protecciones correspondientes, proteccin en el envo
de datos, firewalls, cifrado, entre otras

77

Seguridad
Sistema Operativo:
El sistema operativo debe estar actualizado y se
deben realizar todos los esfuerzos necesarios para
que no sea vulnerable

78

Seguridad
Software / Aplicacin:
Las aplicaciones cliente de los SGBD deben ser
diseadas y desarrolladas con los niveles de
seguridad adecuados

79

Seguridad
SGBD:
La base de datos debe ser configurada con roles,
privilegios y permisos adecuados para evitar los
accesos malintencionados

80

Seguridad Obligatoria
(SGBD que lo soporten?)

Dnde implementar la seguridad?


Seguridad a nivel del SGBD o
seguridad a nivel de la Aplicacin?
Validar a nivel del SGBD, a nivel de la
aplicacin, a nivel del cliente?
81

82

83

Seguridad
(A nivel del SGBD)

En los SGBD, el concepto de seguridad se


refiere a la proteccin 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 Estadsticos

84

Medidas de Control

85

Seguridad en la Base de Datos y DBA

El DBA es el responsable de la seguridad


general del sistema de bases de datos.

Creacin de cuentas
Concesin de privilegios
Retiro de privilegios
Asignacin de nivel de seguridad

86

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 especficos 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

87

Seguridad Discrecional
Tabla 1
Grupo 1
Tabla 2

Usuario 1
(Grupo 1)

Grupo 2
Vista 1

Tabla 1
Usuario 2
(Grupo 1)
(Grupo 2)

Grupo 3
Tabla 4
Las vistas son una poderosa
herramienta para controlar
88
la seguridad

Seguridad Obligatoria
(SGBD que lo soporten?)

89

AUTENTICACIN EN SQL

90

AUTENTICACIN CON WINDOWS

Existe un controlador de dominio.


La aplicacin y la base de datos se
encuentran en el mismo equipo.
Est usando una instancia de SQL Server
Express o LocalDB.

91

AUTENTICACIN CON SQL

Si se tiene un grupo de trabajo.


Los usuarios se conectan desde diferentes
dominios.
Aplicaciones de Internet, como ASP.NET.

92

ROLES

Permite asignar permisos a un rol, o grupo de


usuarios, en lugar de asignarlos a usuarios
individuales, cuentan con un conjunto fijo de permisos
asignados.

93

ROLES

94

SERVER ROLES

95

SERVER ROLES

96

SERVER ROLES

97

DATABASE ROLES

98

DATABASE ROLES

99

SERVER ROLES

100

USUARIOS Y ROLES

Se deben asignar inicios de sesin a cuentas


de usuario de base de datos a estos usuarios
de base de datos se podrn agregar roles de
base de datos y heredarn los conjuntos de
permisos asociados con estos roles.

101

USUARIOS Y ROLES

102

USUARIOS Y ROLES

103

USUARIOS Y ROLES

104

CREANDO LOGINS

105

CREANDO LOGINS

106

CREANDO USUARIOS PARA LA BD

107

CREANDO USUARIOS PARA LA BD

108

CREANDO USUARIOS PARA LA BD

109

ENCRIPTACIN

110

ENCRIPTACIN

111

ENCRIPTACIN

112

ENCRIPTACIN

113

SQL INJECTION

114

SQL INJECTION

Es un mtodo de infiltracin de cdigo intruso que


se vale de una vulnerabilidad informtica
presente en una aplicacin en el nivel de validacin
de las entradas para realizar operaciones sobre
una base de datos

115

SQL INJECTION

La intrusin ocurre durante la ejecucin del


programa vulnerable, ya sea, en computadores de
escritorio, aplicaciones de celular , sitios Web.

116

SQL INJECTION

La vulnerabilidad se produce cuando el programa


hace uso de parmetros a ingresar por parte del
usuario, a efectos de consultar una base de datos,
dentro de los parmetros es donde se puede
incorporar el cdigo SQL intruso.

117

Ejemplos Website

Ejemplos Website

timbo317
cse7330

SELECT * FROM `login` WHERE `user`=timbo317 AND


`pass`=cse7330

Login

user
timbo317

pass
cse7330

Que puede estar


mal?

Ejemplos

OR a=a
OR a=a

SELECT * FROM `login` WHERE `user`='or '1'='1 AND


`pass`='or '1'='1

Ejemplos

http://normatech.it/login.asp

Ejemplos

; DROP TABLE `usuarios`; --

Todas las posibilidades

SELECT * FROM `login` WHERE `user`=; INSERT


INTO `login` ('user','pass') VALUES
('haxor','whatever');-- AND `pass`=
SELECT * FROM `login` WHERE `user`=; UPDATE
`login` SET `pass`=pass123 WHERE
`user`=timbo317;-- AND `pass`=

Prevenir

Prevenir

También podría gustarte