
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)를 수행하는 핵심 뷰입니다. 이 뷰를 활용하면 사용자 행동을 정밀하게 추적하고, 데이터 무결성을 보장하며, 내부 보안 위협을 사전에 탐지할 수 있습니다. 기업 환경에서는 반드시 이 뷰를 정기적으로 모니터링하고, 감사 정책을 최적화하여 시스템 전반의 투명성과 신뢰성을 강화하는 것이 중요합니다.
출처
- Oracle® Database Reference 19c - DBA_AUDIT_OBJECT View
- Oracle® Database Security Guide
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBA_AUDIT_STATEMENT 완벽 가이드 : SQL 명령 단위 감사의 모든 것 (0) | 2025.10.13 |
|---|---|
| [ORACLE] DBA_AUDIT_SESSION 완벽 가이드 : 로그인 및 세션 감사의 핵심 이해 (0) | 2025.10.13 |
| [ORACLE] DBA_AUDIT_EXISTS 완벽 가이드 : 객체 존재 감사의 원리와 활용 전략 (0) | 2025.10.13 |
| [ORACLE] DBA_ASSOCIATIONS 완벽 가이드 : 객체 간 관계를 관리하는 데이터베이스의 숨은 핵심 (0) | 2025.10.13 |
| [ORACLE] DBA_ANALYZE_OBJECTS 완벽 가이드 : 통계 수집과 성능 최적화의 핵심 (0) | 2025.10.13 |