클라우드 데이터베이스 Oracle 12c 가이드 (2016년)
감사 0 0 12,257

by 구루비스터디 감사 BAI EAI Data Redaction Oracle12c [2023.09.04]


  • 법률이나 규제 준수 OR 다른 레벨의 감사 ( DBA )

SGA에서의 변경사항

Unified Audit

  • Queue : 메모리에서 감사 활동을 기록하는 데 사용
  • 첫 번째 큐가 다 채워지면 두번재 큐에 적재
  • 가득찬 첫 번째 큐는 백그라운드 프로세스인 GEN0이 audsys( Read-only )테이블에 메모리의 기록을 내려쓴다.
  • 크기 : 1MB(디폴트) ~ 30MB ( unifiedauditsgaqueuesize

Unified Audit 활성화

  • 디폴트 : 비활성화
  • 활성화 : Relink

  1. ORACLE_HOME에서 구동되는 모든 오라클 프로세스를 정지한다 ( 리스너와 데이터베이스 )
  2. uniaud_on 파라미터를 사용해서 오라클 데이터베이스 바이너리 파일을 Relink 한다.
  3. 오라클 프로세스를 재시작한다.
  4. "and Unified Auditing" 라는 텍스트가 로그인 배너에 마지막에 표시

[oracle@localhost lib]$ cd $ORACLE_HOME/rdbms/lib
[oracle@localhost lib]$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME ( 몇분 소요 )

톰 카이트의 한 마디

  • Audit Trail를 시스템의 로드 상황에 따라서 대략적으로 시간 기반으로 3초마다 내려쓸 수 있다.
  • 따라서 SGA상에서 오랜기간 동안 Audit Trail 레코드가 머물러 있지 않아도 된다.
  • 큐 사이즈에 상관없이 정기적으로 디스크에 내려쓰는 편이 훨씬 안전하다.

Immediate Write 모드 지정


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
"구루비 데이터베이스 스터디모임" 에서 2016년에 "클라우드 데이터베이스 Oracle 12c 가이드" 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/4265

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입