Sunteți pe pagina 1din 63

USUARIOS

I.S.T.P. CIBERTEC
Seguridad y Administracin de
Usuarios

Recordando...
Seguridad La informacin es un importante activo de la
empresa, por ende es importante protegerla y resguardarla
Auditoria. Es importante conocer las actividades que se
han venido realizando sobre la BD, para futuras medidas
preventivas
El alumno despus de esta sesin ser capaz de:
Implementar seguridad en Oracle
Implementar una auditoria pro-activa
Objetivos de la sesin


Contenidos
Niveles de seguridad
Implementacin de la seguridad
Auditoria en Oracle
Obtencin de informacin del diccionario de datos
Niveles de seguridad
Para acceder a la BD primero hay que acceder a la
plataforma (maquinas , ambientes)
Luego pensamos en la seguridad del sistema
operativo
Cuando se ha asegurado los niveles previos se
planifica la seguridad a nivel de BD
Implementacin de Seguridad
Privilegios para el usuario.
SQL> CREATE USER ADCESAR IDENTIFIED BY ADMINISTRATIVO
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE temp
QUOTA 15M ON USERS;
Creacin de usuarios
Mostrar las columnas de datos de los usuarios
SQL> SELECT username , password,
profile FROM dba_users
WHERE username = ADCESAR ;

Mostrar los datos de un usuario
especifico
Conectarse con el usuario creado
SYSTEM>GRANT CREATE SESSION TO ADCESAR ;
Privilegio Capacidades Otorgadas
SELECT Puede consultar a un objeto.
INSERT
Puede insertar filas en una tabla o vista. Puede
especificarse las columnas donde se permite insertar
dentro de la tabla o vista.
UPDATE
Puede actualizar filas en una tabla o vista. Puede
especificarse las columnas donde se permite
actualizar dentro de la tabla o vista.
DELETE Puede borrar filas dentro de la tabla o vista.
ALTER Puede alterar la tabla.
INDEX Puede crear ndices de una tabla.
REFERENCES
Puede crear claves ajenas que referencia a esta
tabla.
EXECUTE Puede ejecutar un procedimiento, paquete o funcin.

Privilegios sobre Objetos
GRANT Privilegio(s)ON Objeto TO Usuario/Rol
Privilegios sobre Objetos
GRANT CREATE TABLE, CREATE VIEW, CREATE
PROCEDURE,CREATE SYNONYM, ALTER TABLE, TABLE,
DROP VIEW TO ADCESAR;
GRANT DROP TABLE, DROP VIEW, DROP
PROCEDURE,DROP SYNONYM TO ADCESAR;
GRANT SELECT ON SCOTT.EMP TO
ADCESAR;
GRANT INSERT ON SCOTT.DEPT TO
ADCESAR;


Mltiples Permisos
Conectarse como usuario SYSTEM a la base y crear un
usuario llamado contador autentificado por la base de
datos. Indicar como "tablespace" por defecto USERS y como
"tablespace" temporal TEMP; asignar una cuota de 500K en
el "tablespace" USERS.
Ejercicio
CREATE USER CONTADOR
IDENTIFIED BY CONTA
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA 500K ON USERS;
Ejemplo :
CREATE TABLESPACE BDADMIN
DATAFILE c:\data\ADDBCURSO.DBF
SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE
UNLIMITED;

ASIGAR TABLESPACE A
USUARIOS
CREATE USER GERENTEVENTA
IDENTIFIED BY GVENTA
DEFAULT TABLESPACE BDADMIN
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON BDADMIN;

Crear los usuarios PRUEBA00,PRUEBA01 y
PRUEBA02 y a todos aplicarles los tablespace
users y temp.
Ejercicio
Help: desc dba_sys_privs
select * from dba_sys_privs where privilege
='CREATE USER';

Hacer lo mismo para el privilegio create
session.


Averiguar que usuarios de la base de datos tienen
asignado el privilegio
create user de forma directa, qu vista debe ser
consultada?.

Eliminacin de usuarios
Los usuarios pueden ser eliminados de la BD utilizando el
comando DROP USER. Este comando tiene un nico
parmetro, CASCADE, el cual permite borrar todos los
objetos del usuario antes de eliminar el usuario.

SQL> DROP USER ADCESAR CASCADE
;
Crear un rol llamado CONEXIN y asignarle
el permiso CREATE SESSION.
SQL> create role conexion;
Role created.
SQL> grant create session to conexion;
Grant succeeded.
ROLES
Asignar el rol CONEXIN a los usuarios
prueba00, prueba01 y prueba02.
SQL> grant conexion to prueba00, prueba01, prueba02;

ROLES
Comprobar en la vista correspondiente cuales son
los roles asignados a los usuarios prueba00,
prueba01 y prueba02.
SQL> select * from dba_role_privs where grantee in
('PRUEBA00','PRUEBA01','PRUEBA02');
EJERCICIO
Averiguar que usuarios o roles de base de datos
tienen asignado el privilegio ALTER USER.
SQL> connect system
Introduzca su clave:
Conectado.
SQL> select * from dba_sys_privs where
privilege='ALTER USER';
Ejercicio
Crear un rol llamado DESARROLLO y asignarle los
permisos "CREATE SEQUENCE", "CREATE SESSION",
"CREATE SYNONYM", "CREATE TABLE" y"CREATE
VIEW".
Asignar el rol DESARROLLO a los usuarios
prueba00,prueba01 y prueba02.
Ejercicio Propuesto
grant create sequence, create session, create
synonym, create table, create
view to DESARROLLO;

SQL> grant desarrollo to PRUEBA00,
PRUEBA01, PRUEBA02;


SOLUCIN
Asignar el permiso DROP USER al rol CONEXION.
SQL> grant drop user to CONEXION;
Asignar cuota ilimitada al usuario prueba02 en el
"tablespace" NOMINA.

SQL> connect system
Introduzca su clave:
Connected.
SQL> alter user prueba02 quota unlimited on
academo;


Ejercicio
Consultar los privilegios de sistema que tiene
asignados de forma directa el usuario
administrador, revocarlos y asignarle el rol
admin..
SQL> select * from dba_sys_privs where grantee
='ADMINISTRADOR'
GRANTEE PRIVILEGE ADM
--------------------------------------------------------------
-----------------
ADMINISTRADOR CREATE SESSION NO
ADMINISTRADOR CREATE USER NO
SQL> revoke create session from
administrador;

Solucin
Averiguar que usuarios o roles de base de
datos tienen asignado el privilegio
ALTER USER.

select * from dba_sys_privs where
privilege='ALTER USER';
Esta sentencia sirve para crear un perfil de usuario.
Un perfil de usuario es una forma de limitar los
recursos que puede utilizar un usuario.
Cada usuario puede tener un nico perfil.
Antes de asignar un perfil a un usuario es necesario
que este perfil exista en la base de datos.
Un perfil se asigna en la creacin de un usuario
CREATE USER o modificandolo ALTER USER.

PERFILES
Los recursos que limitamos son recursos del kernel:
uso de la CPU, duracin de sesion,...
Y tambien limites de uso de las claves de acceso
(passwords): duracin, intentos de acceso, reuso, ...

PERFIL
Por ejemplo: ALTER PROFILE default
LIMIT IDLE_TIME 20; Limita el perfil por
defecto a 20 minutos. IDLE_TIME: Es el
tiempo que puede estar una sesin sin
hacer nada antes de ser cerrada.

PERFIL
ALTER PROFILE default LIMIT IDLE_TIME 20;
Limita el perfil por defecto a 20 minutos.
IDLE_TIME: Es el tiempo que puede estar
una sesin sin hacer nada antes de ser
cerrada.
UNLIMITED= No hay limites sobre un recurso
en particular.
DEFAULT= Coge el limite del perfil default.

Borrado de un perfil:

DROP PROFILE NOMBREPERFIL [CASCADE];
Operaciones con perfiles
SESSIONS_PER_USER . Nmero de sesiones concurrentes.
CONNECT_TIME. Tiempo total para una sesin (minutos).
IDLE_TIME. Tiempo de inactividad continua en una sesin
(minutos).
LOGICAL_READS_PER_CALL. Numero de bloques de datos
para una llamada de una SQL.
PRIVATE_SGA Cantidad de espacio, en bytes, para uso privado
reservado en la shared poolde la SGA (se emplea K o M para
indicar kilobyte o megabytes). Solo en Shared Server.
FAILED_LOGIN_ATTEMPTS. Nmero de intentos fallidos de
conexin antes del bloqueo.


Recurso de perfiles
PASSWORD_LIFE_TIME
Nmero de das en que la clave es vlida para autenticacin. Se indica un valor para
PASSWORD_GRACE_TIME, la clave expira si no se cambia en este periodo. Sino se indica valor
para PASSWORD_GRACE_TIME , por defecto UNLIMITED , se genera un aviso pero el usuario
puede seguir conectndose.

PASSWORD_GRACE_TIME . Periodo de gracia donde se permite la conexin
pero se notifica la necesidad de cambiarla.

PASSWORD_REUSE_TIME . Nmero de das en los cuales la contrasea no
puede reutilizarse.

PASSWORD_REUSE_MAX . Nmero de cambios de clave necesarios antes de
poder reutilizar la clave actual.

PASSWORD_LOCK_TIME . Nmero de das que la cuenta estar bloqueada
despus de un cierto nmero de fallos de conexin indicado

Recurso de perfiles
Recurso Descripcin
SESSION_PER_USER El nmero de sesiones concurrentes que un usuario puede tener en una instancia.
CPU_PER_SESSION El tiempo de CPU, en centenas de segundos, que una sesin puede utilizar.
CONNECT_TIME El nmero de minutos que una sesin puede permanecer activa.
IDLE_TIME
El nmero de minutos que una sesin puede permanecer sin que sea utilizada de
manera activa.
LOGICAL_READS_PER_SESSION El nmero de bloques de datos que se pueden leer en una sesin.
LOGICAL_READS_PER_CALL El nmero de bloques de datos que se pueden leer en una operacin.
PRIVATE_SGA
La cantidad de espacio privado que una sesin puede reservar en la zona de SQL
compartido de la SGA.
COMPOSITE_LIMIT
El nmero de total de recursos por sesin, en unidades de servicio. Esto resulta de
un calculo ponderado de CPU_PER_SESSION, CONNECT_TIME,
LOGICAL_READS_PER_SESSION y PRIVATE_SGA, cuyos pesos se pueden variar con el
comando ALTER RESOURCE COST.
Los factores ms importantes que
puede limitar son
CREATE profile PRACTICANTE
limit sessions_per_user 5
cpu_per_session unlimited
cpu_per_call 6000
connect_time 480
idle_time 60
failed_login_attempts 3
password_life_time 180;
Un ejemplo de script sera:
CREATE USER CONTADOR
IDENTIFIED BY jpz
DEFAULT TABLESPACE users
TEMPORARY TABLESPACE temp
PROFILE PRACTICANTE
ALTER USER CONTADOR PROFILE PRACTICANTE;

Ejercicio 01

select username, default_tablespace,
temporary_tablespace, profile
from dba_users
where username = CONTADOR;
Mostrar los datos del usuario
CONTADOR
Viendo el perfil en accin
Ahora vamos a probar un perfil como que por
ejemplo. Tendr un tiempo de inactividad de 1
minuto y un lmite de intentos fallidos de 3:
> create profile lim_prueba
limit 2 idle_time 1
failed_login_attempts 3;

Buscar en la documentacin en lnea y en bd
el contenido de las vistas:
dba_profiles
dba_roles
dba_users
dba_role_privs
dba_tab_privs
dba_sys_privs




Propuesto 01
Conectado como usuario "administrador", crear el usuario
prueba03 autentificado por base de datos y asignando
cuotas en el "tablespace ACADEMO (500K) y NOMINA
(200K). Su "tablespace" temporal ser TEMP.

create user prueba03
identified by prueba03
default tablespace academo
temporary tablespace temp
quota 500k on academo
quota 200k on nomina





Propuesto 02
Indicar la utilidad del fichero de inicializacin
y verificar en su PC. si est activado el modo
de limitacin de recursos.






Propuesto 03
Averiguar que usuarios de base de datos o que
roles tienen asignado el privilegio CREATE
PROFILE.
Asignar el permiso CREATE PROFILE al rol
CONEXION.
Consultar que perfiles tiene asignados cada
usuario de la base de datos.







Propuesto 04
Crear un perfil llamado DESARROLLO con
las especificaciones de la tabla e indicar que
quiere decir cada una de ellas.




Propuesto 07
Asignar el perfil anterior a los usuarios prueba00,
prueba01,prueba02 y prueba03.
Intentar la conexin dos veces como usuario
prueba01 fallando la contrasea, qu sucede?.
Comprobar si la cuenta ha sido bloqueada en la
vista de base de datos correspondiente.

utilizar la vista
dba_users





Propuesto 07
Crear un usuario prueba04 con el parmetro
password expire, sus "tablespace" por defecto y
temporal sern USERS (cuota 0k) y TEMP. Asignar
los roles CONEXIN y DESARROLLO. Conectarse
como usuario prueba04,
qu sucede?.



Propuesto 09
Bloquear la cuenta del usuario prueba04, qu
sucede al conectarse de nuevo?.

alter user prueba04 account lock;

Qu mensaje muestra?



Propuesto 10
Cambia la identificacin del usuario prueba01
de forma que sea identificado por el sistema
operativo. Y luego mostrar todos los datos del
mismo.

alter user prueba01 identified externally;
La consulta es?


Propuesto 11
Modificar los valores del perfil DESARROLLO
segn se indica en la siguiente tabla, caso no se
pueda indicar la causa.




Propuesto 12
Averiguar que usuarios o roles tienen asignado el
privilegio ALTER PROFILE.
Help: Utilizar la vista dba_sys_privs

Propuesto 13
Desbloquear la cuenta del usuario prueba04.
Indicar la utilidad de cada parmetro para el
perfil.





Propuesto 14

SQL> alter user prueba01 temporary
tablespace temp_academo;

SQL> alter user prueba01 default tablespace
academo;


.Asignar al usuario prueba01 los "tablespace"
ACADEMO y TEMP_ACADEMO
como "tablespace" de trabajo y temporal
respectivamente (sin especificar
cuota).

PROPUESTO 16
Consultar en las vistas correspondientes los
"tablespace" y la cuota en cada uno de ellos
que tiene los usuarios prueba01 y
prueba02.

select * from dba_ts_quotas where username in
('PRUEBA01','PRUEBA02');


PROPUESTO 18
Consultar en las vistas correspondientes los
"tablespaces" y la quota en cada uno de ellos
que tiene los usuarios SYS, SYSTEM,
administrador, prueba00 y prueba01.
Qu ha ocurrido con el usuario
prueba01?.

PROPUESTO 19
select substr(username,1,15) usuario,
DEFAULT_TABLESPACE ,
TEMPORARY_TABLESPACE 2 from dba_users
where username in
('SYS','SYSTEM','ADMINISTRADOR','PRUEBA00','P
RUEBA01');

Solucin 19
Crear, conectado como SYSTEM, un usuario
llamado prueba01 autenticado por base de
datos al que no se le asigne "tablespace" por
defecto ni temporal.

Conectarse como usuario prueba01 y crear
la tabla siguiente en el "tablespace"
ACADEMO:

CREATE TABLE CODIGOS
(CODIGO varchar2(3),
DESCRIPCION varchar2(20))
TABLESPACE ACADEMO
STORAGE (INITIAL 64K
NEXT 64K
MINEXTENTS 5
MAXEXTENTS 10);
Es posible hacerlo?, falta algn permiso?.


PROPUESTO 20
Averiguar los privilegios de sistema y sobre objetos, as como
los roles, que tiene asignados los roles por defecto CONNECT,
RESOURCE, DBA, EXP_FULL_DATABASE e
IMP_FULL_DATABASE.
Considera una buena poltica de seguridad asignar el rol
CONNECT a todos los usuarios que precisan conectarse a la
base de datos?.

Select * from dba_role_privs
Where grantee in
('CONNECT','RESOURCE','DBA','EXP_FULL_DATABASE','IMP_FULL
_DATABASE')
order by grantee, granted_role


Ejercicio 21
Conectarse como usuario SYSTEM y otorgar al
usuario X" el permiso para seleccionar datos de la
tabla tb1 (pertenece al usuario Y").
Qu sucede?, por qu?.

Comprobar en la vista apropiada del diccionario de
datos los roles activos para el usuario de la sesin
actual.


Ejercicio 22
Matar una sesin nos permite deshabilitar al
usuario para realizar cualquier operacin hasta
que el usuario se vuelva a conectar. Para matar
una sesin se debe seguir 2 pasos :
1. Reconocer el identificador y la serie del usuario
conectado.
2. Utilizando el comando Kill hacer referencia al
SID y al SERIAL del la sesin abierta por el
usuario
matar una sesin de usuario
SELECT sid,serial#,username,program from
v$session;

1.- Mostramos el Sid y el Serial
ALTER SYSTEM KILL SESSION 10,30;
2.- Desactivamos al usuario
utilizando su id y serial

S-ar putea să vă placă și