laalaal
2001-08-24 13:56:33
0
5030

사용자 감사 audit 예제


Oracle의 audit 기능을 이용함에 있어 관련 table, view 등을 소개하고, 이들을
실제 조회한 예를 보여준다.

audit설정에 관한 정보
user가 'AUDIT' command를 사용하여 설정한 audit option에 대한 정보를
확인가능
. all_def_audit_opts : 새로운 object 생성 시 default로 적용되는 audit
option 정보
. dba_obj_audit_opts : object level로 설정된 audit option들
. dba_priv_audit_opts : system privilege level로 설정된 audit option들
. dba_stmt_audit_opts : statement level로 설정된 audit option들
. user_obj_audit_opts
statement, privilege audit의 경우 user_ view가 없음

audit 실제 자료
. sys.aud$ : db가 생성되는 시점에 sql.bsq script에서 에서 생성됨
audit 결과 data가 쌓이는 기본 table임
. dba_audit_trail : sys.aud$를 base table로 하여 모든 audit정보가
포함되며 다른 view들의 base view가 됨
. dba_audit_exists : audit [not] exists에 의한 audit정보
. dba_audit_object : object와 관련된 모든 audit정보
. dba_audit_session : connect, disconnect와 관련된 audit정보
. dba_audit_statement : grant, revoke, audit, noaudit, alter system와
관련된 audit정보
. user_audit_trail
. user_audit_object
. user_audit_session
. user_audit_statement

* 하나의 audit record가 위의 여러가지 view에 동시에 나타날 수 있으며,
_audit_object, _audit_statement view의 내용이 object audit,
statement audit 설정에 의해 생성된 record 들만을 갖는 것은 아님.
* mapping 정보의 일부 view를 제외한 나머지 view들은 모두 cataudit.sql에서
생성되며(catalog.sql에 포함), catnoaud.sql에 의해 제거될 수 있음.


*** Object Audit 설정 ***
init.ora파일에 parameter를 audit_trail=db or true로 설정.
SQL> create table test.aud1 (a char(1)) ;

SQL> audit insert on test.aud1 by session whenever not successful ;

SQL> select * from dba_obj_audit_opts
2 where owner = 'TEST' and object_name = 'AUD1' ;

OWNER OBJECT_NAME OBJECT_TY
---------------------------------------------------------------
ALT AUD COM DEL GRA IND INS LOC REN SEL UPD REF EXE
---------------------------------------------------------------
TEST AUD1 TABLE
-/- -/- -/- -/- -/- -/- -/S -/- -/- -/- -/- -/- -/-

dba_obj_audit_opts는 object에 설정할 수 있는 각 audit option을
column으로 하고 있으며, 내용은 [A|S]/[A|S]의 형식을 갖는다. /의
앞부분은 successful일 경우, 뒷부분은 not successful일 경우를 표시하며,
A는 by access, S는 by session을 의미함.

*** Object Audit 실례 ***

SQL> insert into aud1 values ('5byte') ;
insert into aud1 values ('5byte')
*
ERROR at line 1:
ORA-01401: inserted value too large for column

SQL> insert into aud1 values ('a') ;

SQL> select username, timestamp, action_name, ses_actions
2 from dba_audit_object
3 where owner = 'TEST' and obj_name = 'AUD1' ;

USERNAME TIMESTAMP ACTION_NAME
------------------------------------------------
SES_ACTIONS
------------------------------------------------
TEST 20-MAY-98 SESSION REC
------F------

* by sessions으로 audit설정한 경우 action_name column은 'SESSION REC'
으로 표시. ses_actions column은 총 13가지의 action(alter,audit,
comment,delete,grant,index,insert,lock,rename,select,update,
reference,execute)에 대한 audit정보를 포함한다. 각 action에 대해
성공하였다면 'S'를 실패하였다면 'F'로 표현되며 성공과 실패가 모두
있었다면 'B'로 표현된다.
* by access로 audit설정한 경우 action_name column에 해당 action (예:
delete,insert 등)이 바로 기술된다.


*** Privilege Audit 설정 ***

SQL> audit create session by test ;

SQL> select * from dba_priv_audit_opts ;

USER_NAME PRIVILEGE SUCCESS FAILURE
------------------------------------------------------
TEST CREATE SESSION BY ACCESS BY ACCESS


*** Privilege Audit 실례 ***

SQL> connect test/test

작업수행

SQL> disconnect

SQL> connect system/manager

SQL> select os_username, timestamp, logoff_time, logoff_lread,
2 logoff_pread
3 from dba_audit_session
4 where username = 'TEST' ;

OS_USERNAME TIMESTAMP LOGOFF_TIME
-------------------------------------------------
LOGOFF_LREAD LOGOFF_PREAD
-------------------------------------------------
rctest73 20-MAY-98 20-MAY-98
115 1


*** Statement Audit 설정 ***

SQL> audit not exists by test ;

SQL> select * from dba_stmt_audit_opts ;

USER_NAME AUDIT_OPTION SUCCESS FAILURE
---------------------------------------------------------
TEST NOT EXISTS BY ACCESS BY ACCESS


*** Statement Audit 실례 ***

SQL> grant select on not_exist_tab to user명 ;
grant select on not_exist_tab to user명
*
ERROR at line 1:
ORA-00942: table or view does not exist

SQL> select os_username,username,timestamp,obj_name,action_name,
2 obj_privilege, grantee
3 from dba_audit_statement ;

OS_USERNAME USERNAME TIMESTAMP OBJ_NAME
-------------------------------------------------------
ACTION_NAME OBJ_PRIVILEGE GRANTEE
-------------------------------------------------------
rctest73 TEST 20-MAY-98 NOT_EXIST_TAB
GRANT OBJECT ---------Y------ user명

from oracle.co.kr

laalaal~
0
  • 댓글 0

  • 로그인을 하시면 댓글을 등록할 수 있습니다.