FACULT FACULTAD AD DE INGEN INGENIER IERIAS IAS INDUST INDUSTRIA RIALL SIST SISTEM EMAS AS E INFO INFORM RMAT ATIC ICA A ESCUE ESCUELA LA ACADEM ACADEMIC ICO O PROFES PROFESIO IONA NALL DE INGENIERIA INGENIERIA DE INFORMATICA INFORMATICA
CURSO BASE DE DATOS
ORAC ORACLE LE 11 g – ADMI ADMINI NIST STRA RACI CION ON SEPARATA Nº 04 SEGURIDAD
DOCENTE ING. CIP EDWIN IVAN FARRO PACIFICO
HUACHO-LIMA PERU
SEGU RIDAD Tiene que ver con el acceso de los usuarios a la Base de Datos. Tiene que ver con el ingresar(conectarse) Tiene que ver con los privilegios Los privilegios pueden ser de dos tipos: a) Del sistema.- Es el acceso a la base de datos b) De los datos.- Acceso a los objetos de la base de datos •
ESQUEMAS Conjunto de objetos que pertenecen al usuario. Un usuario puede ser propietario de un objeto. Tiene todos los derechos de un objeto, es decir es el OWNER. Un objeto sólo puede tener un propietario, es la persona que otorga privilegios sobre los objetos. ¿Cuando un usuario se convierte en propietario? Cuando crea el objeto
Ejercicio Con ectarse como scoot y la contraseña tiger Crear la siguiente tabla: SQL> CREATE TABLE clientes (idcliente number(5), nombclie varchar2(50)) Ingresar el siguiente registro: INSERT INTO clientes VALUES (1 ,'ANA TORRES') Ahora conectese como system y ejecute la siguiente instrucción para ver los registros de la tabla clientes SQL> SELECT * FROM clientes; No hay resultado, para verlo debe poner el nombre del propietario: SQL>SELECT * FROM scott.clientes; Un usuario puede no tener esquema, cuando no tiene objetos. Cuando un usuario tiene esquema, quiere decir que tiene objetos, es decir Quota en el TableSpace. ¿Qué es una quota? Espacio asignado al TableSpace
PRIVILEGIOS DEL SISTEMA Son aquellos derechos generales sobre la base de datos, tiene que ver con el entorno de la base de datos y tienen que ver con la administración de la base de datos. La mayoría de los derechos del sistema son pertenecientes al DBA. Son más de 100 privilegios. La ventaja es que cada privilegio está asociado a un comando.
Ing. CIP Edwin Iván Farro Pacífico
Pag. 2
Ejemplo: CREATE USER DROP TABLE DROP USER CREATE VIEW
del dba, que es la posibilidad de crear ususarios. del dba. del dba. del dba.
CREAR USUARIOS Crear usuario
1. Conectarse como system y privilegio sysdba. 2. Crear el usuario jose SQL> CREATE USER jose IDENTIFIED BY oracle; 3. Abrir sesión como jose y clave oracle. No se podrá conectarse ya que no tiene privilegios suficientes. Privilegios de inicio de sesión
1. Vuelva a conectarse como system y sysdba. Dar privilegios para iniciar sesión. 2. Digitar la siguiente instrucción: SQL> GRANT CREATE SESSION TO jose; Ahora conectarse como jose. 3. Tratar de ver el contenido de la tabal clientes de scout. Digitar la siguiente instrucción: SQL> SELECT * FROM scout.clientes; Privilegios insuficientes SQL>CREATE TABLE temporal (idtemporal number(5)); Privilegios insuficientes Privilegios de creación de tablas, procedimientos y vistas.
1. Vuelva a conectarse como system y sysdba. Dar privilegios para iniciar sesión. Digitar la siguiente instrucción: SQL>GRANT CREATE TABLE, CREATE PROCEDURE,CREATE VIEW TO jose; 2. Ahora desde el usuario jose crear la siguiente tabla: CREATE TABLE productos (idproducto number(5), nombprod varchar2(50), precprod decimal(1 0,2)
Ing. CIP Edwin Iván Farro Pacífico
Pag. 3
CONSTRAINT pk_idproducto PRIMARY KEY(idproducto)); No hay suficientes privilegios porque no tiene quota.
ROLES Son conjuntos de privilegios, es un identificador al cual ya viene asignado una cantidad de privilegios, es equivalente a crear las funciones de un grupo de usuarios. En realidad es un conjunto de privilegios. El rol es asignado a usuarios, si le das un privilegio al rol es asumido por los usuarios conectados a ese rol. Privilegio 1 Privilegio 2 Privilegio 3
Usuario 1 Rol
Usuario 2 Usuario 3
Privilegio 4
SYSDBA Existe el rol SYSDBA, que contiene los privilegios de los administradores.
PUBLIC ES un rol al cual pertenecen todos los usuarios. Todos los usuarios que existen pertenecen a PUBLIC. Todos los privilegios asignados a PUBLIC son asignados a los usuarios. Como sysdba crear el usuario maria siguiendo los siguientes pasos: 1. SQL> GRANT CREATE SESSION TO PUBLIC 2. SQL> CREATE USER maria IDENTIFIED BY oracle 3. Iniciar session como maria ¿Porqué maria se pudo conectar y jose no? Porque se asignó al privilegio PUBLIC el CREATE SESSION.
CREAR ROLES Procedimiento: 1. Iniciar sesión como sysdba. 2. Crear el role cajero. SQL> CREATE ROLE cajero; 3. Asignar privilegios al role cajero. SQL> GRANT create session,create table TO cajero 4. Este role se puede asignar a diferentes usuarios, se lo asignaremos a jose y maria.
Ing. CIP Edwin Iván Farro Pacífico
Pag. 4
SQL> GRANT cajero TO maria ,jose;
MODIFICAR CONTRASEÑA Modificar la contraseña de jose, la cual será tiger. SQL> ALTER USER jose IDENTIFIED BY tigre;
PRIVILEGIOS DEL OBJETO Son aquellos que tiene que ver con los esquemas, con aquellos objetos que mantienen información. El propietario del objeto es quien los asigna. ¿Cuáles son los objetos vinculados a estos privilegios? Tblas, vistas, procedimientos. Tabla Vista Alter X Delete X X Execute Update X X Insert X X Select X X Index X References X X
Secuencia X
Procedimiento
X
X
Ejercicio Conceder a jose privilegios para listar el contenido de la tabla emp que pertenece al usuario scott. Procedimiento: 1. Iniciar sesión como scott. 2. Dar privilegios a jose. SQL> GRANT select ON emp TO jose; 3. Iniciar sesión como jose y listar la tabla emp de scout. SQL>SELECT * FROM scott.emp; 4. Ahora inserter el siguiente registro: SQL> INSERT INTO scott.emp(empno,ename,sal) VALU ES(7777,'SALES', 1000); Privilegios insuficientes.
Ing. CIP Edwin Iván Farro Pacífico
Pag. 5
Ejercicio Conceder a jose privilegios para insertar o borrar registros de tabla emp que pertenece al usuario scott. Procedimiento: 1. 2.
Iniciar sesión como scott. Dar privilegios a jose.
SQL>GRANT insert,delete ON emp TOjose 3. Ahora inserter el siguiente registro: SQL> INSERT INTO scott.emp(empno,ename,sal) VALU ES(7777,'SALES', 1000); 5. Ahora modificar el salario por 1500 SQL> UPDATE scott.emp SET sal=1500 WHERE empno=7777 Privilegios insuficientes.
6. Iniciar sesión como scott. 7. Dar privilegios a jose.
Ejercicio Conceder a jose privilegios para modificar registros de tabla emp que pertenece al usuario scott. Procedimiento: 1. Iniciar sesión como scott. 2. Dar privilegios a jose. SQL>GRANT update(ename) ON emp TOjose 3. Ahora actualizar el salario. SQL> UPDATE scott.emp SET sal=1500 WHERE empno=7777 Privilegios insuficientes. ¿Por qué? Porque sólo se ha dado permiso para actualizar el atributo ename
Ing. CIP Edwin Iván Farro Pacífico
Pag. 6
Nota: Sólo se pueden especificar que campos con la sentencia SELECT y UPDATE.
ASIGNAR PRIVILEGIOS A UN DETERMIANDO ROL Ejercicio
Desde el usuario scoot asignar privilegios para mostrar el contenido de la tabla dept al role cajero. 1. Iniciar sesión como scott y dar privilegios al role cajero. SQL>GRANT select ON dept TO cajero; 2. Iniciar session como maria y ejecutar la siguiente instrucción: SQL>SELECT * FROM scoot.dept; 3. Iniciar sesión como jose y ejecutar la siguiente instrucción: SQL>SELECT * FROM scoot.dept; Hay varias vistas del diccionario de datos del SYSDBA. ROLE_SYS_PRIVS ROLE_TAB_PRIVS USER_ROLE_PRIVS USER_TAB_SYS_PRIVS USER_TAB_PRI VS_MADE Privilegios del usuario en la tabla. USER_SYS_PRIVS Privilegios del sistema otorgados al usuario.
QUITAR PRIVILEGIOS Lo hace el el administrador como SYSDBA.
Ejercicio 1 Quitar el ROLE cajero a jose y maria. SQL> REVOKE cajero FROM jose,maria;
Ejercicio 2 Quitar el privilegio de inicio de sesión. SQL> REVOKE create SESSION FROM public; Aquí estamos manipulando los esquemas, tablas, vistas, triggers, restricciones, indices y sinónimos. Para crear un usuario se deben tener en cuenta las siguientes consideraciones: Si va a crear objetos (va a tener un esquema) a que TableSpace va a acceder. Un TableSpace va a tener quota. Esta quota debe estar definida en un espacio en cada TableSpace. Si va a tener esquema tendrá un tableSpace por defecto. Recuerde cuando jose trató de crear tabla salió que no tenia privilegios de system, ya que por defecto intentó tomar el TableSpace de System.
Ing. CIP Edwin Iván Farro Pacífico
Pag. 7
• •
Se le puede asignar un TableSpace y un Temporary. Se puede crear el usuario y los roles.
Listar los TableSpace que tenemos: SQL> SELECT * FROM v$tablespace;
Crear un usuario en el TableSpace users. SQL> CREATE USER pepe IDENTIFIED BY oracle DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 15M ON users QUOTA 15M ON example; SQL> GRANT create session,create table TO pepe; SQL> GRANT select ON scott.emp TO pepe;
Iniciar sesión como pepe: Ejercicio 1 Crear la siguiente tabla SQL> create table dist (iddistrito number(2), nombdist varchar2(50), constraint pk_iddistrito primary key(iddistrito)); Por defecto va al user dba_tables; dba_tables;
Ejercicio 2 Crear una tabla en el TableSpace example. SQL> CREATE TABLE emp (empno number(4), ename varchar2(30), constraint pk_empno primary key(empno)) tablespace example;
Ejercicio 3 Insertar registros de la tabla emp de scott hacia la tabla emp de pepe. SQL> INSERT INTO emp(empno,ename) select empno,ename from scott.emp;
Ing. CIP Edwin Iván Farro Pacífico
Pag. 8
EXAMPLE 15M
pepe 15M
USERS
pepe.emp
pepe.dist
Se llenaron las 1 5M y pepe necesita más espacio. SQL> ALTER USER pepe QUOTA 30M ON users;
BORRAR USUARIO. SQL>DROP USER pepe CASCADE; No podrá borrar al usuario pepe ya que este debe estar desconectado.
VISTAS DEL SISTEMA DBA_USERS DBA_TS_QUOTAS
PRIVILEGIOS DBA Administrador de la base de datos.
ANY Tiene el privilegio “ANY” sólo de los dba porque les da amplitud en cualquier esquema. CREATE any table. DROP any table.
Ejercicio SQL> GRANT CREATE any table TO scott;
WITH ADMIN OPTION Además de asignar el privilegio le da la posibilidad de asignarlo a otro. SQL> GRANT CREATE SESSION TOjose WITH ADMIN OPTION;
Ing. CIP Edwin Iván Farro Pacífico
Pag. 9
José puede crear sesión y puede asignarlo a otros usuarios.
PRIVILEGIOS EXCLUSIVOS DEL DBA shutdown startup. alter database create database y todo lo que tenga que ver con los tablespace. Ejercicio
Crear el usuario Manuel con privilegios de administrador. SQL> GRANT DBA TO maria;
WITH GRANT OPTION Privilegios de los objetos. Así como se recibe los objetos se puede asignar. Crearelusuarioana SQL> CREATE USER ana IDENTIFIED BY oracle DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA 15M ON users QUOTA 15M ON example; SQL> GRANT create session TOana; SQL> GRANT select ON scott.emp TOana; SQL>GRANT INSERT ON scott.emp TO ana WITH GRANT OPTION Da privilegio de insert a otros usuarios. Ing. CIP Edwin Iván Farro Pacífico
Pag. 10
ROLES CON PRIVILEGIOS DE DBA Crear el role ventas con la clave oracle
SQL> CREATE ROLE ventas IDENTIFIED BY oracle; Asignar privilegios al role ventas:
SQL> GRANT ventas TO ana; Nota: Cerrar sesión ana y volver a iniciar
Ing. CIP Edwin Iván Farro Pacífico
Pag. 11
Alas Peruanas
Ahora crea la tabla vendedor SQL>CREATE TABLE vendedor (idvendedor varchar2(5), nombvend varchar(2) contraint pk_idvendedor primary key(idvendedor))
ACTI VAR ROLES SQL>SET ROLE ventas IDENTIFIED BY oracle; Crear ROLES y asignarlos a ana SQL>CREATE ROLE caja; SQL> CREATE ROLE compras; SQL>GRANT caja,compras TOana;
QUITAR ROLES Quitar el role caja. SQL> REVOKE caja,compras FROM ana;
BORRAR ROLES Borrar los roles caja y compras SQL> DROP ROLE compras; SQL> DROP ROLE caja;
AUDITORIA Seguimiento de la actividad de la base de datos. Almacena en una tabla todos los registros. Eventos Actividad sospechosa
La tabla es au$
Conectarse como sysdba y ejecutar la siguiente instrucción: SQL>SELECT * FROM sys.aud$; La auditoria por defecto está apagada.
Para mostrar el estado del sistema de auditoria digitar la siguiente instrucción: SQL> SHOW PARAMETER audit_trail;
Ing. CIP Edwin Iván Farro Pacífico
Pag. 12
Alas Peruanas Para activarla digitar la siguiente instrucción:
SQL> ALTER SYSTEM SET audit_trail=TRUE SCOPE=spfile; Desmontar la base de datos
SQL>shutdown immediate; Montar la base de datos.
SQL>startup; Para mostrar el estado del sistema de auditoria digitar la siguiente instrucción:
SQL> SHOW PARAMETER audit_trail; NAME
TYPE
VALUE
audit_trail
string
TRUE
Instrucción para auditar sesiones.
SQL>audit session; Ejercicio
1. Abrir session como ana. 2. Desde la ventana del sysdba digitar SQL>SELECT userid FROM sys.aud$;
Ver estructura de la vista: SQL>DESC sys.aud$; Visualizar userid de los que tengan éxito.
SQL> AUDIT session WHENEVER successful; Visualizar userid de los que no tengan éxito.
SQL> AUDIT session WHENEVER NOT successful; No grabar los inicios de sesión.
SQL> NOAUDIT session;
Lo que ana hace en las tablas: Ing. CIP Edwin Iván Farro Pacífico
Pag. 13
Alas Peruanas SQL> AUDIT table BY ana;
Auditar todo lo que pasa en la tabla emp desde la conexión: SQL> AUDIT ALL ON scott.emp BY session;
Auditar delete: SQL> AUDIT delete ON scott.emp BY session;
Auditar un privilegio. SQL> AUDIT CREATE trigger;
Ing. CIP Edwin Iván Farro Pacífico
Pag. 14