Taller de Seguridad, Backup y Recover en
una Base de Datos Oracle 10g
Instructor: Ing. Francisco Riccio.
OCA Oracle Database 10g
OCP Oracle Database 10g
MCTS SQL Server 2005
Email:
[email protected]
Fecha: 27 de Setiembre del 2008.
Ing. Francisco Riccio.
Página 1
Seguridad & Auditoria
Creando Usuarios y Roles
• Cada usuario que se conecta a nuestra base de datos debe contar con un usuario con fines
de auditoría.
• Un esquema es un usuario más sus objetos.
• Existen 3 modos de autentificar a un usuario y son: Password authentication (El password se
almacena en el data dictionary), external authentication (Confía en el sistema operativo su
autentificación) y global authentication (La autentificación se hace por mecanismos de
seguridad avanzada como kerberos, radius, biometrica y certificados X.509).
• Cada usuario tiene asignado por default un tablespace donde almacenará sus objetos, a un
tablespace temporal y a un profile (Sirve para limitar recursos al usuario y para asignarle
políticas de password).
Creando un usuario con autentificación de base de datos:
create user nombre identified by password;
Creando un usuario con autentificación por sistema operativo:
Previamente validar el parámetro: os_authent_prefix
create user ops$nombre identified externally;
Donde nombre es un usuario de sistema operativo.
Desbloqueando / Bloqueando un usuario:
alter user usuario account unlock;
alter user usuario account lock;
Expirando un password:
alter user usuario password expire;
Configurando quotas sobre tablespaces:
alter user xx identified by xx quota 100M | unlimited on USERS
Ing. Francisco Riccio.
Página 2
Garantizando y Revocando Privilegios
Tipos de privilegios:
• Objetos: Permisos sobre objetos: tablas, índices, stored procedures, etc.
Podemos permitir garantizar un privilegio de objeto a un usuario y este pueda también dar
este privilegio (WITH GRANT OPTION), no está disponible cuando el que va hacer
garantizado es un rol.
Observación: Cuando revocamos un privilegio a un usuario y este a la vez entregó
privilegios a un tercero, el tercero perderá el privilegio de acceder al objeto del primero.
Privilegio de Objetos: select, insert, update, delete, alter table, debug, execute, etc.
• Sistema: Permisos sobre operaciones de base de datos tales como: crear usuarios, alterar la
base de datos, etc.
Podemos permitir garantizar un privilegio de sistema a un usuario y este pueda también dar
este privilegio (WITH ADMIN OPTION),
Observación: Si un usuario otorga privilegios de sistema a otro usuario con la opción with
admin option y a la vez este segundo usuario le da privilegios a un tercero.
Luego cuando se haga un revoke al segundo, el tercero sigue manteniendo el privilegio
otorgado.
Privilegio de Sistema: alter database, alter system, audit system, create any (table – index –
job – procedure – sequence – trigger - view), debug any procedure, execute any program,
create procedure, create profile, create role, create session, lock any table, flashback any
table, analyze any, sysdba, sysoper, etc.
• Roles: Permite agrupar privilegios de objetos y sistemas.
Para habilitar un rol: set role nombre_rol identified by password.
El password se setea de la siguiente manera: create rol nombre_rol identified by password.
Con: alter user nombre default role lista_roles (carga automáticamente los roles del usuario)
Recordemos que las vistas más utilizadas son: dba_role_privs (Privilegio de roles), dba_tab_privs
(Privilegio de objetos de tablas) y dba_sys_privs (Privilegio de Sistemas).
Adicionalmente tenemos:
session_privs = Muestra los privilegios de sistema y objetos asignado s a la sesión.
sessions_roles = Muestra los roles asignados a la sesión.
Ing. Francisco Riccio.
Página 3
Nota:
Podemos crear roles con password:
create role rol1 identified by mipassword;
Para habilitar un rol con password en una sesión:
set role rol1 identified by mipassword, rol2;
set role all except rol1
set role none => Deshabilita todos.
Alterando los roles activados de un usuario determinado:
Cuando creamos un rol, el usuario creador adquiere el rol automáticamente como activo, pero
podemos cambia su comportamiento de la siguiente manera:
alter user xxx default role rol1, rol2; (si el rol tiene password en esta alteración no es necesario
ponerlo)
Ing. Francisco Riccio.
Página 4
Controlando Recursos a los Usuarios - Perfiles
En Oracle 10g nos permite limitar a un recurso mediante cuotas al consumo de espacio, CPU,
memoria etc.
Los profiles permiten limitar diversos recursos del CPU tales como: CPU time, memoria, cantidad de
logical reads, etc.
Para habilitarlo: alter system set resource_limit = true scope=both
Opciones:
CONNECT_TIME = Indica el tiempo de conexión que puede estar una sesión, en caso supere el
tiempo en minutos aplica rollback a sus transacciones.
create profile nombre LIMIT CONNECT_TIME #min | UNLIMITED;
CPU_PER_CALL = Limita la cantidad de CPU que puede ser consumida por cualquier llamada de base
de datos con ese profile. El valor a ingresar es en ciento de segundos en un ciclo.
create profile nombre LIMIT CPU_PER_CALL # | UNLIMITED;
CPU_PER_SESSION = Limita la cantidad de CPU time que puede ser consumida en cualquier sesión. El
tiempo está en ciento de segundos.
IDLE_TIME = Limita la duración de tiempo muerto de una sesión. El tiempo está en minutos.
create profile nombre LIMIT IDLE_TIME #min | UNLIMITED;
LOGICAL_READS_PER_CALL = Por cada llamada hacia la base de datos restringe el número de logical
reads que puede consumir la llamada.
create profile nombre LIMIT LOGICAL_READS_PER_CALL #;
LOGICAL_READS_PER_SESSION el cual indica el máximo número de logical reads durante toda la
sesión.
PRIVATE_SGA = Limita la cantidad de UGA en bytes que una conexión con shared server puede
ubicar.
create profile nombre LIMIT PRIVATE_SGA #;
SESSIONS_PER_USER = Restringue a un usuario al número de sesiones que puede abrir.
create profile nombre LIMIT SESSIONS_PER_USER #;
Ing. Francisco Riccio.
Página 5
Aplicando Políticas de Passwords
Forzando a n intentos fallidos de password el bloqueo del user por un tiempo determinado:
ALTER PROFILE nombre LIMIT
FAILED_LOGIN_ATTEMPTS
#intentos
PASSWORD_LOCK_TIME
nMinutos (Vuelve a desbloquearlo) | UNLIMITED
PASSWORD_LIFE_TIME
PASSWORD_GRACE_TIME
x
y
El password_life_time especifica el máximo número de días que un password se puede mantener
vigente.
El password_grace_time es el número de días después del primer login exitoso comenzará a
recordarle del vencimiento del password.
Limita el password a m dias y durante n dias recordará esto.
ALTER PROFILE nombre LIMIT
PASSWORD_LIFE_TIME
m-n dias
PASSWORD_GRACE_TIME
n dias
Reuso de Passwords
Especifica el número de días que un password puede ser reusado y después de cuantos passwords
cambiados.
CREATE PROFILE nombre LIMIT
PASSWORD_REUSE_TIME
#dias | UNLIMITED
PASSWORD_REUSE_MAX
n | UNLIMITED
Requiere que al menos n passwords cambien y durante #dias para poder reusar un password.
Ing. Francisco Riccio.
Página 6
Nota:
Existe un archivo en llamado $ORACLE_HOME/rdbms/admin/utlpwdmg.sql el cual contiene una
función PL/SQL con complejidad alta para poderla asociar a un profile.
Ejemplo:
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION verify_function;
Ing. Francisco Riccio.
Página 7
Auditoria
Para activar la auditoria:
ALTER SYSTEM SET AUDIT_TRAIL= DB; DB,EXTENDED, OS, XML, XML, EXTENDED SCOPE=SPFILE;
DB,EXTENDED: Registra en la base de datos junto con las sentencias SQL que son auditadas.
OS: Se registra en $ORACLE_BASE/admin ó event viewer en Windows
Ejemplo: alter System set audit_trail=db scope=spfile;
Oracle permite 4 niveles de auditoría.
Statement
Privilegio
Objeto
Fine grained Access
•
•
•
•
Statement
Permite auditar 1 tipo de SQL.
Ejemplo:
audit table; (todo lo relacionado a la palabra table, create, drop, truncate, etc)
audit table by xxx
audit table by xxx whenever not successful
audit alter table | procedure | database | profile | system; grant (todas sus formas, ejemplo: grant
sequence); execute (todas sus formas, ejemplo: execute procedure); procedure (create y drop para
procedure, function, package); lock table; role (create, drop, set role, alter); select (select table);
system grant (grant, revoke); tablespace (alter, create, drop); trigger (alter, create, drop); user (alter
user, create, drop); view (alter, create, drop); session (connect).
Ing. Francisco Riccio.
Página 8
Privilegio
Audita un privilegio de sistema, ejemplo:
audit create any table
audit delete any table
Tips:
Para auditar un GRANT ANY PRIVILEGE debemos primero ejecutar el siguiente audit en el usuario
que va a lanzar los audit grant any privilege:
AUDIT SYSTEM GRANT BY usuario_auditor
Objeto
Audita un select, insert, update o execute de un objeto particular.
audit select on hr.employees;
audit select on hr.employees by access whenever successfull;
Puede definírsele también a nivel de:
S = Session (Ejemplo: Si hacemos 10 inserts, los 10 inserts generaran 1 entrada de auditoría)
A = Access (Ejemplo: Si hacemos 10 inserts, cada insert generará 1 entrada de auditoría)
Nota:
Oracle 11g audita cualquier operación DML sobre la sys.aud$
No puede ser restringido por usuario.
Si definimos por BY SESSION entonces en la tabla DBA_AUDIT_TRAIL (campo SES_ACTIONS) tendrá
un conjunto de bits ord
Comentarios de: Taller de Seguridad, Backup y Recover en una Base de Datos Oracle 10g (0)
No hay comentarios