본문 바로가기
Database/Oracle

[ORACLE] DBA_AUDIT_OBJECT 완벽 가이드 : 객체 수준 감사(Object Audit)의 핵심 이해

by Papa Martino V 2025. 10. 13.
728x90

DBA_AUDIT_OBJECT
[ORACLE] DBA_AUDIT_OBJECT

 

Oracle Database의 보안 관리 체계에서 감사(Audit)는 가장 핵심적인 요소 중 하나입니다. 특히, DBA_AUDIT_OBJECT 뷰는 데이터베이스 객체(테이블, 뷰, 시퀀스, 프로시저 등)에 대한 모든 접근 및 조작 행위를 추적하고 기록하는 중요한 감사 로그 뷰입니다. 이 글에서는 DBA_AUDIT_OBJECT의 구조, 주요 컬럼, 활용 방법, 그리고 보안 운영에서의 실질적 응용 전략을 전문가 관점에서 깊이 있게 설명합니다.


1. DBA_AUDIT_OBJECT란?

DBA_AUDIT_OBJECT는 Oracle Database의 객체 수준(Object-Level) 감사 로그를 저장하는 데이터 딕셔너리 뷰입니다. 즉, 사용자가 특정 객체에 대해 SELECT, INSERT, UPDATE, DELETE, EXECUTE 등의 작업을 수행할 때, 그 행위가 감사 정책(Audit Policy)에 따라 기록된 결과를 조회할 수 있는 뷰입니다. 이 뷰는 DBA_AUDIT_TRAIL의 하위 개념으로, 데이터 조작 행위가 실제로 발생한 객체 단위에서의 로그를 보여줍니다. 즉, DBA_AUDIT_TRAIL이 전체 감사 이벤트를 총괄한다면, DBA_AUDIT_OBJECT는 “객체 단위”로 세분화된 분석 도구입니다.


2. DBA_AUDIT_OBJECT 주요 컬럼 설명

컬럼명 데이터 타입 설명
USERNAME VARCHAR2(30) 감사를 발생시킨 사용자 계정
OS_USERNAME VARCHAR2(255) 운영체제에서 사용된 로그인 사용자 이름
USERHOST VARCHAR2(128) 접속을 시도한 호스트명 또는 클라이언트
TERMINAL VARCHAR2(255) 세션이 생성된 터미널 이름
OWNER VARCHAR2(30) 감사된 객체의 소유자
OBJ_NAME VARCHAR2(128) 감사된 객체 이름 (예: 테이블명)
ACTION_NAME VARCHAR2(40) 실행된 작업의 이름 (‘SELECT’, ‘UPDATE’, ‘EXECUTE’ 등)
PRIV_USED VARCHAR2(40) 해당 작업에 사용된 권한 (Privilege)
RETURNCODE NUMBER 성공(0) 또는 오류 코드
TIMESTAMP DATE 감사 이벤트 발생 시각
COMMENT_TEXT VARCHAR2(4000) 감사 관련 상세 코멘트 또는 오류 메시지
SESSIONID NUMBER 감사 이벤트의 세션 식별자
STATEMENTID NUMBER 하나의 트랜잭션 내에서의 명령 순서

3. DBA_AUDIT_OBJECT의 핵심 역할

DBA_AUDIT_OBJECT는 데이터베이스 내의 객체에 대한 접근 이력을 체계적으로 추적합니다. 이를 통해 다음과 같은 보안 및 운영상의 이점을 얻을 수 있습니다:

  • 중요 테이블(예: 인사, 회계 데이터)에 대한 접근 이력 추적
  • 권한 남용 탐지 및 내부자 보안 사고 예방
  • 불법적인 데이터 삭제, 변경 행위 기록
  • 컴플라이언스 준수를 위한 감사 보고서 생성 (예: ISMS, SOX, GDPR 대응)
  • 감사 정책 최적화 및 성능 모니터링

4. DBA_AUDIT_OBJECT와 주요 감사 뷰 비교

뷰 이름 설명 주요 목적 비교 요약
DBA_AUDIT_OBJECT 객체 수준 감사 로그 특정 객체(테이블, 뷰, 프로시저) 접근 추적 객체별 접근 감사
DBA_AUDIT_SESSION 로그온/로그오프 감사 사용자 세션 활동 추적 세션 기반 감사
DBA_AUDIT_STATEMENT 명령문 단위 감사 DDL, DML 실행 내역 확인 SQL 명령 감사
DBA_FGA_AUDIT_TRAIL 세밀한 정책 기반 감사(FGA) 조건 기반 감사(WHERE 절 조건 충족 시 기록) 정책 중심 감사

5. DBA_AUDIT_OBJECT 조회 예제

SELECT USERNAME, OWNER, OBJ_NAME, ACTION_NAME, TIMESTAMP
FROM DBA_AUDIT_OBJECT
WHERE TIMESTAMP > SYSDATE - 7
ORDER BY TIMESTAMP DESC;

이 예시는 최근 7일 동안 발생한 객체 접근 감사를 최신 순으로 출력합니다. 특히, HR 스키마 내에서 민감한 테이블에 접근한 사용자 활동을 주기적으로 점검하는 데 유용합니다.


6. 감사 활성화 설정 방법

객체 감사(Object Audit)를 활성화하려면 DBA 권한을 가진 사용자가 아래와 같이 AUDIT 명령어를 실행합니다.

-- 특정 테이블의 SELECT, UPDATE, DELETE 접근을 감사하도록 설정
AUDIT SELECT, UPDATE, DELETE
ON HR.EMPLOYEES
BY ACCESS;

위 명령을 실행하면 HR 스키마의 EMPLOYEES 테이블에 대한 SELECT, UPDATE, DELETE 작업이 수행될 때마다 그 결과가 DBA_AUDIT_OBJECT 뷰에 기록됩니다. 감사 종료 시에는 다음과 같이 설정을 해제할 수 있습니다:

NOAUDIT SELECT, UPDATE, DELETE ON HR.EMPLOYEES;

7. 실무 활용 시나리오

① 데이터 변경 추적 및 복구 근거 확보

중요 테이블의 데이터가 변경되었을 때, 해당 시점의 DBA_AUDIT_OBJECT를 조회하면 누가, 언제, 어떤 SQL로 작업을 수행했는지를 추적할 수 있습니다. 이는 데이터 손상 원인을 규명하거나 복구 시 정확한 근거로 활용됩니다.

② 내부자 보안 감사

관리자 또는 개발자의 불필요한 데이터 열람을 추적할 때, DBA_AUDIT_OBJECT는 매우 유용합니다. 예를 들어, 민감한 인사 데이터에 접근한 사용자가 있다면, 해당 접근이 정당한 업무 목적이었는지를 검증할 수 있습니다.

③ 컴플라이언스 보고서 자동화

정기적인 보안 감사 보고서를 자동 생성하기 위해, DBA_AUDIT_OBJECT 데이터를 ETL 프로세스 또는 BI 도구로 수집해 분기별 접근 이력 보고서로 시각화할 수 있습니다.


8. DBA_AUDIT_OBJECT 로그 관리 및 성능 고려사항

  • 감사 로그가 과도하게 누적되면 성능에 영향을 줄 수 있으므로, 주기적으로 DELETE 또는 PURGE 수행 필요
  • 중요 객체만 선택적으로 감사하도록 설정하여 불필요한 로깅 최소화
  • 감사 데이터는 별도의 테이블스페이스(예: AUDIT_TS)에 저장하는 것이 관리상 유리
  • 보안 로그 보존 기간은 내부 보안 정책 및 컴플라이언스 요구사항에 따라 설정 (보통 6개월~1년)

9. DBA_AUDIT_OBJECT 모니터링 자동화 스크립트 예시

BEGIN
  FOR rec IN (
    SELECT USERNAME, OBJ_NAME, ACTION_NAME, TIMESTAMP
    FROM DBA_AUDIT_OBJECT
    WHERE TIMESTAMP > SYSDATE - 1
  )
  LOOP
    INSERT INTO AUDIT_REPORT_LOG VALUES (rec.USERNAME, rec.OBJ_NAME, rec.ACTION_NAME, rec.TIMESTAMP);
  END LOOP;
END;
/

위 PL/SQL 블록은 하루 동안 발생한 감사 로그를 별도의 AUDIT_REPORT_LOG 테이블에 저장하는 예시입니다. 이를 스케줄러(DBMS_SCHEDULER)로 자동 실행하면 일일 감사 로그 관리 체계를 구축할 수 있습니다.


10. 보안 운영을 위한 활용 팁

  • DBA_AUDIT_OBJECT와 DBA_AUDIT_SESSION을 함께 조회하면 로그인-객체 접근 경로를 추적 가능
  • 비정상적 오류 코드(RETURNCODE ≠ 0)만 필터링하여 실패한 접근 시도 집중 분석
  • 감사 로그 분석 시, 사용자 단말기 IP(USERHOST) 기준으로 이상 패턴 탐지
  • 통계 기반 보고서 작성 시, 월별/사용자별 접근 빈도 시각화로 권한 관리 효율성 향상

11. 결론

DBA_AUDIT_OBJECT는 Oracle Database의 보안 프레임워크에서 객체 단위 감사(Object-Level Auditing)를 수행하는 핵심 뷰입니다. 이 뷰를 활용하면 사용자 행동을 정밀하게 추적하고, 데이터 무결성을 보장하며, 내부 보안 위협을 사전에 탐지할 수 있습니다. 기업 환경에서는 반드시 이 뷰를 정기적으로 모니터링하고, 감사 정책을 최적화하여 시스템 전반의 투명성과 신뢰성을 강화하는 것이 중요합니다.


출처

728x90