Está en la página 1de 12

CARRERA: FECHA:

Ingeniería de Sistemas 19/01/2018

ESTUDIANTE: ASIGNATURA: GRUPO:


Daniel Amay – Wilmer Camas – Base de Datos II 1
Jonathan Paladines –Edison
Huiñaizaca

DOCENTE:
Ing. Alvaro Mejia

TEMA: Plan de Seguridad para Base de Datos

--CREACION DE ROLES

--------------------------------
--ROL BODEGERO
CREATE ROLE ROL_BODEGERO;

--PERMISOS PARA LA TABLA FCT_UNIDAD_PRODUCTOS


GRANT SELECT,UPDATE ON USR_FACTURACION.FCT_UNIDAD_PRODUCTOS TO
ROL_BODEGERO;

---------------------------------
--ROL CAJERO
CREATE ROLE ROL_CAJERO;

--PERMISOS PARA LA TABLA FCT_PRODUCTOS


GRANT SELECT ON USR_FACTURACION.FCT_PRODUCTOS TO ROL_CAJERO;

--PERMISOS PARA LA TABLA FCT_FACTURA_CABECERAS


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_FACTURA_CABECERAS TO
ROL_CAJERO;

--PERMISOS PARA LA TABLA FCT_FACTURA_DETALLE


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_FACTURA_DETALLES TO
ROL_CAJERO;

--PERMISOS PARA LA TABLA FCT_CLIENTES


GRANT SELECT ON USR_FACTURACION.FCT_CLIENTES TO ROL_CAJERO;

--PERMISOS PARA LA TABLA NOMI_EMPLEADOS


GRANT SELECT ON USR_NOMINA.NOMI_EMPLEADOS TO ROL_CAJERO;

--PERMISOS PARA LA TABLA FCT_UNIDAD


GRANT SELECT ON USR_FACTURACION.FCT_UNIDADES TO ROL_CAJERO;

GRANT SELECT ON USR_FACTURACION.FCT_UNIDAD_PRODUCTOS TO ROL_CAJERO;

--PERMISOS PARA LA TABLA FCT_UNIDAD_PRODUCTOS


-
--CREACION DEL ROL ADMIN_FACTURACION
CREATE ROLE ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA FCT_PRODUCTOS


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_PRODUCTOS TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA FCT_FACTURA_CABECERAS


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_FACTURA_CABECERAS TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA FCT_FACTURA_DETALLE


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_FACTURA_DETALLES TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA FCT_CLIENTES


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_CLIENTES TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA NOMI_EMPLEADOS


GRANT SELECT,INSERT,UPDATE ON USR_NOMINA.NOMI_EMPLEADOS TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA FCT_UNIDAD


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_UNIDADES TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA FCT_UNIDAD_PRODUCTOS


GRANT SELECT,INSERT,UPDATE ON USR_FACTURACION.FCT_UNIDAD_PRODUCTOS TO
ROL_ADMIN_FACTURACION;

--PERMISOS PARA LA TABLA NOMI_SALARIOS


GRANT SELECT,INSERT,UPDATE ON USR_NOMINA.NOMI_SALARIOS TO
ROL_ADMIN_FACTURACION;

-------------------------------------------
--PERMISOS DE EJECUCION:
GRANT EXECUTE ON USR_FACTURACION.Q_FUN_PROC TO ROL_ADMIN_FACTURACION;

------------------------------------------------------------------------
-------

--CREACION DE LOS USUSARIOS:

--USUARIO PARA EL DUENIO:


--NOMBRE:DANIEL AMAY
CREATE USER USR_FCT_DAMAY identified by cuenca default tablespace USERS
account unlock PROFILE default;
GRANT ROL_ADMIN_FACTURACION TO USR_FCT_DAMAY;

--CRER EL USUARIO PARA EL CAJERO


--NOMBRE:WILMER CAMAS

CREATE USER USR_WCAMAS identified by cuenca default tablespace USERS


account unlock PROFILE default;
GRANT ROL_CAJERO TO USR_WCAMAS;

--CREAR EL USUARIO PARA EL BODEGERO


--NOMBRE:EDISON HUINAIZACA
CREATE USER USR_EHUINAIZACA identified by cuenca default tablespace
USERS account unlock PROFILE default;
GRANT ROL_BODEGERO TO USR_EHUINAIZACA;

--CREATE SESSION
GRANT CREATE SESSION TO USR_FCT_DAMAY WITH ADMIN OPTION
GRANT CREATE SESSION TO USR_WCAMAS WITH ADMIN OPTION
GRANT CREATE SESSION TO USR_EHUINAIZACA WITH ADMIN OPTION

--REVOKAR PERMISOS
REVOKE rol_cajero from USR_WCAMAS;
REVOKE ROL_ADMIN_FACTURACION FROM USR_FCT_DAMAY;

---USUARIO PARA LA BITACORA


CREATE USER SEGURIDAD IDENTIFIED BY cuenca;

----------------------------
--PERMISOS PARA LA TABLA FCT_UNIDAD_PRODUCTOS (ejecutar trigers)
GRANT SELECT,INSERT,UPDATE ON SEGURIDAD.TABLA_AUDITORIA TO
USR_FACTURACION;
GRANT SELECT,INSERT,UPDATE ON SEGURIDAD.VALORES_TABLA_AUDITORIA TO
USR_FACTURACION;
GRANT SELECT,INSERT,UPDATE ON SEGURIDAD.CONTROL_ACTUALIZA_DESCRIPCION
TO USR_FACTURACION;
Ejecucion de los triggers:

Trigger de Actualización:

Trigger que actualiza la descripción de un producto, y guarda los datos


de actualización en una tabla llamada Control_Acutalizacion la cual guarda
que usuario hizo la actualización, la fecha de actualización, el id del
producto, la antigua descripción y la nueva descripción:

create or replace trigger tr_actualizar_prod_descripcion


before update of prod_descripcion
on fct_productos
for each row
begin
insert into SEGURIDAD.CONTROL_ACTUALIZA_DESCRIPCION values
(user,sysdate,:new.prod_id,:old.prod_descripcion,:new.prod_descripcion);
end tr_actualizar_prod_descripcion;

Funcionamiento:

--EJECUCION TRIGGER DE ACTUALIZACION "USR__FCT_DAMAY"

SELECT * FROM USR_FACTURACION.FCT_PRODUCTOS;

UPDATE USR_FACTURACION.FCT_PRODUCTOS SET PROD_DESCRIPCION='LIMON' WHERE


PROD_ID=19;

COMMIT;

Select para ver los Productos:


SELECT * FROM USR_FACTURACION.FCT_PRODUCTOS;
Actualizando el producto numero 19 cambiando de Limón a Arroz

En el usuario Seguridad guarda el usuario que hizo cambio, guardando datos


como el nombre del usuario, fecha, id producto, antigua descripción y la
nueva descripción.

Trigger usando when:

Este Trigger es para que ningún empleado gane un salario menor al sueldo
mínimo en caso de que se inserte o actualiza un valor menor a 375 la
excepción saldrá:

CREATE OR REPLACE TRIGGER TR_CONFIRMAR_SUELDO


BEFORE INSERT OR UPDATE OF SALA_MONTO ON NOMI_SALARIOS
FOR EACH ROW
WHEN (new.SALA_MONTO < 375)

BEGIN

if :new.SALA_MONTO < 375 then


raise_application_error(-20000, 'EL EMPLEADO NO PUEDE GANAR
MENOS DEL SUELDO BASICO !!!');
end if;

IF UPDATING THEN
if :new.SALA_MONTO < 375 THEN
raise_application_error(-20000, 'EL EMPLEADO NO PUEDE GANAR
MENOS DEL SUELDO BASICO !!!');
end if;
end if;
END;

Funcionamiento:

Inserta correctamente cuando el salario es mayor o igual a 375 $

Si se quiere insertar un salario menor al sueldo básico salta la


sigiente excepción.

Al momento de actualizar también valida de la misma manera, que cuando


se actualiza un salario menor a 375 salta la excepción
Trigger usando ‘before’ y la sentencia raise_application_error:

Este Trigger se encarga de comprobar que la edad de ningún empleado sea


menor a 18 años ya sea al momento de insertar o actualiza información:

CREATE OR REPLACE TRIGGER TR_EDAD_MINIMA


before insert or update
of empl_edad on nomi_empleados
for each row
DECLARE
edad_minima nomi_empleados.empl_edad%type;
begin
if :new.empl_edad < 18 then
raise_application_error(-20000, 'EL EMPLEADO NO PUEDE SER
MENOR DE EDAD !!!');
end if;

IF UPDATING THEN
if :new.empl_edad < 18 THEN
raise_application_error(-20000, 'EL EMPLEADO NO PUEDE SER
MENOR DE EDAD !!!');
end if;
end if;
End;
Funcionamiento:

Verifica al momento de insertar que el empleado no sea menor de edad:

Si se inserta un empleado mayor de edad no hay problema


Al momento de actualizar también valida que la edad sea mayor a 18:

--TRIGGER DE AUDITORIA QUE SE EJECUTA EN LOS EVENTOS AFTER


,INSERCION,ACTUALIZACION Y BORRADO

--TRIGGER
CREATE OR REPLACE TRIGGER Audit_Productos
AFTER INSERT OR UPDATE OR DELETE ON FCT_UNIDADES
FOR EACH ROW
BEGIN
IF INSERTING THEN
INSERT INTO SEGURIDAD.TABLA_AUDITORIA
VALUES (Audit_seq. NEXTVAL, USER, SYSDATE,
'FCT_UNIDADES', 'INSERT',:new.UNI_ID);
ELSIF DELETING THEN
INSERT INTO SEGURIDAD.TABLA_AUDITORIA
VALUES (Audit_seq. NEXTVAL, USER, SYSDATE,
'FCT_UNIDADES', 'DELETE',:old.UNI_ID);
ELSE
INSERT INTO SEGURIDAD.TABLA_AUDITORIA
VALUES (audit_seq. NEXTVAL, USER, SYSDATE,
'FCT_UNIDADES', 'UPDATE',:old.UNI_ID);

IF UPDATING ('UNI_PRECIO') THEN


INSERT INTO SEGURIDAD.VALORES_TABLA_AUDITORIA
VALUES (Audit_seq. CURRVAL, 'UNI_PRECIO',
: old.UNI_PRECIO,:new.UNI_PRECIO);

ELSIF UPDATING ('UNI_DESCRIPCION') THEN


INSERT INTO SEGURIDAD.VALORES_TABLA_AUDITORIA
VALUES (Audit_seq. CURRVAL, 'UNI_DESCRIPCION',
TO_CHAR(:old.UNI_DESCRIPCION),
TO_CHAR(:new.UNI_DESCRIPCION));
END IF;
END IF;
END;

Funcionamiento:

Se realizó las siguientes inserciones y actualizaciones la cual se verán


reflejadas en las tablas de auditoria en el usuario de Seguridad

insert into USR_FACTURACION.FCT_UNIDADES values (7,'KILOGRAMOS',5);


insert into USR_FACTURACION.FCT_UNIDADES values (8,'LITROS',2);
insert into USR_FACTURACION.FCT_UNIDADES values (9,'GRAMOS',1);
insert into USR_FACTURACION.FCT_UNIDADES values (10,'ONZA',0);

UPDATE USR_FACTURACION.FCT_UNIDADES SET UNI_DESCRIPCION='LITRO' WHERE


UNI_ID=8;
UPDATE USR_FACTURACION.FCT_UNIDADES SET UNI_DESCRIPCION='BOTE' WHERE
UNI_ID=9;

Tablas de Auditoria:
CONCLUSIONES: cada estudiante cuenta con conocimientos necesarios y
suficientes para poder administrar correctamente una base de datos
haciendo que el sistema sea más seguro de usar para todos los usuarios
del sistema.

También podría gustarte