본문 바로가기
Database/Oracle

[ORACLE] DBA_AUDIT_SESSION 완벽 가이드 : 로그인 및 세션 감사의 핵심 이해

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

DBA_AUDIT_SESSION
[ORACLE] DBA_AUDIT_SESSION

 

Oracle Database는 강력한 보안 감사(Audit) 기능을 통해 사용자의 로그인, 명령 수행, 데이터 조작 등 모든 활동을 세밀하게 기록할 수 있습니다. 이 중에서도 DBA_AUDIT_SESSION 뷰는 사용자의 로그온(Logon)로그오프(Logoff) 활동을 추적하기 위한 핵심 뷰로, 데이터베이스 접근 제어와 내부 보안 감시에 반드시 필요한 요소입니다. 본 글에서는 DBA_AUDIT_SESSION의 구조, 주요 컬럼, 활용 방법, 그리고 실무 보안 시나리오를 기반으로 한 분석을 다룹니다.


1. DBA_AUDIT_SESSION이란?

DBA_AUDIT_SESSION은 Oracle 데이터베이스에서 사용자의 세션 활동, 즉 로그인(Logon)과 로그오프(Logoff) 이벤트를 감사(Audit)한 결과를 저장하는 뷰입니다. 이 뷰는 사용자 인증 시도(성공/실패), 접속 IP, 호스트명, 접속 시간 등의 정보를 포함하고 있어, DBA는 이를 통해 누가 언제 어떤 방식으로 시스템에 접근했는지를 명확히 파악할 수 있습니다.

Oracle의 세션 감사 기능은 내부 보안 규정 준수, 접근 통제, 침입 탐지(IDS), 그리고 감사 로그 분석 등 다양한 분야에서 활용됩니다. 특히 DBA_AUDIT_SESSION은 로그인 실패 이벤트를 통해 비인가 접속 시도를 식별하는 데 필수적인 데이터 소스입니다.


2. DBA_AUDIT_SESSION 주요 컬럼 설명

컬럼명 데이터 타입 설명
USERNAME VARCHAR2(30) 로그온을 시도한 사용자 이름
OS_USERNAME VARCHAR2(255) 운영체제 수준의 사용자 이름
USERHOST VARCHAR2(128) 사용자가 접속한 클라이언트 호스트명
TERMINAL VARCHAR2(255) 세션이 시작된 터미널 이름 (또는 장치 ID)
TIMESTAMP DATE 세션 시작(로그온) 시각
LOGOFF_TIME DATE 세션 종료(로그오프) 시각
RETURNCODE NUMBER 로그온 성공(0) 또는 실패 시 오류 코드
AUTHENTICATION_TYPE VARCHAR2(30) 인증 방식 (PASSWORD, EXTERNAL, GLOBAL 등)
SESSIONID NUMBER 세션을 구분하는 고유 ID
CLIENT_ID VARCHAR2(64) 애플리케이션 또는 서비스의 클라이언트 식별자
ACTION_NAME VARCHAR2(40) 수행된 동작 (‘LOGON’, ‘LOGOFF’)

이 정보는 단순한 접속 이력 이상의 의미를 갖습니다. 예를 들어, RETURNCODE가 1017이면 비밀번호 오류를 의미하므로, 무차별 대입 공격(Brute Force Attack) 탐지에도 활용할 수 있습니다.


3. DBA_AUDIT_SESSION과 관련된 주요 감사 뷰 비교

뷰 이름 설명 주요 목적 비교 요약
DBA_AUDIT_SESSION 로그온/로그오프 감사 정보 사용자 로그인 추적 접속 시도 및 인증 상태 확인
DBA_AUDIT_OBJECT 객체 접근 감사 테이블, 뷰 등 객체 접근 추적 데이터 조작 활동 감사
DBA_AUDIT_STATEMENT 명령문 단위 감사 DDL, DML 실행 이력 추적 SQL 실행 로그
DBA_FGA_AUDIT_TRAIL 세밀한 조건 감사 Fine-Grained Audit (조건 기반 감사) 고급 보안 정책 구현

4. DBA_AUDIT_SESSION 활성화 및 설정 방법

세션 감사를 활성화하려면 DBA 권한으로 다음 명령을 실행해야 합니다.

-- 사용자 세션 로그인 감사 활성화
AUDIT SESSION;

-- 감사 비활성화 시
NOAUDIT SESSION;

위 명령을 실행하면 사용자의 로그인 및 로그오프 이벤트가 자동으로 DBA_AUDIT_SESSION 뷰에 기록됩니다. 만약 특정 사용자만 감시하고 싶다면 아래와 같이 설정할 수 있습니다.

-- 특정 사용자에 대한 세션 감사 설정
AUDIT SESSION BY HR BY ACCESS;

이렇게 하면 HR 사용자의 로그인 시도(성공 또는 실패)만 감사 로그에 남게 됩니다. 실제 운영 환경에서는 관리자 계정(SYS, SYSTEM 등)에 대해 항상 감사 설정을 유지하는 것이 권장됩니다.


5. DBA_AUDIT_SESSION 조회 예시

SELECT USERNAME, USERHOST, TERMINAL, TIMESTAMP, LOGOFF_TIME, RETURNCODE
FROM DBA_AUDIT_SESSION
WHERE TIMESTAMP > SYSDATE - 1
ORDER BY TIMESTAMP DESC;

이 쿼리는 최근 24시간 동안의 로그인/로그오프 내역을 보여줍니다. 특히 RETURNCODE가 0이 아닌 경우 실패한 로그인 시도로 간주할 수 있습니다.


6. RETURNCODE 주요 오류 코드 표

RETURNCODE 의미 설명
0 성공 정상적으로 로그인 또는 로그오프가 완료됨
1017 비밀번호 오류 잘못된 자격증명으로 로그인 실패
28000 계정 잠금 잠금된 계정 접근 시도
28001 비밀번호 만료 비밀번호 변경 필요
28002 비밀번호 유효기간 임박 관리자 경고 수준

7. DBA_AUDIT_SESSION을 활용한 보안 운영 시나리오

① 비정상 접속 탐지

로그온 실패 횟수가 일정 횟수를 초과하는 계정을 탐지하면, 비밀번호 유출 가능성을 의심할 수 있습니다.

SELECT USERNAME, COUNT(*) AS FAIL_COUNT
FROM DBA_AUDIT_SESSION
WHERE RETURNCODE != 0
GROUP BY USERNAME
HAVING COUNT(*) > 5;

② 원격 접근 제어

DBA_AUDIT_SESSION의 USERHOST 정보를 통해 승인된 IP 또는 호스트 외의 접근을 탐지할 수 있습니다. 이 데이터를 SIEM(Security Information and Event Management) 시스템과 연계하면 실시간 보안 경보를 발생시킬 수 있습니다.

③ 세션 지속시간 분석

로그온과 로그오프 시간 차이를 계산하면 사용자별 세션 지속시간을 모니터링할 수 있습니다.

SELECT USERNAME,
       (LOGOFF_TIME - TIMESTAMP) * 24 * 60 AS SESSION_MINUTES
FROM DBA_AUDIT_SESSION
WHERE LOGOFF_TIME IS NOT NULL;

8. DBA_AUDIT_SESSION 로그 관리 및 보존 정책

  • 감사 로그는 기본적으로 SYS.AUD$ 테이블에 저장되므로, 주기적으로 백업 또는 아카이브 수행 필요
  • 대규모 환경에서는 DBMS_AUDIT_MGMT 패키지를 활용해 자동 정리(PURGE) 정책 구성
  • 법적 감사 요구사항(예: 금융권 1년, 공공기관 3년)에 맞춰 보존 주기 설정
  • Unified Audit 환경(Oracle 12c 이상)에서는 UNIFIED_AUDIT_TRAIL 사용 권장

9. 보안 모니터링 대시보드 구축 팁

DBA_AUDIT_SESSION 데이터를 기반으로 다음과 같은 보안 대시보드를 구성할 수 있습니다.

  • 일별 로그인 성공/실패 통계
  • 상위 로그인 실패 사용자 Top 10
  • 비정상 IP 접근 시도
  • 장시간 세션(Idle Session) 탐지
  • 관리자 계정 접근 로그 모니터링

이 데이터를 BI 도구(Tableau, Power BI 등)와 연동하면 실시간 시각화 기반의 보안 통제 체계를 구축할 수 있습니다.


10. 결론

DBA_AUDIT_SESSION은 Oracle Database에서 사용자 접근의 첫 관문을 통제하는 핵심 감사 뷰입니다. 로그인 및 로그오프 이벤트를 체계적으로 관리함으로써, 내부자 보안 사고 예방과 외부 침입 탐지 모두를 지원합니다. 또한, RETURNCODEUSERHOST 정보를 결합하여 비정상 접근 패턴을 실시간 분석하면 기업의 데이터베이스 보안 수준을 한층 강화할 수 있습니다. 정기적인 감사 로그 분석은 단순한 보안 기록 관리가 아닌, 능동적 위협 대응 시스템의 출발점입니다.


출처

728x90