개요
DBMS Audit 기능은 DBA가 데이터베이스 내의 작업 내역을 감시하고 특정 활동을 감사하여 Data를 수집할 수 있도록 지원합니다.
Tibero DBMS Audit 종류로 시스템 권한(System Privilege)과 스키마 객체 권한(Schema Object Privilege)에 대한 감사를 지원합니다.
본 문서에서는 특정 테이블이나 객체에 대한 작업 내역을 기록하는 스키마 객체에 대한 감사 (Schema Object Privilege Audit)에 대해 소개합니다.
방법
스키마 객체에 대한 감사 (Schema Object Privilege Audit)
지정된 객체의 DML(select, insert, delete, update)문장과 DCL(revoke, grant)문을 감사할 수 있습니다.
감사 대상이 되는 객체는 Table, View, Sequence, Package, Function 등이 있습니다.
•
사용 문법
AUDIT statement
ON { [ schema. ] object | DEFAULT }
[ BY { SESSION | ACCESS } ]
[ WHENEVER [NOT] SUCCESSFUL ]
SQL
복사
•
statement : 감사 대상 SQL 문
•
ON { [ schema. ] object | DEFAULT }
◦
[ schema. ] object : 감사할 객체
•
BY [SESSION | ACCESS]
◦
BY SESSION : 동일한 유형의 SQL문에 대해서는 하나의 감사 기록 작성합니다.
◦
BY ACCESS : 감사할 문장을 실행할 때마다 기록, 동일문장 반복하여도 매번 기록합니다.
◦
생략 시 BY SESSION 으로 적용됩니다.
•
WHENEVER
◦
SUCCESSFUL : SQL 문장이 성공적으로 실행 되었을 경우 기록 작성합니다.
◦
NOT SUCCESSFUL : 지정한 SQL 문장이 실패했을 경우 기록 작성합니다.
◦
생략 시 SQL 문장이 성공과 실패 모두 기록합니다.
•
특정 오브젝트에 대한 감사 예제
다음은 AUD User의 AUDIT_TB TABLE에 INSERT 작업을 수행 시 감사 기록을 하는 예제입니다.
1.
Test 대상 Table 확인
$ tbsql sys/tibero
SQL> select owner, object_name, object_type from dba_objects where owner='AUD';
OWNER OBJECT_NAME OBJECT_TYPE
---------- -------------- --------------------
AUD AUDIT_TB TABLE
1 row selected.
SQL
복사
2.
AUDIT 수행
SQL> AUDIT insert
on AUD.AUDIT_TB
by access;
Audited.
SQL
복사
3.
적용된 AUDIT 확인
SQL> select OWNER, OBJECT_NAME, OBJECT_TYPE, INS from DBA_OBJ_AUDIT_OPTS;
OWNER OBJECT_NAME OBJECT_TYPE INS
---------- -------------- ------------- -------
AUD AUDIT_TB TABLE A/A
1 row selected.
SQL
복사
4.
TEST USER 생성
SQL> create user test identified by test;
User 'TEST' created.
SQL> grant connect, resource to test;
Granted.
SQL> grant insert on AUD.AUDIT_TB to test;
Granted
SQL
복사
5.
적용한 Audit TEST
SQL> conn test/test
Connected to Tibero.
SQL> insert into AUD.AUDIT_TB values ( 1, 'TMAXDATA');
1 row inserted.
SQL
복사
6.
Audit Log 확인
AUDIT_TRAIL = DB_EXTENDED 설정 시 View 확인 방법
SQL> select USERNAME, USERHOST, TIMESTAMP, OWNER, OBJ_NAME, SQL_TEXT
from DBA_AUDIT_TRAIL;
USERNAME USERHOST TIMESTAMP OWNER OBJ_NAME SQL_TEXT
---------- --------------------- ------------------- ---------- ---------- ----------------------------------------------------------
TEST 127.0.0.1 2014-08-19:10:51:22 AUD AUDIT_TB insert into AUD.AUDIT_TB values ( 1, 'TMAXDATA')
1 row selected.
SQL
복사
AUDIT_TRAIL = OS 설정 시 LOG 확인 방법
$ cat audit.log
2014/08/19 11:00:57.708
SESS_ID:[21] SERAIL_NO:[39856] AUD_NO:[3] STMT_ID:[1608] USER_NAME:[TEST]
USER_HOST:[127.0.0.1] OS_USER:[tibero] CLIENT_ID:[tbsql] PRIV_NO:[3] ACTION:[S]
OBJ_OWNER:[AUD] OBJ_NAME:[AUDIT_TB] USGMT_ID:[10] SLOTNO:[19] WRAPNO:[32]
TSN:[158353] PID:[2845] SQLTEXT:[insert into AUD.AUDIT_TB values (1, 'TMAXDATA')]
SQL
복사
참고
일반 User는 insert on [schema. object] 에 대한 권한이 있어야 합니다.