TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-16 |
제목 | Audit 기능을 이용하여 Database 사용자를 확인하는 방법. | ||
---|---|---|---|
Audit 기능을 이용하여 Database 사용자를 확인하는 방법.
================================================== 1. init.ora 에 다음 파라미터를 셋팅한다. audit_trail=none 기존에 true 등으로 셋팅되어 있다면 반드시 none 으로 변경한다. none 이 아닌 TRUE, DB 등으로 셋팅되어 있으면 반드시 none 으로 변경 후 반드시 DB 재기동이 필요하다. 이 작업없이 2번 작업을 하고 나면 DB 에 접속 시 error 가 발생한다. 물론 다시 해당 오브젝트를 drop 하면 문제가 해결된다. 2. 필요한 오브젝트와 권한을 생성한다. SVRMGR> connect internal SVRMGR> create table system.aud$ as select * from aud$ SVRMGR> rename aud$ to aud$_temp SVRMGR> connect system/manager SVRMGR> create index i_aud1 on aud$ (sessionid, ses$tid) SVRMGR> grant all on aud$ to sys with grant option SVRMGR> connect internal SVRMGR> create view aud$ as select * from system.aud$ SVRMGR> exit $ cd $ORACLE_HOME/rdbms/admin $ svrmgrl SVRMGR> connect internal SVRMGR> @cataudit.sql sys 유저에 audit 정보를 저장할 테이블을 생성한다. aud$ table 에 변경이 가해지면 Trigger 가 fire 되어 아래 테이블에 필요한 정보를 입력하게 된다. SVRMGR> create table accounting (USERNAME VARCHAR2(30), LOGIN_TIME DATE, LOGOFF_TIME DATE, SCHEMANAME VARCHAR2(30), OSUSER VARCHAR2(15), PROCESS VARCHAR2(9), MACHINE VARCHAR2(64), TERMINAL VARCHAR2(8), PROGRAM VARCHAR2(64), TYPE VARCHAR2(10), LOGICAL_READ NUMBER, PHYSICAL_READ NUMBER, SID NUMBER, SESSION_SID NUMBER, CPU_TIME NUMBER) / Trigger 를 생성한다. SVRMGR> create table oper (act varchar2(27)); create or replace trigger acc_trigger after update on system.aud$ for each row when (new.action# = 101 or new.action# = 102) begin insert into accounting select :new.userid,:new.timestamp#,:new.logoff$time, ss.schemaname, ss.osuser, ss.process, ss.machine, ss.terminal, ss.program, ss.type, :new.logoff$lread, :new.logoff$pread, st.sid, ss.audsid, st.value from V$STATNAME S, V$SESSTAT ST, V$SESSION SS where S.STATISTIC# = ST.STATISTiC# AND ST.SID = SS.SID and :new.sessionid = SS.AUDSID and S.NAME='CPU used by this session'; insert into oper select audit_actions.name from audit_actions where :new.action# = audit_actions.action; end; / 3. init.ora 파일에 다음과 같이 파라미터를 다시 변경후 DB 재기동 한다. audit_trail=DB timed_statistics=TRUE 4. Audit 기능을 설정한다. 예) audit session by hanseo 예) audit all on username.table명 예) audit table by scott by access whenever successful 그리고 다음 쿼리문을 실행한다. SQL> select osuser,username,to_char(LOGIN_TIME,'dd.mm.yy:hh:mi') login, to_char(LOGOFF_TIME,'dd.mm.yy:hh:mi') logout, MACHINE, CPU_TIME from accounting; SQL> OSUSER USERNAME LOGIN LOGOUT MACHINE CPU_TIME ------ -------- ------------- -------------- --------- ---------- hanseo HANSEO 29.01.99:11:07 29.01.99:11:12 윤 한서 66 1 row selected. OSUSER : windows login name USERNAME : DB username MACHINE : 제어판--네트워크--컴퓨터확인--컴퓨터이름 이다. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |