Administración Básica de Oracle9i PRACTICAS. AUDITORÍA. 1. Ver

Transcripción

Administración Básica de Oracle9i PRACTICAS. AUDITORÍA. 1. Ver
Administración Básica de Oracle9i
PRACTICAS.
AUDITORÍA.
1.
Ver la descripción de las vistas ALL_DEF_AUDIT_OPTS, DBA_AUDIT_OBJECT,
DBA_AUDIT_SESSION,
DBA_AUDIT_STATEMENT,
DBA_AUDIT_TRAIL,
DBA_OBJ_AUDIT_OPTS, DBA_PRIV_AUDIT_OPTS, y DBA_STMT_AUDIT_OPTS.
Averiguar el significado de cada uno de los campos usando la documentación en línea.
SQL> desc ALL_DEF_AUDIT_OPTS
Nombre
¿Nulo?
----------------------------------------- -------ALT
AUD
COM
DEL
GRA
IND
INS
LOC
REN
SEL
UPD
REF
EXE
Tipo
--------------VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
VARCHAR2(3)
...
2. Ver la descripción de la vista SYS.AUD$.
SQL> desc sys.aud$
Name
Null?
Type
-----------------------------------------------------------------SESSIONID
NOT NULL NUMBER
ENTRYID
NOT NULL NUMBER
STATEMENT
NOT NULL NUMBER
TIMESTAMP#
NOT NULL DATE
USERID
VARCHAR2(30)
USERHOST
VARCHAR2(128)
TERMINAL
VARCHAR2(255)
ACTION#
NOT NULL NUMBER
RETURNCODE
NOT NULL NUMBER
OBJ$CREATOR
VARCHAR2(30)
OBJ$NAME
VARCHAR2(128)
AUTH$PRIVILEGES
VARCHAR2(16)
AUTH$GRANTEE
VARCHAR2(30)
NEW$OWNER
VARCHAR2(30)
NEW$NAME
VARCHAR2(128)
SES$ACTIONS
VARCHAR2(19)
SES$TID
NUMBER
LOGOFF$LREAD
NUMBER
LOGOFF$PREAD
NUMBER
LOGOFF$LWRITE
NUMBER
LOGOFF$DEAD
NUMBER
LOGOFF$TIME
DATE
COMMENT$TEXT
VARCHAR2(4000)
CLIENTID
VARCHAR2(64)
SPARE1
VARCHAR2(255)
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
1
Administración Básica de Oracle9i
SPARE2
OBJ$LABEL
SES$LABEL
PRIV$USED
SESSIONCPU
NUMBER
RAW(255)
RAW(255)
NUMBER
NUMBER
3. Comprobar si esta habilitada la auditoría en la base de datos. Habilitar la auditoría en la
base de datos en caso de que no este.
SQL> show parameters audit_trail
NAME
TYPE
VALUE
--------------------------------------------------------audit_trail
string
NONE
Se debe parar la base de datos, editar el fichero de parametros de
inicializacion, init<bd>.ora, añadiendo la linea "audit_trail=db", y volver
a arrancar la base de datos.
4. Comprobar que usuarios de base de datos tienen asignados los privilegios AUDIT
SYSTEM y AUDIT ANY.
SQL> connect system
Enter password:
Connected.
SQL> select * from dba_sys_privs where privilege ='AUDIT ANY';
GRANTEE
-----------------------------DBA
IMP_FULL_DATABASE
SQL>
PRIVILEGE
---------------------------------------AUDIT ANY
AUDIT ANY
ADM
--YES
NO
select * from dba_sys_privs where privilege ='AUDIT SYSTEM';
GRANTEE
PRIVILEGE
ADM
------------------------------ ---------------------------------------- --DBA
AUDIT SYSTEM
YES
5. Auditar todas las conexiones exitosas y fallidas a la base de datos.
SQL> audit session;
Audit succeeded.
6. Abrir una sesión a la base de datos como usuario “SYSTEM” y como usuario
“prueba01”. Comprobar que información se ha guardado en la auditoría como
consecuencia de las operaciones anteriores (consultar la vista DBA_AUDIT_TRAIL).
SQL> select substr(os_username,1,10) usuario_so, substr(username,1,12)
usuario, to_char(timestamp,'dd-mm-yyy hh24:mi:ss') tiempo_conexion, to_char
(logoff_time,'dd-mm-yyyy
hh24:mi:ss')
tiempo_desconexion
from
dba_audit_trail order by username,timestamp,logoff_time;
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
2
Administración Básica de Oracle9i
USUARIO_SO
---------oracle
oracle
USUARIO
-----------PRUEBA01
SYSTEM
TIEMPO_CONEXION
TIEMPO_DESCONEXION
------------------ ------------------29-11-004 11:53:50
29-11-004 11:53:44 29-11-2004 11:53:50
7. Auditar las conexiones exitosas y fallidas a la base de datos de los usuarios “prueba01”
y “prueba02”.
SQL>
audit session by prueba01, prueba02;
Audit succeeded.
8. Conectarse a la base de datos como usuario “prueba02” introduciendo una clave
errónea. Comprobar el apunte realizado en la auditoría del sistema (consultar la vista
DBA_AUDIT_SESSION).
SQL> select substr(os_username,1,10) usuario_so, substr(username,1,12)
usuario, to_char(timestamp,'dd-mm-yyy hh24:mi:ss') tiempo_conexion, to_char
(logoff_time,'dd-mm-yyyy
hh24:mi:ss')
tiempo_desconexion
from
dba_audit_session
where
username='PRUEBA02'
order
by
username,timestamp,logoff_time
USUARIO_SO USUARIO
TIEMPO_CONEXION
TIEMPO_DESCONEXION
---------- ------------ ------------------ ------------------oracle
PRUEBA02
29-11-004 11:55:37
9.
Auditar el uso de SELECT TABLE, DELETE TABLE, UPDATE TABLE e INSERT TABLE
en cualquier caso (fallido o no) y por sentencia individual. Comprobar las opciones
activas de auditoría (vista DBA_STMT_AUDIT_OPTS).
SQL> audit select table, delete table, update table, insert table by
access;
Audit succeeded.
SQL>
select user_name usuario, audit_option opcion, success, failure
from DBA_STMT_AUDIT_OPTS order by user_name
USUARIO
OPCION
SUCCESS
FAILURE
-----------------------------------------------------------PRUEBA01
CREATE SESSION
BY ACCESS BY ACCESS
PRUEBA02
CREATE SESSION
BY ACCESS BY ACCESS
CREATE SESSION
BY ACCESS BY ACCESS
SELECT TABLE
BY ACCESS BY ACCESS
INSERT TABLE
BY ACCESS BY ACCESS
UPDATE TABLE
BY ACCESS BY ACCESS
DELETE TABLE
BY ACCESS BY ACCESS
7 rows selected.
10. Conectarse como usuario “prueba01”. Comprobar si se ha creado la tabla
“codigos_notas” en el "tablespace" ACADEMO, en caso contrario creadla.
CREATE TABLE CODIGOS_NOTAS
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
3
Administración Básica de Oracle9i
(CODIGO varchar2(3),
DESCRIPCION varchar2(20))
TABLESPACE ACADEMO
STORAGE (INITIAL 64K
NEXT 64K
MINEXTENTS 3
MAXEXTENTS 10);
Otorgar privilegios para consultar, insertar, actualizar y borrar registros de la tabla
“codigos_notas” al usuario "prueba02".
Conectarse como usuario “prueba02” y realizar las siguientes operaciones:
-
Seleccionar todos los registros de la tabla “codigos_notas”.
Insertar en la tabla “codigos_notas” los siguientes registros:
‘0’, ‘NO PRESENTADO’
‘1’, ‘APROBADO’
Consultar los registros de auditoría generados para las operaciones anteriores (vista
DBA_AUDIT_OBJECT).
SQL> connect prueba01
Enter password:
Connected.
SQL>
2
3
4
5
6
7
8*
CREATE TABLE CODIGOS_NOTAS
(CODIGO varchar2(3),
DESCRIPCION varchar2(20))
TABLESPACE ACADEMO
STORAGE (INITIAL
64K
NEXT
64K
MINEXTENTS 3
MAXEXTENTS 10)
Table created.
SQL> grant select, insert, update, delete on codigos_notas to prueba02;
Grant succeeded.
SQL> connect prueba02
Enter password:
Connected.
SQL> select * from prueba01.codigos_notas;
no rows selected
SQL> insert into prueba01.codigos_notas values ('0','NO PRESENTADO');
1 row created.
SQL> insert into prueba01.codigos_notas values ('1','APROBADO');
1 row created.
SQL> commit;
Commit complete.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
4
Administración Básica de Oracle9i
SQL> SQL> connect system
Enter password:
Connected.
SQL> select substr(os_username,1,10) usuario_so, substr(username,1,12)
usuario, to_char(timestamp,'dd-mm-yyy hh24:mi:ss') tiempo_conexion, to_char
(logoff_time,'dd-mm-yyyy
hh24:mi:ss')
tiempo_desconexion
from
dba_audit_session
where
username='PRUEBA02'
order
by
username,timestamp,logoff_time;
USUARIO_SO
---------oracle
oracle
USUARIO
-----------PRUEBA02
PRUEBA02
TIEMPO_CONEXION
TIEMPO_DESCONEXION
------------------ ------------------29-11-004 11:55:37
29-11-004 12:08:54 29-11-2004 12:10:42
SQL> select substr(os_username,1,10) usuario_so, substr(username,1,12)
usuario, to_char(timestamp,'dd-mm-yyy hh24:mi:ss') tiempo_conexion, substr
(owner,1,10) propie, substr(obj_name,1,15) objeto, substr(action_name,1,10)
accion
from
dba_audit_object
where
username='PRUEBA02'
order
by
os_username,timestamp, owner,obj_name,action_name;
USUARIO_SO USUARIO
TIEMPO_CONEXION
PROPIE
OBJETO
ACCION
--------------------------------------------------------------------------oracle
PRUEBA02
29-11-004 12:08:54 SYS
DUAL
SELECT
oracle
PRUEBA02
29-11-004 12:08:54 SYS
DUAL
SELECT
oracle
PRUEBA02
29-11-004 12:08:54 SYS
DUAL
SELECT
oracle
PRUEBA02
29-11-004 12:08:54 SYSTEM
PRODUCT_PRIVS
SELECT
oracle
PRUEBA02
29-11-004 12:08:54 SYSTEM
PRODUCT_PRIVS
SELECT
oracle
PRUEBA02
29-11-004 12:08:54 SYSTEM
SQLPLUS_PRODUCT SELECT
oracle
PRUEBA02
29-11-004 12:08:54 SYSTEM
SQLPLUS_PRODUCT SELECT
oracle
PRUEBA02
29-11-004 12:09:06 PRUEBA01
CODIGOS_NOTAS
SELECT
oracle
PRUEBA02
29-11-004 12:09:19 PRUEBA01
CODIGOS_NOTAS
INSERT
oracle
PRUEBA02
29-11-004 12:09:32 PRUEBA01
CODIGOS_NOTAS
INSERT
11. Consultar las opciones por defecto de auditoría de objetos (ALL_DEF_AUDIT_OPTS).
SQL> select * from
all_def_audit_opts;
ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE
--- --- --- --- --- --- --- --- --- --- --- --- ---/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/- -/-
12. Especificar las opciones de auditoría por defecto para los objetos creados en un futuro
de forma que se registre información siempre que se produzca un “alter”, “grant”,
“insert”, “update” o “delete”.
SQL> audit alter, grant, insert, update, delete on default;
Audit succeeded.
SQL>
select * from
all_def_audit_opts;
ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE
--- --- --- --- --- --- --- --- --- --- --- --- --S/S -/- -/- S/S S/S -/- S/S -/- -/- -/- S/S -/- -/-
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
5
Administración Básica de Oracle9i
El significado de cada una de las columnas es:
-/-: No auditoria por defecto.
S/-: Auditado cuando sea exitosa la operación.
-/S: Auditado cuando sea fallida la operación.
ALT
AUD
COM
DEL
GRA
IND
INS
LOC
REN
SEL
UPD
REF
EXE
...
...
...
...
...
...
...
...
...
...
...
...
...
ALTER
AUDIT
COMMENT
DELETE
GRANT
INDEX
INSERT
LOCK
RENAME
SELECT
UPDATE
REFERENCES
EXECUTE
13. Desactivar la auditoría de las conexiones a la base de datos.
SQL> select substr(user_name,1,12) usuario, privilege, success,failure from
dba_priv_audit_opts order by user_name, privilege;
USUARIO
-----------PRUEBA01
PRUEBA02
PRIVILEGE
---------------------------------------CREATE SESSION
CREATE SESSION
ALTER ANY RULE
CREATE ANY RULE
CREATE SESSION
DROP ANY RULE
EXECUTE ANY RULE
SUCCESS
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
FAILURE
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
7 rows selected.
SQL> noaudit session;
Noaudit succeeded.
SQL> select substr(user_name,1,12) usuario, privilege, success,failure from
dba_priv_audit_opts order by user_name, privilege;
USUARIO
-----------PRUEBA01
PRUEBA02
PRIVILEGE
---------------------------------------CREATE SESSION
CREATE SESSION
ALTER ANY RULE
CREATE ANY RULE
DROP ANY RULE
EXECUTE ANY RULE
SUCCESS
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
FAILURE
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
6 rows selected.
SQL>
noaudit session by prueba01, prueba02;
Noaudit succeeded.
SQL> select substr(user_name,1,12) usuario, privilege, success,failure from
dba_priv_audit_opts order by user_name, privilege;
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
6
Administración Básica de Oracle9i
USUARIO
PRIVILEGE
------------ ---------------------------------------ALTER ANY RULE
CREATE ANY RULE
DROP ANY RULE
EXECUTE ANY RULE
SUCCESS
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
FAILURE
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
14. Desactivar la auditoría de uso de SELECT TABLE, DELETE TABLE, UPDATE TABLE e
INSERT TABLE (activada en ejercicios anteriores).
SQL> select substr(user_name,1,12) usuario, substr(audit_option, 1,15)
opcion, success,failure from
dba_stmt_audit_opts order by user_name,
audit_option;
USUARIO
OPCION
------------ --------------DELETE TABLE
INSERT TABLE
SELECT TABLE
UPDATE TABLE
SUCCESS
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
FAILURE
---------BY ACCESS
BY ACCESS
BY ACCESS
BY ACCESS
SQL> noaudit select table, delete table, update table, insert table;
Noaudit succeeded.
SQL> select substr(user_name,1,12) usuario, substr(audit_option, 1,15)
opcion, success,failure from
dba_stmt_audit_opts order by user_name,
audit_option;
no rows selected
15. Activar la auditoría para cualquier operación de consulta, inserción o borrado que se
efectué sobre la tabla “prueba01.codigos_notas”.
SQL> audit select, insert, delete on prueba01.codigos_notas;
Audit succeeded.
SQL>
select
substr(owner,1,12),substr(OBJECT_NAME,1,12),
substr
(object_type,1,10), DEL, INS, SEL, UPD from
dba_obj_audit_opts where
owner='PRUEBA01' order by object_name, object_type;
SUBSTR(OWNER
-----------PRUEBA01
PRUEBA01
PRUEBA01
PRUEBA01
SUBSTR(OBJEC
-----------CHEQUEAR_TAB
CODIGOS
CODIGOS_NOTA
TABLAS_REVIS
SUBSTR(OB
--------PROCEDURE
TABLE
TABLE
TABLE
DEL
---/-/S/S
-/-
INS
---/-/S/S
-/-
SEL
---/-/S/S
-/-
UPD
---/-/-/-/-
16. Conectado como usuario “prueba01” realizar una consulta del contenido de la tabla
“codigos_notas”.
Consultar
(DBA_AUDIT_OBJECT).
los
registros
de
auditoría
generados
SQL> connect prueba01
Introduzca su clave:
Connected.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
7
Administración Básica de Oracle9i
SQL> select * from codigos_notas;
COD
--0
1
DESCRIPCION
-------------------NO PRESENTADO
APROBADO
SQL> insert into codigos_notas values ('3','NOTABLE');
1 row created.
SQL> commit;
SQL> connect system
Introduzca su clave:
Connected.
SQL> select substr(username,1,10) usuario, to_char(timestamp,'dd-mm-yyyy
hh24:mi:ss') fecha, substr(owner,1,10) prop, substr(obj_name,1,15) objeto,
ses_actions from dba_audit_object where owner='PRUEBA01' order by timestamp
USUARIO
FECHA
PROP
OBJETO
SES_ACTIONS
-------------------------------------------------------------------------PRUEBA02
29-11-2004 12:09:06 PRUEBA01
CODIGOS_NOTAS
PRUEBA02
29-11-2004 12:09:19 PRUEBA01
CODIGOS_NOTAS
PRUEBA02
29-11-2004 12:09:32 PRUEBA01
CODIGOS_NOTAS
PRUEBA01
02-12-2004 10:09:30 PRUEBA01
CODIGOS_NOTAS
------S--S------
SES_ACTIONS Resumen de sesion, una cadena de 16 caracteres, uno por
cada tipo de accion de la lista ordenada ALTER, AUDIT, COMMENT, DELETE,
GRANT, INDEX, INSERT, LOCK, RENAME, SELECT, UPDATE, REFERENCES, y EXECUTE.
Las posicones 14, 15, y 16 estan reservadas para usos futuros. Los
caracteres son - para ninguno, S para éxito, F para fallo y B para ambos.
17. Desactivar la auditoría del ejercicio 15.
SQL> noaudit select, insert, delete on prueba01.codigos_notas;
Noaudit succeeded.
18. Desactivar todas las opciones de auditoría de objetos que existen por defecto.
SQL> noaudit all on default;
Noaudit succeeded.
19. Comprobar las características de almacenamiento del “audit trail”. Borrar todos los
registros de auditoría correspondientes a la tabla “prueba01.codigos_notas”.
SQL> select substr(owner,1,10) prop,substr(table_name,1,8) tabla,substr
(tablespace_name,1,10)
espacio,
INITIAL_EXTENT,
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
8
Administración Básica de Oracle9i
NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS
table_name='AUD$';
PROP
TABLA
ESPACIO
MAX_EXTENTS
---------- -------- -------------------SYS
AUD$
SYSTEM
121
from
dba_tables
where
INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
--------------
-----------
-----------
10240
16384
1
20. Auditar cualquier cambio que se realice en el “audit trail”.
SQL> AUDIT INSERT, UPDATE, DELETE ON SYS.AUD$ BY ACCESS;
Audit succeeded.
SQL> select substr(owner,1,12) prop,substr(OBJECT_NAME,1,12) objeto,
substr(object_type,1,10) tipo, DEL, INS, SEL, UPD from dba_obj_audit_opts
where owner='SYS' and OBJECT_NAME ='AUD$' order by object_name, object_type
PROP
OBJETO
TIPO
DEL INS SEL UPD
------------ ------------ --------- --- --- --- --SYS
AUD$
TABLE
A/A A/A -/- A/A
21. Considere un caso hipotético donde quiere auditarse la base de datos en base a los
siguientes hechos detectados:
-
Se han modificado ciertas cuotas, asignación de espacios de almacenamiento,
“tablespaces”, y contraseñas de usuario.
-
Se están produciendo un número considerable de abrazos mortales debido a que
se están adquiriendo bloqueos exclusivos sobre tablas.
-
Se ha detectado el borrado de registros de la tabla SCOTT.EMP
Se sospecha que los usuarios “prueba01” y “prueba02” son los responsables de las
acciones anteriores.
Determinar las distintas operaciones sobre las que habrá que efectuar una auditoría,
así como consultar en las distintas vistas para obtener la información precisa que permita
descartar o confirmar las sospechas que han dado lugar a la activación de la auditoría.
Al usuario "prueba02" se le han asignado todos los permisos posibles sobre
scott.emp:
SQL> grant all on scott.emp to prueba02;
Grant succeeded.
Para activar
sentencias:
la
auditoría
se
ejecutara
el
siguiente
orden
de
SQL> audit alter, INDEX, RENAME ON DEFAULT BY SESSION;
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
9
Administración Básica de Oracle9i
Audit succeeded.
SQL> AUDIT SESSION BY prueba01, prueba02;
Audit succeeded.
SQL> AUDIT ALTER USER;
Audit succeeded.
SQL> AUDIT DROP USER;
Audit succeeded.
SQL> AUDIT LOCK TABLE BY ACCESS WHENEVER SUCCESSFUL;
Audit succeeded.
SQL> AUDIT DELETE ON scott.emp BY ACCESS WHENEVER SUCCESSFUL;
Audit succeeded.
Supongamos que el usuario prueba01 ejecuta las sentencias:
SQL> connect prueba01
Enter password:
Connected.
SQL> ALTER USER prueba03 QUOTA 0 ON users;
ALTER USER prueba03 QUOTA 0 ON users
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> DROP USER prueba04;
DROP USER prueba04
*
ERROR at line 1:
ORA-01031: insufficient privileges
Supongamos que el usuario prueba02 ejecuta las sentencias:
SQL> connect prueba02
Enter password:
Connected.
SQL> LOCK TABLE scott.emp IN EXCLUSIVE MODE;
Table(s) Locked.
SQL> DELETE FROM scott.emp WHERE mgr = 7698;
5 rows deleted.
SQL> ALTER TABLE scott.emp STORAGE (NEXT 500K);
Table altered.
SQL> CREATE INDEX scott.ename_index ON scott.emp (ename);
CREATE INDEX scott.ename_index ON scott.emp (ename)
*
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
10
Administración Básica de Oracle9i
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> DELETE FROM scott.emp WHERE empno = 8000;
0 rows deleted.
Recuperamos ahora información sobre los registros de auditoría:
-
Opciones de auditoría de sentencias fijadas.
SQL> connect system
Enter password:
Connected.
SQL>
select
user_name,
sys.dba_stmt_audit_opts;
audit_option,success,
failure
from
USER_NAME
AUDIT_OPTION
SUCCESS
FAILURE
----------------------------------------------------------------PRUEBA02
CREATE SESSION
BY ACCESS BY ACCESS
PRUEBA01
CREATE SESSION
BY ACCESS BY ACCESS
ALTER USER
BY ACCESS BY ACCESS
DROP USER
BY ACCESS BY ACCESS
LOCK TABLE
BY ACCESS NOT SET
-
Opciones de auditoría de privilegios.
SQL>
select
user_name,
sys.dba_priv_audit_opts;
privilege,success,
failure
from
USER_NAME
PRIVILEGE
SUCCESS
FAILURE
--------------------------------------------------------------PRUEBA02
CREATE SESSION
BY ACCESS BY ACCESS
PRUEBA01
CREATE SESSION
BY ACCESS BY ACCESS
ALTER USER
BY ACCESS BY ACCESS
DROP USER
BY ACCESS BY ACCESS
-
Opciones de auditoría para objetos del esquema SCOTT.
SQL> SELECT * FROM sys.dba_obj_audit_opts WHERE owner = 'SCOTT'
AND object_name LIKE 'EMP%';
OWNER
REN SEL
--------- --SCOTT
-/- -/-
OBJECT_NAME
UPD REF EXE CRE
---------------- --- --- --EMP
-/- -/- -/- -/-
OBJECT_TY ALT AUD COM DEL GRA IND INS LOC
REA WRI
--------- --- --- --- --- --- --- --- ----- --TABLE
-/- -/- -/- A/- -/- -/- -/- -/-/- -/-
La información debe interpretarse de la siguiente forma:
•
•
El carácter "-" indica que la opción de auditoría no esta
fijada.
EL carácter "S" indica que la opción de auditoría esta fijada
“BY SESSION”.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
11
Administración Básica de Oracle9i
•
•
-
El carácter "A" indica que la opción de auditoría esta fijada
“BY ACCESS”.
Cada opción de auditoría puede ser para “WHENEVER SUCCESSFUL” y
“WHENEVER NOT SUCCESSFUL”; las dos opciones están separadas por
"/".
Información de auditoría para la sentencia “AUDIT SESSION”.
SQL>
select
substr(os_username,1,10)
usuario_so,
substr
(username,1,12) usuario, to_char(timestamp,'dd-mm-yyy hh24:mi:ss')
tiempo_conexion,
to_char(logoff_time,'dd-mm-yyyy
hh24:mi:ss')
tiempo_desconexion
from
dba_audit_session
order
by
username,timestamp,logoff_time;
USUARIO_SO
---------oracle
oracle
curso01
oracle
oracle
curso01
oracle
oracle
USUARIO
-----------PRUEBA01
PRUEBA01
PRUEBA01
PRUEBA02
PRUEBA02
PRUEBA02
SYSTEM
SYSTEM
TIEMPO_CONEXION
-----------------29-11-004 11:53:50
29-11-004 12:07:32
02-12-004 10:37:26
29-11-004 11:55:37
29-11-004 12:08:54
02-12-004 10:38:25
29-11-004 11:53:44
29-11-004 12:10:42
TIEMPO_DESCONEXION
------------------29-11-2004 11:55:37
29-11-2004 12:08:54
02-12-2004 10:38:25
29-11-2004
02-12-2004
29-11-2004
29-11-2004
12:10:42
10:40:03
11:53:50
12:22:42
8 rows selected.
-
Registros de auditoria generados para objetos.
SQL> select substr(username,1,12) usuario, to_char(timestamp,'dd-mmyyy hh24:mi:ss') tiempo_conexion, substr(owner,1,10) propie, substr
(obj_name,1,15)
objeto,
substr(action_name,1,15)
accion
from
dba_audit_object where owner='SCOTT' order by os_username,usuario,
timestamp, owner,obj_name,action_name;
USUARIO
TIEMPO_CONEXION
PROPIE
OBJETO
ACCION
-------------------------------------------------------------------PRUEBA02
02-12-004 10:38:35 SCOTT
EMP
LOCK
PRUEBA02
02-12-004 10:38:45 SCOTT
EMP
DELETE
PRUEBA02
02-12-004 10:39:12 SCOTT
EMP
DELETE
Debe tenerse en cuenta que la opción para auditar las
sentencias alter, index, ... es posterior a la creación del objeto.
Si, explícitamente, se audita la tabla “emp”.
SQL> audit alter, INDEX, RENAME ON scott.emp by session;
Audit succeeded.
SQL> connect prueba02
Enter password:
Connected.
SQL>
SQL> ALTER TABLE scott.emp STORAGE (NEXT 500K);
Table altered.
SQL> CREATE INDEX scott.ename_index ON scott.emp (ename);
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
12
Administración Básica de Oracle9i
CREATE INDEX scott.ename_index ON scott.emp (ename)
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> connect system
Enter password:
Connected.
SQL> select substr(username,1,12) usuario, to_char(timestamp,'dd-mmyyy hh24:mi:ss') tiempo_conexion, substr(owner,1,10) propie, substr
(obj_name,1,15)
objeto,
substr(action_name,1,15)
accion
from
dba_audit_object where owner='SCOTT' order by os_username,usuario,
timestamp, owner,obj_name,action_name;
USUARIO
TIEMPO_CONEXION
PROPIE
OBJETO
ACCION
-------------------------------------------------------------------PRUEBA02
02-12-004 10:38:35 SCOTT
EMP
LOCK
PRUEBA02
02-12-004 10:38:45 SCOTT
EMP
DELETE
PRUEBA02
02-12-004 10:39:12 SCOTT
EMP
DELETE
PRUEBA02
03-12-004 10:13:29 SCOTT
EMP
SESSION REC
SQL> SELECT * FROM sys.dba_obj_audit_opts WHERE owner = 'SCOTT' AND
object_name LIKE 'EMP%';
OWNER
OBJECT_NAME
------------------------------------------COM DEL GRA IND INS LOC REN SEL UPD REF EXE
--- --- --- --- --- --- --- --- --- --- --SCOTT
EMP
-/- A/- -/- S/S -/- -/- S/S -/- -/- -/- -/-
OBJECT_TY ALT AUD
--------- --- --CRE REA WRI
--- --- --TABLE
S/S -/-/- -/- -/-
Si se audita ahora por “acceso”.
SQL> audit alter, INDEX, RENAME ON scott.emp by access;
Audit succeeded.
SQL> connect prueba02
Enter password:
Connected.
SQL> ALTER TABLE scott.emp STORAGE (NEXT 1500K);
Table altered.
SQL> CREATE INDEX scott.ename_index ON scott.emp (ename);
CREATE INDEX scott.ename_index ON scott.emp (ename)
*
ERROR at line 1:
ORA-01031: insufficient privileges
SQL> connect system
Enter password:
Connected.
SQL> select substr(username,1,12) usuario, to_char(timestamp,'dd-mmyyy hh24:mi:ss') tiempo_conexion, substr(owner,1,10) propie, substr
(obj_name,1,15)
objeto,
substr(action_name,1,25)
accion
from
dba_audit_object where owner='SCOTT' order by os_username,usuario,
timestamp, owner,obj_name,action_name;
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
13
Administración Básica de Oracle9i
USUARIO
TIEMPO_CONEXION
PROPIE
OBJETO
------------ ------------------ ---------- --------------ACCION
------------------------PRUEBA02
02-12-004 10:38:35 SCOTT
EMP
LOCK
PRUEBA02
DELETE
02-12-004 10:38:45 SCOTT
EMP
PRUEBA02
DELETE
02-12-004 10:39:12 SCOTT
EMP
PRUEBA02
SESSION REC
03-12-004 10:13:29 SCOTT
EMP
PRUEBA02
ALTER TABLE
03-12-004 10:16:45 SCOTT
EMP
Observemos que prueba02 no tiene permiso para crear índices.
SQL> connect system
Enter password:
Connected.
SQL> select * from dba_sys_privs where grantee='PRUEBA02';
no rows selected
SQL> select * from dba_role_privs where grantee='PRUEBA02'
GRANTEE
GRANTED_ROLE
ADM DEF
------------------------------ ------------------------------ --- --PRUEBA02
CONEXION
NO YES
SQL> select * from dba_role_privs where grantee='CONEXION'
no rows selected
SQL> select * from dba_sys_privs where grantee='CONEXION'
GRANTEE
PRIVILEGE
ADM
------------------------------------------------------------CONEXION
CREATE SESSION
NO
Se le otorga permiso y se prueba a crear un índice
prueba02 sobre scott.emp. Aunque falle, registra el apunte.
como
SQL> grant create table to prueba02;
Grant succeeded.
SQL> connect prueba02
Enter password:
Connected.
SQL> CREATE INDEX scott.ename_index ON scott.emp (kk);
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
14
Administración Básica de Oracle9i
CREATE INDEX scott.ename_index ON scott.emp (kk)
*
ERROR at line 1:
ORA-00904: "KK": invalid identifier
SQL> connect system
Enter password:
Connected.
SQL> select substr(username,1,12) usuario, to_char(timestamp,'dd-mmyyy hh24:mi:ss') tiempo_conexion, substr(owner,1,10) propie, substr
(obj_name,1,15)
objeto,
substr(action_name,1,15)
accion
from
dba_audit_object where owner='SCOTT' order by os_username,usuario,
timestamp, owner,obj_name,action_name;
USUARIO
TIEMPO_CONEXION
PROPIE
OBJETO
ACCION
-------------------------------------------------------------------PRUEBA02
02-12-004 10:38:35 SCOTT
EMP
LOCK
PRUEBA02
02-12-004 10:38:45 SCOTT
EMP
DELETE
PRUEBA02
02-12-004 10:39:12 SCOTT
EMP
DELETE
PRUEBA02
03-12-004 10:13:29 SCOTT
EMP
SESSION REC
PRUEBA02
03-12-004 10:16:45 SCOTT
EMP
ALTER TABLE
PRUEBA02
03-12-004 10:24:46 SCOTT
ENAME_INDEX
CREATE INDEX
6 rows selected.
© Juan Luis Serradilla Amarilla y Francisco Fernández Martínez
15

Documentos relacionados