
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에서 사용자 접근의 첫 관문을 통제하는 핵심 감사 뷰입니다. 로그인 및 로그오프 이벤트를 체계적으로 관리함으로써, 내부자 보안 사고 예방과 외부 침입 탐지 모두를 지원합니다. 또한, RETURNCODE와 USERHOST 정보를 결합하여 비정상 접근 패턴을 실시간 분석하면 기업의 데이터베이스 보안 수준을 한층 강화할 수 있습니다. 정기적인 감사 로그 분석은 단순한 보안 기록 관리가 아닌, 능동적 위협 대응 시스템의 출발점입니다.
출처
- Oracle® Database Reference 19c - DBA_AUDIT_SESSION View
- Oracle® Database Security Guide
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] DBA_AUDIT_TRAIL 완벽 가이드 : 오라클 감사 로그의 핵심 구조와 활용법 (0) | 2025.10.13 |
|---|---|
| [ORACLE] DBA_AUDIT_STATEMENT 완벽 가이드 : SQL 명령 단위 감사의 모든 것 (0) | 2025.10.13 |
| [ORACLE] DBA_AUDIT_OBJECT 완벽 가이드 : 객체 수준 감사(Object Audit)의 핵심 이해 (0) | 2025.10.13 |
| [ORACLE] DBA_AUDIT_EXISTS 완벽 가이드 : 객체 존재 감사의 원리와 활용 전략 (0) | 2025.10.13 |
| [ORACLE] DBA_ASSOCIATIONS 완벽 가이드 : 객체 간 관계를 관리하는 데이터베이스의 숨은 핵심 (0) | 2025.10.13 |