본문 바로가기
Database/Oracle

[ORACLE] DBA_AUDIT_STATEMENT 완벽 가이드 : SQL 명령 단위 감사의 모든 것

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

DBA_AUDIT_STATEMENT
[ORACLE] DBA_AUDIT_STATEMENT

 

Oracle Database의 보안 체계는 단순한 접근 제어를 넘어, 사용자의 행동 자체를 기록하고 분석할 수 있는 감사(Audit) 기능을 제공합니다. 그중에서도 DBA_AUDIT_STATEMENT 뷰는 SQL 명령(Statement) 단위로 발생한 이벤트를 추적하기 위한 핵심 데이터 딕셔너리 뷰입니다. 이 뷰는 DDL, DML, 시스템 명령 실행 내역 등을 기록하여, 보안 침해나 시스템 오남용을 방지하는 데 활용됩니다.


1. DBA_AUDIT_STATEMENT란?

DBA_AUDIT_STATEMENT는 Oracle 데이터베이스에서 사용자가 실행한 SQL 명령(Statement)에 대한 감사 로그를 저장하는 뷰입니다. 이 뷰는 일반 사용자의 DDL (예: CREATE, ALTER, DROP) 또는 시스템 관련 명령(SHUTDOWN, GRANT, REVOKE 등)이 수행될 때 생성됩니다. 즉, 데이터베이스 객체의 변경, 권한 조정, 시스템 관리 작업 등 데이터 정의 및 시스템 명령 단위의 감사 기록을 확인할 수 있는 뷰입니다. DBA_AUDIT_STATEMENT은 보안 관리자가 누가 어떤 명령을 언제 실행했는지를 확인할 수 있게 해주며, 데이터 무결성 침해, 권한 남용, 시스템 오작동의 원인을 추적하는 데 필수적인 근거 자료로 사용됩니다.


2. DBA_AUDIT_STATEMENT 주요 컬럼 설명

컬럼명 데이터 타입 설명
USERNAME VARCHAR2(30) SQL 문을 실행한 사용자 이름
OS_USERNAME VARCHAR2(255) 운영체제 수준에서 로그인한 사용자명
USERHOST VARCHAR2(128) 접속한 클라이언트 호스트명 또는 IP 주소
TERMINAL VARCHAR2(255) 세션이 시작된 터미널 또는 장치 식별자
TIMESTAMP DATE 명령이 실행된 시각
ACTION_NAME VARCHAR2(40) 실행된 명령 종류 (‘CREATE TABLE’, ‘ALTER USER’ 등)
RETURNCODE NUMBER 명령 실행 결과 (0=성공, 기타 값=오류 코드)
OBJ_NAME VARCHAR2(128) 해당 명령이 적용된 객체 이름 (예: TABLE, VIEW 등)
OBJ_OWNER VARCHAR2(30) 객체 소유자 이름
PRIV_USED VARCHAR2(40) 명령 실행 시 사용된 권한
STATEMENTID NUMBER 트랜잭션 내 명령 식별 번호

이 뷰의 각 컬럼은 SQL 명령 실행의 “누가, 언제, 무엇을, 어떻게 수행했는가”를 명확히 파악할 수 있도록 구성되어 있습니다. 특히 RETURNCODE 값이 0이 아닌 경우, 오류 발생 원인을 추적하는 데 활용됩니다.


3. DBA_AUDIT_STATEMENT의 역할과 필요성

DBA_AUDIT_STATEMENT는 시스템 수준의 안정성과 보안성을 보장하기 위한 핵심 도구입니다. 다음은 이 뷰가 중요한 이유입니다.

  • 시스템 무결성 보장: 관리자가 수행한 시스템 명령을 추적하여 잘못된 설정 변경 방지
  • 보안 위협 탐지: 권한 없는 사용자가 DDL이나 시스템 명령을 실행했는지 감지
  • 변경 이력 관리: 객체 생성, 변경, 삭제에 대한 시점별 감사 정보 유지
  • 법적 감사 대응: 금융, 공공기관 등에서 요구하는 컴플라이언스 기준 충족

4. DBA_AUDIT_STATEMENT와 관련된 주요 감사 뷰 비교

뷰 이름 설명 주요 목적 차이점 요약
DBA_AUDIT_SESSION 로그온/로그오프 감사 정보 사용자 로그인 활동 추적 세션 기반 감사
DBA_AUDIT_OBJECT 객체 접근 감사 정보 테이블/뷰 등 객체 접근 추적 객체 조작 중심
DBA_AUDIT_STATEMENT SQL 명령 실행 감사 DDL/시스템 명령 추적 명령 단위 감사
DBA_FGA_AUDIT_TRAIL 세밀한 정책 기반 감사 조건 기반 감사 고급 보안 정책용

5. DBA_AUDIT_STATEMENT 활성화 방법

SQL 명령 단위의 감사를 활성화하려면 다음과 같이 AUDIT 명령을 설정해야 합니다.

-- 모든 DDL 명령에 대한 감사 활성화
AUDIT TABLE BY ACCESS;
AUDIT INDEX BY ACCESS;
AUDIT SEQUENCE BY ACCESS;

-- 특정 명령만 감사
AUDIT CREATE TABLE BY ACCESS;
AUDIT DROP USER BY ACCESS;

-- 감사 비활성화
NOAUDIT CREATE TABLE;

위 설정을 통해 사용자의 SQL 실행 이력이 DBA_AUDIT_STATEMENT 뷰에 기록됩니다. 감사 정책은 시스템 전역 또는 사용자별로 세분화할 수 있으며, 감사 데이터는 내부적으로 SYS.AUD$ 테이블에 저장됩니다.


6. DBA_AUDIT_STATEMENT 조회 예시

SELECT USERNAME, ACTION_NAME, OBJ_OWNER, OBJ_NAME, TIMESTAMP, RETURNCODE
FROM DBA_AUDIT_STATEMENT
WHERE TIMESTAMP > SYSDATE - 3
ORDER BY TIMESTAMP DESC;

위 쿼리는 최근 3일 이내 실행된 SQL 명령을 최신 순으로 조회합니다. RETURNCODE가 0이 아닌 경우, 해당 명령은 오류가 발생했음을 의미합니다.


7. 감사 로그 해석 예시

USERNAME ACTION_NAME OBJ_NAME RETURNCODE TIMESTAMP 결과 해석
HR CREATE TABLE EMPLOYEES 0 2025-10-12 10:31:44 정상적으로 EMPLOYEES 테이블 생성됨
DEV01 DROP USER TEST_USER 1031 2025-10-12 09:05:22 권한 부족으로 DROP USER 실패
SYSTEM ALTER SYSTEM NULL 0 2025-10-12 08:15:05 시스템 파라미터 변경 성공

이와 같은 감사 로그는 시스템 관리자에게 명확한 행위 이력을 제공하여, 이후의 문제 발생 시 원인을 신속하게 파악할 수 있게 해줍니다.


8. DBA_AUDIT_STATEMENT 실무 활용 전략

① 시스템 명령 추적

DBA_AUDIT_STATEMENT에서 ACTION_NAME LIKE 'ALTER SYSTEM%' 조건으로 조회하면, 시스템 환경 변경(예: 메모리, 파라미터 설정 등)을 수행한 이력을 모두 확인할 수 있습니다.

② DDL 변경 모니터링

데이터 모델링 변경 시, 누가 어떤 객체를 변경했는지 기록됩니다. 이 정보를 자동화 스크립트와 연계하면 “Schema Change Audit Report”를 생성할 수 있습니다.

③ 권한 오남용 탐지

GRANT, REVOKE 명령은 권한 구조에 직접적인 영향을 미칩니다. 해당 명령이 비정상적으로 자주 발생하는 사용자를 탐지하면 내부 보안 위협을 조기 식별할 수 있습니다.


9. DBA_AUDIT_STATEMENT 로그 관리 및 성능 고려사항

  • 감사 데이터는 SYS.AUD$ 테이블에 저장되므로 주기적으로 아카이브 또는 PURGE 필요
  • 대규모 트랜잭션 환경에서는 필요 최소한의 명령만 감사하도록 설정하여 부하 최소화
  • DBMS_AUDIT_MGMT 패키지를 이용해 자동 로그 정리 및 보존 기간 관리
  • Oracle 12c 이상에서는 UNIFIED_AUDIT_TRAIL로 통합 관리 가능

10. 보안 운영 시나리오 예시

  1. DDL 감시 정책 수립: CREATE, ALTER, DROP 명령을 전사적으로 감사하도록 설정
  2. 비인가 시스템 변경 탐지: ALTER SYSTEM, GRANT 명령을 중심으로 관리자 계정 모니터링
  3. 컴플라이언스 보고: DBA_AUDIT_STATEMENT 데이터를 BI 툴로 시각화하여 감사 이력 보고서 자동 생성
  4. 이상행동 분석: 특정 시간대 집중 발생하는 명령 패턴 분석으로 내부자 보안 위협 탐지

11. 결론

DBA_AUDIT_STATEMENT는 Oracle의 강력한 보안 인프라 중에서도 SQL 명령 실행 감사의 핵심입니다. 이 뷰를 통해 사용자의 시스템 변경, DDL 수행, 권한 관리 내역을 완벽히 추적할 수 있으며, 데이터베이스 무결성과 보안성을 동시에 확보할 수 있습니다. 기업 환경에서는 이를 정기적인 보안 감사 체계에 포함시켜, 내부자 위협 대응과 법적 컴플라이언스를 모두 충족시키는 것이 바람직합니다.


출처

728x90