TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-16 |
제목 | AUDITING 이란 무엇인가? | ||
---|---|---|---|
AUDITING 이란 무엇인가?
======================= 1)개 요 AUDITING 기능은 사용자의 행동을 감시하거나 데이타베이스에 관한 통계자료를 얻는 목적으로 사용된다. AUDITING 기능을 사용함으로써 누가 어떤 테이블을 언제 사용하고, 언제 어떤 작업을 하는지를 기록할 수 있다. 하지만 레코드에 대한 AUDITING 은 불가능하며 AUDITING 을 걸게 되면 시스템에 부하를 줄 수도 있기 때문에 자주 사용되는 기능은 아니다. AUDITING 에서 제공되지 않는 기능은 사용자가 트리거를 만들어서 구현을 해야 한다. 2)종 류 AUDITING 에는 3가지 종류가 있다. STATEMENT AUDITING : 명령의 종류에 따라서 AUDITING 설정 EX)AUDIT TABLE BY SCOTT BY ACCESS WHENEVER SUCCESSFUL; scott 유저가 내리는 명령 중 테이블에 관련된 명령 (create table, drop table 등)이 성공한 경우 기록된다. PRIVILEGE AUDITING : 사용되는 PRIVILEGE 에 따른 AUDITING 설정 EX)AUDIT CREATE TABLE BY SCOTT BY SESSION; scott 유저가 CREATE TABLE 권한이 필요한 명령(CREATE TABLE)을 내린 경우 접속된 세션에 대해서 한번만 기록된다. OBJECT AUDITING : 적용되는 OBJECT 에 따른 AUDITING 설정 EX)AUDIT ALL ON SCOTT.EMP; scott.emp 테이블에 대한 모든 명령(SELECT, DELETE, DROP 등)에 관한 사항이 기록된다. 설정된 AUDIT 기능은 NOAUDIT 명령으로 없앨 수 있다. EX)NOAUDIT ALL ON SCOTT.EMP; 3)설 정 AUDIT 기능은 init shutdown/startup 하면 작동한다. AUDIT_TRAIL=DB 로 설정이 되어 있으면 결과는 SYS.AUD$ 테이블에 쌓이게 되고 AUDIT_TRAIL=OS 로 설정하면 결과가 화일로 생기게 된다. SYS.AUD$ 테이블에서 얻을 수 있는 정보는 매우 많은데 대표적인 것으로 다음을 들 수 있다. USER NAME : 오라클 유저 이름 SESSION ID : 오라클 세션 ID TERMINAL ID : 유닉스 시스템 상의 터미날 ID OBJECT NAME : 테이블, 뷰 등의 이름 ACTION ID : 명령 코드 DATE : 명령이 실행된 날짜,시간 COMPLETION CODE : 0 이면 성공, 실패하면 에러 코드 ACTION ID 는 사용된 명령을 나타내는데 이것은 숫자로 기록이 되어 있으므로 AUDIT_ACTIONS 딕셔너리를 통하여 실제의 명령으로 변환해 볼 수 있다. 4)특 징 *내려진 명령이 ROLLBACK 되더라도 AUDIT 에 의해 기록된 정보는 그대로 남아 있다. *SYS 또는 INTERNAL로 접속하여 행하는 명령은 AUDIT에 의해서 기록되지 않는다. *오라클은 AUDIT 기능의 세팅 여부와는 관계없이 STARTUP, SHUTDOWN, CONNECT INTERNAL 과 같은 정보는 OS 상의 화일로 기록을 남겨준다. *REMOTE DB 에 대해서 행해지는 작업은 AUDIT 대상이 되지 않는다. 이것은 REMOTE DB 에서 처리해 주어야 한다. *만약 두개의 AUDIT 가 동시에 적용되는 경우라면 하나의 레코드만 생성된다. 예를 들어 TABLE 과 CREATE TABLE 이 적용되는 경우이다. *OBJECT AUDITING 은 모든 유저에 대해서 적용된다. 특정한 유저를 지정하지 못한다. *BY SESSION 은 접속된 세션에 대해서 하나의 레코드만 생성하고 BY ACCESS 는 해당 명령이 내려질 때마다 정보를 기록한다. *DDL을 AUDIT 하는 SYSTEM AUDIT, PRIVILEGE AUDIT의 경우는 BY ACCESS가 디폴트 이고 그 외의 경우는 BY SESSION 이 디폴트이다. 예) audit execute on username.procedure_name; 하면 procedure 의 수행여부가 기록됩니다. 7.3 이상 version 에서는 column name 이 다음과 같습니다. USERID : 오라클 유저 이름 SESSIONID : 오라클 세션 ID TERMINAL : 유닉스 시스템 상의 터미날 ID OBJ$NAME : 테이블, 뷰 등의 이름 ACTION : 명령 코드 TIMESTAMP : 명령이 실행된 날짜,시간 따라서, 현재 어떤 작업에 audit 가 걸려 있는지 확인하는 SQL 은 다음과 같습니다. select a.userid, b.name from sys.aud$ a, audit_actions b where a.action = b.action; 8.0 이상에서는 action 컬럼이 action#으로 변경되었습니다. select a.userid, b.name from sys.aud$ a, audit_actions b where a.action# = b.action; |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |