TM
2012.03.29 11:24

audit 관련

조회 수 24158 추천 수 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 84539
160 Q&A 오라클 복구 질문 희달이 2015.05.08 878
159 TM 11G new feature SQL performance analyzer file Sean 2013.01.09 14203
158 TM MEMORY TARGET 도로시 2013.01.03 19326
157 TM check whether crs auto start is enable or disable 담벼락 2012.10.12 25941
156 TM ARDCI file 이현정 2012.10.09 12465
155 TM (10gR2)Full UNDO tablespace Tech1 2012.04.04 23780
» TM audit 관련 2 이현정 2012.03.29 24158
153 TM 테이블과 인덱스의 관계 및 인덱스 종류 및 생성 방법. Tech1 2012.03.28 24276
152 TM windows에서 Opatch 진행시 oci.dll 에러 조치 1 이현정 2012.03.26 36897
151 TM 테이블 생성방법 및 각종옵션 Tech1 2012.03.20 19774
150 TM upgrade 시 sorting 문제 담벼락 2012.03.16 16339
149 TM 11 newfeature(Upgrade) 10.2.0.5 to 11.2.0.3 1 file 윤현 2012.01.12 18264
148 TM TDE (column, tablesapce) 1 file 윤현 2011.12.27 13179
147 TM 11g newfeature (dbca) 2 file 윤현 2011.12.27 13861
146 TM 11g 데이타베이스 에러수집방법 2 perfstat 2011.11.02 19388
145 TM long type column 1 담벼락 2011.10.11 17423
144 TM 백업이 필요없는 대용량 table skip하고 export 받기 고구마 2011.06.14 18256
143 TM TDE tablespace 1 윤현 2011.06.09 17218
142 TM openvms command perfstat 2011.05.31 17355
141 TM Oracle Silent Install Guide 3 file 송기성 2011.03.13 20074
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8