Audit Trail Purge 3편 (기타 Purge 작업)

안녕하세요 Thinking Man 입니다.

이번 글에서는 Audit Trail 데이터를 삭제하는 방법 중 자동/수동을 제외한 기타 삭제 방법에 대해 알아보도록 하겠습니다.

이번 글을 읽게 되면 DB Audit Trail 데이터를 DELETE로 삭제하는 방법 및 초기화 여부, Purge 간격변경 및 Purge 작업취소 방법에 대해서 알 수 있습니다.

이 글은 Oracle 11gR2 공식 문서를 참고하여 작성하였습니다.

 

 

Audit Trail

 

Audit Trail Purge 기타 방법

 


데이터베이스 감사 트레일의 일부 레코드 삭제

DB Audit Trail의 경우 Audit Table의 레코드를 수동으로 삭제할 수 있습니다. 예제를 살펴보시죠.

예제) 2024년 7월 한달동안 쌓인 Audit Trail 데이터를 삭제하는 예제 입니다.

DELETE 
  FROM SYS.AUD$
 WHERE NTIMESTAMP# > TO_TIMESTAMP ('01-JULY-24 00.00.00.000000 AM')
  AND  NTIMESTAMP# < TO_TIMESTAMP ('31-JULY-24 23.59.59.999999 PM');

예제) Audit Data를 모두 삭제하려면 아래처럼 WHERE 조건 없이 DELETE 를 수행하면 됩니다.

DELETE FROM SYS.AUD$;

DB Audit Trail 데이터를 삭제하려면 SYS 사용자이거나 SYS.AUD$ 테이블에 DELETE 권한을 부여받은 사용자만 삭제 가능합니다.

참고:

AUDIT SESSION 이 설정되어 있는 상태에서 Audit Trail 이 가득 찬 경우
AUDIT SESSION에 대한 감사 레코드를 Audit Trail에 저장할 수 없기 때문에 일반 사용자는 DB에 연결이 불가능 합니다. 
이런 상황에서는 SYS 계정으로 접속하여 Audit Trail의 여유 공간확보를 해야만 합니다. 
AUDIT_SYS_OPERATIONS 변수가 TRUE로 설정 되어 있지 않으면 이 때의 SYS 계정에서 수행한 작업은 표준 Audit Trail에 기록되지 않습니다.

DB Audit Trail 데이터를 삭제한 이후 삭제된 공간만큼 재사용이 가능합니다. 이 삭제된 공간을 반환하려면 별도의 작업이 필요합니다. 아래는 반환하기 위한 순서입니다.

1. SYS.AUD$ 테이블을 별도의 자동 TBS로 이동합니다.

BEGIN
  DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
   (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
    audit_trail_location_value => 'USERS');
END;
/

2. 여유공간을 반환 하기 위해서는 ROW MOVEMENT 를 ENABLE 한 후 SHRINK 명령을 수행해야 함

ALTER TABLE SYSTEM.AUD$ ENABLE ROW MOVEMENT;    
ALTER TABLE SYSTEM.AUD$ SHRINK SPACE CASCADE;  -- 여유공간 반환

3. SHRINK 후 AUD$ 테이블을 다시 SYSTEM TBS로 이동해야 하는 경우

BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
  (audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
  audit_trail_location_value => 'SYSTEM');
END;
/

Audit 테이블의 모든 데이터를 삭제하고 모든 공간을 다른 TBS에 반환하려면 TRUNCATE 문을 사용해 삭제하면 됩니다. DELETE 와 다르게 TRUNCATE 는 모든 공간을 반환합니다.

TRUNCATE TABLE SYS.AUD$;

 

참고:

SYS.AUD$ 및 SYS.FGA_LOG$는 직접 수정할 수 있는 유일한 SYS Table입니다.

 


기타 감사 트레일 삭제 작업

 

Audit Trail Purge를 위한 초기화 여부 확인 방법

Purge를 위한 초기화 작업이 완료되었는지 확인하기 위해서는 DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED 패키지를 수행하여 확인 가능합니다.

초기화되었다면 해당 패키지는 TRUE를 반환하고 초기화되지 않았다면 FALSE를 반환합니다.

예제)

SET SERVEROUTPUT ON
BEGIN
 IF
   DBMS_AUDIT_MGMT.IS_CLEANUP_INITIALIZED(DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD)
 THEN
   DBMS_OUTPUT.PUT_LINE('AUD$ is initialized for cleanup');
 ELSE
   DBMS_OUTPUT.PUT_LINE('AUD$ is not initialized for cleanup.');
 END IF;
END;
/

위 예제는 초기화 여부를 TRUE, FALSE로 리턴하며 상태 메시지를 같이 반환하는 예제입니다.

표준 감사가 아닌 다른 감사를 선택하고자 한다면 단계 3: Audit Trail Purge 작업 초기화의 AUDIT_TRAIL_TYPE 옵션을 확인하시면 됩니다.

 

초기화 이후 자동 Purge 간격 변경 방법

자동 Purge 시에 초기화 작업(단계 3)을 하며 Purge 하려는 간격을 설정하는데 이 간격 설정을 추후에 변경을 하고자 한다면 아래의 예제처럼 변경 가능합니다.

예제) 표준 감사를 Purge 간격을 1주일 단위로 변경

BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(
  AUDIT_TRAIL_TYPE            => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
  AUDIT_TRAIL_PROPERTY        => DBMS_AUDIT_MGMT.CLEAN_UP_INTERVAL,
  AUDIT_TRAIL_PROPERTY_VALUE  => 168 );
END;
/

예제 속성)

  • AUDIT_TRAIL_TYPE : 다음 값 중 하나를 입력합니다.

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD : 표준 감사 테이블 AUD$를 지정

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD : 상세 감사 테이블 FGA_LOG$를 지정

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD : 표준 및 상세 감사 테이블을 모두 지정

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS : .aud 확장자를 가진 OS Audit 파일 지정 (이 설정은 Windows 이벤트 로그 항목에는 적용되지 않습니다.)

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_XML : XML 형식의 OS Audit 파일 지정

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_FILES : OS 및 XML Audit 파일 모두 지정

– DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL : DB Audit Trail 및 OS Audit Trail 유형의 모든 Audit Trail 지정

주의해야 할 점은 각 감사 유형간에 간격들이 충돌하지 않아야 합니다.

예로 DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD과 DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD에 개별 간격을 설정할 수 있지만, DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD 속성은 설정할 수 없습니다.

  • AUDIT_TRAIL_PROPERTY : 변경할 속성을 지정. 여기서는 Purge Interval 속성을 나타내는 DBMS_AUDIT_MGMT.CLEAN_UP_INTERVAL을 지정. 현재 속성 설정을 확인하려면 DBA_AUDIT_MGMT_CONFIG_PARAMS 뷰의 PARAMETER_NAME, PARAMETER_VALUE 컬럼을 조회하면 됩니다. DBMS_AUDIT_MGMT.CLEAN_UP_INTERVAL 속성을 설정하는 순간부터 시간이 경과합니다.
  • AUDIT_TRAIL_PROPERTY_VALUE : DBMS_AUDIT_MGMT.INIT_CLEANUP 프로시저로 설정된 시간 간격을 업데이트합니다. 1에서 999 사이의 값을 입력 할 수 있습니다.

 

Purge 작업 초기화 설정 취소 방법

Purge 작업의 초기화를 취소 할 수 있습니다. 즉 Purge Interval 설정을 취소하는 방법입니다. 이를 위해서 DBMS_AUDIT_MGMT.DEINIT_CLEANUP를 사용해야 합니다.

예제) 표준 Audit Trail 의 Purge 설정을 취소

BEGIN
 DBMS_AUDIT_MGMT.DEINIT_CLEANUP(
  AUDIT_TRAIL_TYPE  => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD);
END;
/

이 예에서:

  • AUDIT_TRAIL_TYPE : 원하는 유형의 Audit 을 설정. 위 “초기화 이후 자동 Purge 간격 변경 방법”의 AUDIT_TRAIL_TYPE 값 중 하나를 입력 가능.

 


같이 읽으면 좋은 글

> Audit Trail Purge 2편 (자동 Purge)

Audit Trail Purge 1편 (수동 Purge)

Audit Trail 관리 2편(OS Audit Trail 관리)

Audit Trail 관리 1편(DB Audit Trail 관리)

Oracle Fine Grained Auditing 2편 (DBMS_FGA 패키지 활용법)

 

1 thought on “Audit Trail Purge 3편 (기타 Purge 작업)”

Comments are closed.