TM
2012.03.29 11:24

audit 관련

조회 수 26502 추천 수 0 댓글 2

SQL 문 감사:

CREATE TABLE, DROP TABLE, TRUNCATE TABLE 등을 포함하여 테이블에 영향을 주는 데이터 정의어 (DDL) 문을 감사(audit)할 수 잇습니다. 유저 이름 또는 Success/Failure를 사용하여 SQL 문 감사를 제한할 수 있습니다.

SQL> AUDIT TABLE BY hr WHENEVER NOT SUSCCESSFUL;

 

시스템 권한 감사:

DROP ANY TABLE과 같은 시스템 권한 행사를 감사하는 데 사용되며 유저 이름 또는 Success/Failure를 사용하여 제한할 수 있습니다. 기본적으로 감사는 BY ACCESS입니다. 감사한 시스템 권한을 행사할 때마다 레코드가 생성됩니다 BY SESSION 절을 사용하여 세션별로 하나의 레코드만 생성되도록 해당 레코드를 그룹화할 수 있습니다. 이 방법으로 유저가 다른 유저가 소유한 테이블에서 100,000개의 레코드를 갱신할 경우 하나의 감사 레코드만 수집할 수 있습니다. 시스템 권한 감사가 성능 및 저장 영역에 미치는 영향을 제한하려면 BY SESSION 절을 사용하는 것이 좋습니다.

 

객체 권한 감사:

테이블, 뷰, 프로시저, 시퀀스, 디렉토리 및 유저 정의 데이터 유형에 대한 작업을 감사하는 데 사용할 수 있습니다. 이 유형의 감사는 Success/Failure를 사용하여 제한할 수 있으며 세션 또는 액세스별로 그룹화할 수 있습니다. 시스템 권한 감사와 달리 기본적으로 세션별로 그룹화됩니다. 따라서 각 작업에 대해 별도의 Audit Trail 레코드를 생성하려면 암시적으로 BY ACCESS를 지정해야 합니다.

 

------------------------------------------------------------------------------------------------------------


SQL> show parameter audit; 

 

NAME                                        TYPE       VALUE
---------------------------- ----------- ------------------------------
audit_file_dest                             string        /home/oracle/rdbms/audit
audit_sys_operations                  boolean       FALSE
audit_syslog_level                        string
audit_trail                                     string        NONE

 

audit_file_dest

audit_file_dest  파라미터는 감사 레코드의 저장 영역 위치를 제어합니다.

Windows 플랫폼에서 Audit Trail은 기본적으로 Windows 이벤트 로그에 저장되며 UNIX 또는 Linux 플랫폼에서 감사 레코드는 $ORACLE_HOME/rdbms/audit에 저장됩니다.

 

audit_trail

*  audit_trail = NONE 혹은 FALSE

: 감사 기능을 사용하지 않습니다.

* audit_trail = DB 혹은 TRUE

: 감사 기능을 사용하고 audit trail을 데이터베이스 내부의 테이블인 sys.aud$에 기록합니다.

* audit_trail = OS

: 감사 기능을 사용하고 audit trail을 운영체제의 file에 기록함, 이때 경로명은 audit_file_dest에 의해 지정합니다.

 

audit_sys_operations

audit_sys_operations 파라미터는 SYSDBA 및 SYSOPER 유저에 대한 감사를 제어합니다.

 

------------------------------------------------------------------------------------------------------------

audit 실습 구문

 

SQL> audit update,delete,select on scott.emp by access; 

SQL> update emp set sal = 13000 where empno = 7521;

SQL> select * from scott.emp;

 

audit 조회구문

 

SQL> select username,timestamp,action_name from dba_audit_trail;

SQL> select username,obj_name,action_name,ses_actions from dba_audit_object;

 

 

파라미터 값 DB 설정시 ----------------------------------------------------------------


SQL> show parameter audit

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest        string  /oracle10/admin/ORACLE10/adump
audit_sys_operations       boolean  FALSE
audit_syslog_level       string
audit_trail        string  DB


뷰에만 생성됨.

SQL> select count(*) from dba_audit_trail;

  COUNT(*)
----------
  4

SQL> select count(*) from sys.aud$;

  COUNT(*)
----------
  4

 

 

 

 


파라미터 값 OS 설정시 ----------------------------------------------------------------

 


NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest        string  /oracle10/admin/ORACLE10/adump
audit_sys_operations       boolean  FALSE
audit_syslog_level       string
audit_trail        string  OS


os 상에서만 파일 생성

 

SQL> select count(*) from dba_audit_trail;

  COUNT(*)
----------
  0

SQL> select count(*) from sys.aud$;

  COUNT(*)
----------
  0

 

 

 

soctt.emp select 권한을 hr user에게 부여시-----------------------------------------

 

 

SQL> show parameter audit

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest        string  /oracle10/admin/ORACLE10/adump
audit_sys_operations       boolean  FALSE
audit_syslog_level       string
audit_trail        string  DB


SQL> grant select on scott.emp to hr;

Grant succeeded.

 

SQL> select * from scott.emp;

     EMPNO ENAME      JOB        MGR HIREDATE        SAL  COMM   DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7369 SMITH      CLERK       7902 17-DEC-80       7000        20
      7499 ALLEN      SALESMAN       7698 20-FEB-81       1600   300       30
      7521 WARD       SALESMAN       7698 22-FEB-81      13000   500       30
      7566 JONES      MANAGER       7839 02-APR-81       2975        20
      7654 MARTIN     SALESMAN       7698 28-SEP-81       1250  1400       30
      7698 BLAKE      MANAGER       7839 01-MAY-81       2850        30
      7782 CLARK      MANAGER       7839 09-JUN-81       2450        10
      7788 SCOTT      ANALYST       7566 19-APR-87       3000        20
      7839 KING       PRESIDENT     17-NOV-81       5000        10
      7844 TURNER     SALESMAN       7698 08-SEP-81       1500     0       30
      7876 ADAMS      CLERK       7788 23-MAY-87      12000        20

     EMPNO ENAME      JOB        MGR HIREDATE        SAL  COMM   DEPTNO
---------- ---------- --------- ---------- ------------ ---------- ---------- ----------
      7900 JAMES      CLERK       7698 03-DEC-81        950        30
      7902 FORD       ANALYST       7566 03-DEC-81       3000        20
      7934 MILLER     CLERK       7782 23-JAN-82       1300        10

14 rows selected.

 

SQL> select empno,job from scott.emp;

     EMPNO JOB
---------- ---------
      7369 CLERK
      7499 SALESMAN
      7521 SALESMAN
      7566 MANAGER
      7654 SALESMAN
      7698 MANAGER
      7782 MANAGER
      7788 ANALYST
      7839 PRESIDENT
      7844 SALESMAN
      7876 CLERK

     EMPNO JOB
---------- ---------
      7900 CLERK
      7902 ANALYST
      7934 CLERK

14 rows selected.

 

SQL> select count(*) from dba_audit_trail;

  COUNT(*)
----------
  3

 

SQL> select username,timestamp,action_name from dba_audit_trail;

USERNAME         TIMESTAMP    ACTION_NAME
------------------------------ ------------ ----------------------------
HR          12-MAR-12    SELECT
HR          12-MAR-12    SELECT
HR          12-MAR-12    SELECT

 


SQL> select username,obj_name,action_name,ses_actions from dba_audit_object;

USERNAME         OBJ_NAME         ACTION_NAME     SES_ACTIONS
------------------------------ ------------------------------ ------------------
HR          EMP         SELECT
HR          EMP         SELECT
HR          EMP         SELECT

 

 

 


감사 운영 및 삭제 --------------------------------------------------------------------

 

audit trail의 관리

audit trail은 parameter 파일에서 audit_trail=DB라 지정했을 경우에는 SYSTEM 테이블스페이스에 sys.adu$ 테이블에 감사 정보가 기록된다. 기록작업은 SYSTEM 테이블스페이스가 채워질 때까지 계속된다.
그러나 SYSTEM 테이블스페이스가 가득차서 audit trail을 저장하지 못하면 감사를 지정한 특정 명령은 실행되지 않는다.
가령, 'AUDIT connect'라고 감사를 지정했지만 현재 SYSTEM 테이블스페이스의 공간이 가득 찼다면 다른 사용자들이 데이터베이스에 접속할 때마다 audit trail을 SYSTEM 테이블스페이스에 저장할 수 없기 때문에 connect에 대한 명령이 실행되지 않게 된다.
그 해결 방법은 audit trail을 남기지 않는 SYS사용자나 INTERNAL로 접속하여 sys.aud$ 테이블을 비우든지 감사 중지(NOAUDIT)를 내리면 된다.

 

SQL> noaudit update,delete,select on scott.emp;

Noaudit succeeded.

 

SQL> select count(*) from dba_audit_trail;

  COUNT(*)
----------
  3


SQL> TRUNCATE TABLE aud$;

 

Table truncated.

SQL> select count(*) from dba_audit_trail;

  COUNT(*)
----------
  0

 

SQL> show parameter audit

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest        string  /oracle10/admin/ORACLE10/adump
audit_sys_operations       boolean  FALSE
audit_syslog_level       string
audit_trail        string  DB

 

SQL> alter system set audit_trail=NONE scope=spfile;

System altered.

 

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.


SQL> startup
ORACLE instance started.

 

-------------------------------------------------------------------------------------------------------------

 

참고 사항

sys.aud$ 테이블 백업 받을 시에 DATA PUMP 는 에러가 발생합니다.  CTAS , EXPORT로 지원이 됩니다.

  • 이성철 2012.03.29 12:17

    참고사항 반대로 알려주네...

    pump로 sys.aud$ 백업 안되요. ctas, export로 받아야 함

  • 이현정 2012.03.29 14:06

    아아아아 ,,,,이제 생각남 ㅠㅠㅠㅎㅎ감사해요 ㅎㅎ


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 Q&A Oracle관련 게시물만 Sean 2014.04.09 84839
80 Q&A 서버교체에 관해서.. 1 명랑여행 2010.08.20 9641
79 Tip Lock Check 승현짱 2010.05.30 11792
78 TM Flashback Query 승현짱 2010.05.30 8670
77 Tip 11g Newfeature 승현짱 2010.05.30 11477
76 Q&A 오라클 유저 삭제가 안될시? 4 명랑여행 2010.05.27 11541
75 Tip EXPORT/IMPORT 이용한 TABLE과 INDEX 분리하는 방법 고구마 2010.05.24 25431
74 Tip TABLE(INDEX) 다른 TABLESPACE로 옮기기(8i) 고구마 2010.05.24 23007
73 Tip reoder column order 1 유주환 2010.05.19 11394
72 TM analyze connection failover options 유주환 2010.05.19 8858
71 TM 어플리케이션 페일오버와 로드밸런싱 유주환 2010.05.19 8836
70 TM fine-grained_auditing 1 유주환 2010.05.19 8586
69 TM library_cache_lock,_library_cache-orapybubu 유주환 2010.05.19 8862
68 TM fga와_vpd를_이용한_오라클_데이터베이스_보안_관련_문제와_답변 유주환 2010.05.19 10401
67 Tip RECOVERY 2 고구마 2010.05.19 19916
66 Tip TEMP TABLESPACE 사용현황 조회하기 1 고구마 2010.05.19 41939
65 Tip TABLESPACE FREESPACE 조회하기 1 고구마 2010.05.19 16657
64 TM 과도한 CPU 및 UNDO REDO 많이 사용하는 세션 찾기 1 고구마 2010.05.19 23643
63 TM 10g Data pump file 고구마 2010.05.12 10842
62 Tip UDP Buffer Tuning 기법 3 김준호 2010.05.04 30852
61 Tip TM과 TX 락 1 유주환 2010.04.30 19020
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8