본문 바로가기
Database/Oracle

[ORACLE] DBA_AUDIT_EXISTS 완벽 가이드 : 객체 존재 감사의 원리와 활용 전략

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

DBA_AUDIT_EXISTS
[ORACLE] DBA_AUDIT_EXISTS

 

Oracle Database는 기업 데이터의 무결성과 보안을 보장하기 위해 다양한 감사(Audit) 메커니즘을 제공합니다. 그중에서도 DBA_AUDIT_EXISTS 뷰는 “객체 존재(Exists)”에 대한 감사 정보를 기록하는 중요한 역할을 수행합니다. 즉, 사용자가 특정 객체(테이블, 뷰, 시퀀스 등)가 존재하는지를 확인하려고 시도했을 때 그 행위 자체를 기록하는 뷰입니다. 이는 일반적인 SELECT, UPDATE, DELETE 등 명령에 대한 감사와는 차별화된 개념으로, 데이터 유출 사전 탐지와 보안 침해 방지에 매우 유용합니다.


1. DBA_AUDIT_EXISTS란?

DBA_AUDIT_EXISTS는 Oracle 데이터베이스에서 객체 존재 여부를 확인하는 SQL 명령(예: SELECT * FROM table_name 실행 시 해당 객체가 존재하지 않거나 권한이 없는 경우 등)에 대해 발생한 감사(Audit Exists) 로그를 기록하는 데이터 딕셔너리 뷰입니다. 보안 관점에서 “누가, 언제, 어떤 객체의 존재를 확인하려 했는가”를 추적할 수 있으며, 내부 정보 유출 시도나 무단 접근 행위를 식별하는 데 사용됩니다. 이는 일반적인 DBA_AUDIT_TRAIL이나 DBA_AUDIT_OBJECT보다 한 단계 더 정밀한 수준의 보안 탐지 로깅(View-Level Security Logging)을 제공합니다.


2. DBA_AUDIT_EXISTS 주요 컬럼 설명

컬럼명 데이터 타입 설명
USERNAME VARCHAR2(30) 감사를 발생시킨 사용자 이름
OS_USERNAME VARCHAR2(255) 운영체제 수준의 사용자 이름
USERHOST VARCHAR2(128) 사용자 접속 호스트명 또는 클라이언트 식별자
TERMINAL VARCHAR2(255) 세션이 시작된 터미널 이름
TIMESTAMP DATE 감사 이벤트 발생 시각
OWNER VARCHAR2(30) 감사된 객체의 소유자
OBJ_NAME VARCHAR2(128) 존재 여부를 확인한 객체의 이름
ACTION_NAME VARCHAR2(40) 수행된 동작명 (‘SELECT’, ‘EXECUTE’, ‘ALTER’ 등)
RETURNCODE NUMBER 작업 성공(0) 또는 실패 시 오류 코드
PRIV_USED VARCHAR2(40) 사용된 권한(Privilege) 정보
COMMENT_TEXT VARCHAR2(4000) 감사 이벤트에 대한 상세 설명

3. DBA_AUDIT_EXISTS의 역할과 목적

DBA_AUDIT_EXISTS는 “누가 어떤 객체를 인지하려 했는가”에 대한 기록을 남기는 데 초점을 맞춥니다. 이 뷰는 단순 데이터 변경 추적이 아니라 보안 인식 단계(Security Awareness Layer)의 감시 기능으로 설계되었습니다. 따라서 데이터베이스 보안 강화, 내부 침입 탐지(Insider Threat Detection), 이상 접근 패턴 모니터링 등의 목적으로 활용됩니다.

  • 보안 관리자(DBA)는 이 뷰를 통해 민감 객체(예: 고객정보 테이블)의 접근 시도를 사전 탐지 가능
  • 운영팀은 시스템 내부에서의 불필요한 쿼리 탐색 패턴을 분석하여 권한 남용 여부 판단
  • 감사팀은 컴플라이언스 규정(예: ISMS, GDPR, SOX 등)에 따른 접근 로그 관리 근거로 활용 가능

4. DBA_AUDIT_EXISTS 관련 뷰 비교

뷰 이름 설명 주요 목적 비교 요약
DBA_AUDIT_EXISTS 객체 존재 여부 확인 감사 로그 보안 위협 탐지, 접근 시도 기록 객체 인식 수준의 감사
DBA_AUDIT_OBJECT 객체에 대한 조작(SELECT, UPDATE 등) 감사 데이터 조작 감사 조작 중심 감사
DBA_AUDIT_TRAIL 전체 감사 로그 집합 감사 통합 관리 모든 감사 이벤트 포함
DBA_FGA_AUDIT_TRAIL 세밀한 정책 기반 감사(Fine-Grained Audit) 조건부 감사 정책 기반 감사 기능 강화

5. DBA_AUDIT_EXISTS 조회 예시

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

이 쿼리는 최근 7일간 발생한 객체 존재 감사 이벤트를 최신 순으로 조회하는 예시입니다. 이를 통해 최근 비정상적인 객체 접근 시도나 오류 발생 패턴을 신속하게 식별할 수 있습니다.


6. 감사 활성화 방법

DBA_AUDIT_EXISTS에 감사 로그를 남기기 위해서는 먼저 AUDIT EXISTS 옵션을 활성화해야 합니다. 이 명령은 객체 단위로 설정할 수 있으며, 특정 테이블, 뷰, 프로시저에 대한 존재 감사 정책을 지정할 수 있습니다.

-- 특정 테이블 존재 감사 활성화 예시
AUDIT EXISTS ON HR.EMPLOYEES BY ACCESS;

이후 HR 스키마의 EMPLOYEES 테이블에 대한 존재 여부를 확인하는 모든 시도(예: SQL Developer에서 객체 검색, 쿼리 실행 등)가 DBA_AUDIT_EXISTS 뷰에 기록됩니다.


7. 실무 활용 전략

① 민감 데이터 보호

고객 정보, 재무 데이터, 인사 정보와 같은 주요 테이블에 대해 AUDIT EXISTS 정책을 설정하면 데이터 접근 시도가 있더라도 “조회 시도” 자체를 감지할 수 있습니다. 이는 내부직원의 무단 탐색, 혹은 외부 계정 유출 시도를 조기에 차단하는 데 유용합니다.

② 침입 탐지 시스템(IDS)과의 연계

DBA_AUDIT_EXISTS 로그를 보안정보이벤트관리(SIEM) 시스템과 연계하면, 데이터베이스 접근 패턴을 실시간 분석하여 비정상적 쿼리 탐색을 자동 탐지할 수 있습니다. 예를 들어, 동일 사용자가 짧은 시간 내 여러 객체의 존재 여부를 조회한다면 경고를 발생시키는 방식입니다.

③ 컴플라이언스 대응

금융권, 공공기관, 의료 시스템 등에서는 데이터 존재 확인 시도도 보안 감사의 대상입니다. DBA_AUDIT_EXISTS를 활용하면 ISMS, GDPR, SOX 등 글로벌 규제에 대응할 수 있는 감사 로그 근거를 확보할 수 있습니다.


8. 보안 이벤트 분석 절차

  1. 이상 접근 탐지: 특정 계정이 다수의 객체에 접근 시도 → DBA_AUDIT_EXISTS 조회
  2. 로그 상관 분석: DBA_AUDIT_OBJECT, DBA_AUDIT_TRAIL과 교차 분석
  3. 조치 수행: 불법 접근 계정 차단, 관련 객체 권한 재검토
  4. 보고 및 저장: 주요 감사 로그를 외부 보안 저장소로 백업 (예: SIEM, Data Vault)

9. DBA_AUDIT_EXISTS 관리 시 유의사항

  • 감사 로그가 과도하게 쌓일 경우 성능에 영향을 줄 수 있으므로 정기적인 PURGE 수행 필요
  • 감사 대상 객체는 민감 데이터 위주로 최소화하여 설정
  • Oracle Unified Audit 환경에서는 UNIFIED_AUDIT_TRAIL과 병행 사용 시 중복 로깅 유의
  • DBA_AUDIT_EXISTS는 보안 로그로 분류되므로 별도 권한이 없는 사용자는 조회 불가

10. 결론

DBA_AUDIT_EXISTS는 데이터베이스 보안의 1차 방어선이자, 무단 접근 탐지를 위한 가장 정교한 감사 도구 중 하나입니다. 이 뷰를 통해 단순한 데이터 변경뿐 아니라 데이터 존재 인식 자체를 감시할 수 있다는 점에서 보안 담당자와 DBA에게 매우 강력한 관리 수단을 제공합니다. 정기적인 로그 분석과 감사 정책 최적화를 통해 안전하고 신뢰성 높은 데이터베이스 환경을 구축할 수 있습니다.


출처

728x90