[oracle@localhost lib]$ cd $ORACLE_HOME/rdbms/lib
[oracle@localhost lib]$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME ( 몇분 소요 )
EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,
DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);
```
<br>
### 의무의 분리
#### Role
- AUDIT_ADMIN : 감사 정책을 관리 및 설정
- AUDIT_VIEWER : 감사 결과만을 검토
<br>
### BAI ( Basic Audit information )
- MR_SMITH ( 계정 ) : 감사 관리자
- AUDITMAN ( 계정 ) : 감사 결과 리뷰하는 유저
```
-- 테이블 생성
CREATE TABLE HR.CC_INFO (
FNAME VARCHAR2( 30 ),
LNAME VARCHAR2( 30 ),
CCNUM VARCHAR2( 30 ),
CCCODE VARCHAR2( 10 ),
ZIP_CODE VARCHAR2( 10 )
) TABLESPACE EXAMPLE;
-- 감사 정책을 만드는 AUDIT_ADMIN 롤을 가진 MR_SMITH를 생성한다.
CREATE USER MR_SMITH IDENTIFIED BY sunglasses
DEFAULT TABLESPACE USERS;
GRANT CONNECT, RESOURCE TO MR_SMITH;
ALTER USER MR_SMITH QUOTA 10M ON USERS;
GRANT AUDIT_ADMIN TO MR_SMITH;
-- BAI를 검토할 수 있는 AUDITMAN 유저를 생성한다.
CREATE USER AUDITMAN IDENTIFIED BY auditme
DEFAULT TABLESPACE USERS;
GRANT CONNET, RESOURCE TO AUDITMAN;
ALTER USER AUDITMAN QUOTA 10M ON USERS;
GRANT AUDIT_VIEWER TO AUDITMAN;
-- MR_SMITH 계정으로 HT.CC_INFO 테이블에 T001 정책을 활성화한다.
CREATE AUDIT POLICY T001 ACTIONS SELECT, INSERT, UPDATE, DELETE ON HR.CC_INFO;
AUDIT POLICY T001;
-- 그리고 감사 레코드를 디스크로 바로 쓸 수 있도록 UAT 설정을 변경한다.
EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,
DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE);
-- DML을 수행하기 전에 다음 쿼리로 정책 활성화 유무를 확인한다.
SELECT * FROM AUDIT_UNIFIED_ENABLED_POLICIES
WHERE POLICY_NAME = 'T001';
-- 쿼리 결과가 다음과 같이 표시되어야 한다.
USER_NAME POLICY_NAME ENABLED_OPT SUC FAI
--------- ----------- ----------- --- ---
ALL USERS T001 BY YES YES
-- HR 계정으로 로그인해서 감사 레코드를 생성하기 위해 다음 DML을 수행한다.
INSERT INTO HR.CC_INFO VALUES( 'TOM', 'LEE', '123456789', '1234', '91729' );
INSERT INTO HR.CC_INFO VALUES( 'CHUCK', 'SMITH', '234567891', '2345', '91730' );
INSERT INTO HR.CC_INFO VALUES( 'DAVID', 'KIM', '345678912', '3456', '91731' );
INSERT INTO HR.CC_INFO VALUES( 'VIK', 'MICHELLE', '456789123', '4567', '91732' );
INSERT INTO HR.CC_INFO VALUES( 'FOCUS', 'VISION', '567891234', '5678', '91733' );
COMMIT;
UPDATE HR.CC_INFO SET ZIP_CODE = '99999'
WHERE ZIP_CODE = '91733';
COMMIT;
DELETE FROM HR.CC_INFO
WHERE ZIP_CODE = '99999';
COMMIT;
-- AUDITMAN 유저가 HR.CC_INFO에 발생한 DML 작업을 확인할 수 있도록 위의 모든 문장을 실행하고
-- AUDITMAN 유저로 HR.CC_INFO에 테이블 생성과 DML 작업을 확인하기 위해 다음 쿼리를 실행한다.
SELECT EVNET_TIMESTAMP,
OBJECT_SCHEMA || '.' || OBJECT_NAME AS 'AUDIT_OBJECT",
SQL_TEXT
FROM UNIFIED_AUDIT_TRAIL
WHERE OBJECT_NAME = 'CC_INFO'
AND OBJECT_SCHEMA = 'HR'
AND OBJECT_SCHEMA IS NOT NULL
ORDER BY EVENT_TIMESTAMP;
-- MR_SMITH 계정으로 정책을 비활성화하고 삭제한다.
NOAUDIT POLICY T001;
DROP AUDIT POLICY T001;
-- 쓰기 정책을 디폴트로 변경한다.
EXEC DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,
DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE,
DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE);
```
<br>
### EAI ( Extended Audit Information )
- FGA : Fine Grained Auditing
- 데이터 펌프 익스포트 / 임포트
- RMAN 작업
- OLS
- DATABASE VAULT
- RAS
- 강좌 URL : http://www.gurubee.net/lecture/4265
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.