설치 매뉴얼
개요
채울 UTMP 앱은 채울 UTMP(uToken combo 관리시스템)의 MariaDB 데이터베이스를 JDBC 폴링 방식으로 조회해 시스템 로그, 제어 로그, 신청서 로그, 매체 로그, 정책 로그를 수집합니다.
적용 범위
Note
소나 4.0 이상, MariaDB 10.x 이상에서 동작합니다.
요구 사항
| 항목 | 요구사항 | 비고 |
|---|---|---|
| DB 계정/권한 | 수집 대상 뷰에 대한 SELECT 권한을 가진 읽기 전용 계정 | 권한 부족 시 수집 실패 |
| 발급 필요 자격증명 | DB 계정·암호 | 채울 UTMP DB 관리자에게 요청 |
| 네트워크 허용 | TCP/3306 (소나 수집 노드 → 채울 UTMP DB 서버, Outbound) | 방화벽 정책 반영 필요 |
채울 UTMP 설정
Note
아래에서 설명하는 테이블명, 쿼리 등은 모두 예시입니다. 운영DB에 맞는 정보로 설정하세요.
단계 1: DB 계정·권한 준비
수집에 사용할 읽기 전용 DB 계정을 준비하고, 아래 뷰에 대한 SELECT 권한을 부여합니다.
| 뷰 이름 | 수집 내용 |
|---|---|
vw_LOG | 시스템 로그 (관리자 접속, 설정변경, 배포 등) |
vw_APPLY | 신청서 로그 (장치차단해제, 매체반출/반입 신청 등) |
vw_CONTROL | 제어 로그 (장치허용/차단, 쓰기허용/차단 등) |
vw_MEDIA | 매체 로그 (등록, 반출, 반입, 사용중지 등) |
vw_POLICY | 정책 로그 (정책생성, 변경, 할당 등) |
Caution
뷰가 참조하는 원본 테이블(LOG, LOG_APPLY, LOG_CONTROL, LOG_MEDIA, LOG_POLICY)의 LOG_IDX 컬럼에 인덱스가 없으면 폴링 쿼리가 풀스캔으로 동작해 운영 DB에 성능 영향을 줄 수 있습니다. 사전에 인덱스 유무를 확인하세요.
로그프레소 수집 설정
단계 1: DB 접속 프로파일 추가
시스템 > 접속 프로파일에서 추가를 클릭하고 아래 값을 입력합니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 접속 프로파일을 식별할 고유한 이름 |
| 필수 | 식별자 | 로그프레소 쿼리 등에서 사용할 접속 프로파일의 고유 식별자 |
| 필수 | 유형 | 데이터베이스 선택 |
| 필수 | 데이터베이스 유형 | MariaDB 선택 |
| 필수 | 호스트 | 채울 UTMP DB 서버 IP 주소 |
| 필수 | 포트 번호 | 3306 (기본값) |
| 필수 | 데이터베이스 이름 | 연결할 데이터베이스명 입력 |
| 필수 | 계정 | 단계 1에서 준비한 읽기 전용 계정 |
| 필수 | 암호 | 계정 암호 |
| 선택 | 읽기 전용 | 선택 권장 |
모든 입력이 완료되면 접속 테스트를 클릭해 연결을 확인한 후 저장합니다.
단계 2: 수집기 추가
수집 > 수집기에서 추가를 클릭합니다. 아래 5종 수집 모델에 대해 각각 수집기를 등록합니다.
Note
기본 설치되는 대시보드 및 데이터셋은 이름이 `DLP_CHAEWOOL_UTMP_{type}`으로 시작하는 테이블을 참조합니다. 테이블 이름 입력 시 이 형식을 따르세요.
공통 설정 항목은 아래와 같습니다.
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름 입력 |
| 필수 | 주기 | 60초 |
| 필수 | 적재 위치/수집 위치 | 로그프레소 플랫폼 구성에 따라 적합한 노드 선택 |
| 필수 | JDBC 프로파일 | 단계1에서 등록한 접속 프로파일 식별자 입력 |
| 필수 | 조건절 | where LOG_IDX > ? |
| 필수 | 첫번째 기준 열 | LOG_IDX |
| 필수 | 첫번째 기준 열 초기 값 타입 | integer |
수집 모델별 개별 설정은 아래를 참고합니다.
채울 UTMP LOG
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 수집 모델 | 채울 UTMP LOG |
| 필수 | 테이블 | DLP_CHAEWOOL_UTMP_LOG |
| 필수 | SQL | 아래 참조 |
select
LOG_IDX as id,
case
when LOG_ID=101 then '관리자 접속'
when LOG_ID=106 then '설정변경'
when LOG_ID=111 then '백업'
when LOG_ID=116 then '연동'
when LOG_ID=121 then '사용자 관리'
when LOG_ID=126 then '파일배포'
when LOG_ID=131 then '에이전트'
when LOG_ID=136 then '시스템'
else LOG_ID end as log_category,
case
when LOG_TYPE=0 then 'LOW'
when LOG_TYPE=1 then 'MEDIUM'
when LOG_TYPE=2 then 'MEDIUM'
when LOG_TYPE=3 then 'HIGH'
end as risk,
IP_ADDR as host_ip,
IP_HEX as host_ip_hex,
MAC_ADDR as host_mac,
KEYWORD as keyword,
LOG_MSG as msg,
LOG_DESC as description,
case when DEL_FL='N' then false else true end as is_deleted,
USER_ID as user,
USER_NM as user_name,
DEPT_ID as dept_code,
DEPT_NM as dept_name,
CREATE_DT as event_time,
CREATE_ID as creator,
LOGHASH as loghash,
LOGHASH_DT as loghash_time,
case when LOGHASH_ERR_FL='N' then false else true end as is_loghash_error,
LOGHASH_ERR_DT as loghash_error_time,
case when ERR_REPORT_FL='N' then false else true end as is_error_reported
from vw_LOG
$where
order by LOG_IDX
limit 10000
채울 UTMP APPLY
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 수집 모델 | 채울 UTMP APPLY |
| 필수 | 테이블 | DLP_CHAEWOOL_UTMP_APPLY |
| 필수 | SQL | 아래 참조 |
select
LOG_IDX as id,
case
when LOG_ID=901 then '장치차단해제'
when LOG_ID=921 then '사용자등록'
when LOG_ID=922 then '사용자 비밀번호 초기화'
when LOG_ID=941 then '매체등록'
when LOG_ID=942 then '매체폐기'
when LOG_ID=943 then '매체반출'
when LOG_ID=944 then '매체반입'
when LOG_ID=945 then '매체 비밀번호 초기화'
when LOG_ID=946 then '매체분실'
when LOG_ID=951 then '일반USB반출'
when LOG_ID=956 then '타기관 보안USB 사용'
else LOG_ID end as log_category,
case
when LOG_TYPE=0 then 'LOW'
when LOG_TYPE=1 then 'MEDIUM'
when LOG_TYPE=2 then 'MEDIUM'
when LOG_TYPE=3 then 'HIGH'
else LOG_TYPE end as risk,
CONTROL_TYPE as control_type,
CONTROL_DT as control_time,
IP_ADDR as host_ip,
IP_HEX as host_ip_hex,
MAC_ADDR as host_mac,
NODE_ID as host_id,
KEYWORD as keyword,
LOG_MSG as msg,
LOG_DESC as description,
case when DEL_FL='N' then false else true end as is_deleted,
CREATE_DT as event_time,
CREATE_ID as creator,
APPLY_IDX as apply_idx,
USER_ID as user,
USER_NM as user_name,
USER_DEPT_ID as user_dept_code,
USER_DEPT_NM as user_dept_name,
MANAGER_ID as manager,
MANAGER_NM as manager_name,
MANAGER_DEPT_ID as manager_dept_code,
MANAGER_DEPT_NM as manager_dept_name,
CONFIRM_ID as approver_id,
CONFIRM_NM as approver_name,
MEDIA_DT as media_time,
MEDIA_NM as media_name,
MEDIA_SERIAL as media_serial,
case
when MEDIA_TYPE=0 then '보안USB메모리'
when MEDIA_TYPE=1 then 'USB메모리'
when MEDIA_TYPE=2 then 'CD'
when MEDIA_TYPE=3 then 'DVD'
when MEDIA_TYPE=4 then 'FDD'
when MEDIA_TYPE=10 then '이동형PC'
when MEDIA_TYPE=13 then 'HDD Key'
when MEDIA_TYPE=14 then '기타'
else MEDIA_TYPE end as media_type,
case
when MEDIA_LEVEL=0 then '일반'
when MEDIA_LEVEL=10 then '인증'
when MEDIA_LEVEL=20 then '비밀II'
when MEDIA_LEVEL=21 then '비밀III'
when MEDIA_LEVEL=22 then '대외비'
else MEDIA_LEVEL end as media_level,
case
when MEDIA_CLASS=0 then '개인용'
when MEDIA_CLASS=1 then '업무용'
else MEDIA_CLASS end as media_class,
OVERLAPPING_HASH as overlapping_hash,
OVERLAPPING_CNT as overlapping_count,
OVERLAPPING_ST_DT as overlapping_start_time,
OVERLAPPING_ED_DT as overlapping_finish_time,
LOGHASH as loghash,
LOGHASH_DT as loghash_time,
case when LOGHASH_ERR_FL='N' then false else true end as is_loghash_error,
LOGHASH_ERR_DT as loghash_error_time,
case when ERR_REPORT_FL='N' then false else true end as is_error_reported
from vw_APPLY
$where
order by LOG_IDX
limit 10000
채울 UTMP CONTROL
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 수집 모델 | 채울 UTMP CONTROL |
| 필수 | 테이블 | DLP_CHAEWOOL_UTMP_CONTROL |
| 필수 | SQL | 아래 참조 |
select
LOG_IDX as id,
case
when LOG_ID=701 then '사용자 등록'
when LOG_ID=706 then '비밀번호변경'
when LOG_ID=711 then '사용자 인증'
when LOG_ID=716 then '쓰기허용'
when LOG_ID=721 then '쓰기차단'
when LOG_ID=726 then '읽기허용'
when LOG_ID=731 then '읽기차단'
when LOG_ID=736 then '장치허용'
when LOG_ID=741 then '장치차단'
when LOG_ID=746 then '제어정책'
when LOG_ID=751 then '매체승인'
when LOG_ID=756 then '일반USB반출'
when LOG_ID=761 then '무결성검사'
when LOG_ID=766 then '자체시험'
else LOG_ID end as log_category,
case
when LOG_TYPE=0 then 'LOW'
when LOG_TYPE=1 then 'MEDIUM'
when LOG_TYPE=2 then 'MEDIUM'
when LOG_TYPE=3 then 'HIGH'
else LOG_TYPE end as risk,
CONTROL_DT as control_time,
NODE_ID as host_id,
IP_ADDR as host_ip,
IP_HEX as host_ip_hex,
MAC_ADDR as host_mac,
KEYWORD as keyword,
LOG_MSG as msg,
LOG_DESC as description,
DEVICE_NAME as device_name,
DEVICE_INFO2 as device_info,
case when DEL_FL='N' then false else true end as is_deleted,
APPLY_IDX as apply_idx,
USER_ID as user,
USER_NM as user_name,
USER_DEPT_ID as user_dept_code,
USER_DEPT_NM as user_dept_name,
CREATE_DT as event_time,
CREATE_ID as creator,
OVERLAPPING_HASH as overlapping_hash,
OVERLAPPING_CNT as overlapping_count,
OVERLAPPING_ST_DT as overlapping_start_time,
OVERLAPPING_ED_DT as overlapping_finish_time,
LOGHASH as loghash,
LOGHASH_DT as loghash_time,
case when LOGHASH_ERR_FL='N' then false else true end as is_loghash_error,
LOGHASH_ERR_DT as loghash_error_time,
case when ERR_REPORT_FL='N' then false else true end as is_error_reported
from vw_CONTROL
$where
order by LOG_IDX
limit 10000
채울 UTMP MEDIA
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 수집 모델 | 채울 UTMP MEDIA |
| 필수 | 테이블 | DLP_CHAEWOOL_UTMP_MEDIA |
| 필수 | SQL | 아래 참조 |
select
LOG_IDX as id,
case
when LOG_ID=301 then '등록'
when LOG_ID=306 then '폐기'
when LOG_ID=311 then '반출'
when LOG_ID=312 then '반출확인'
when LOG_ID=316 then '반입'
when LOG_ID=321 then '변경'
when LOG_ID=326 then '인증'
when LOG_ID=331 then '미반입'
when LOG_ID=336 then '파일복사'
when LOG_ID=341 then '사본저장'
when LOG_ID=346 then '점검'
when LOG_ID=351 then '사용중지'
when LOG_ID=356 then '반납'
when LOG_ID=361 then '무결성검사'
when LOG_ID=366 then '자체시험'
else LOG_ID end as log_category,
case
when LOG_TYPE=0 then 'LOW'
when LOG_TYPE=1 then 'MEDIUM'
when LOG_TYPE=2 then 'MEDIUM'
when LOG_TYPE=3 then 'HIGH'
else LOG_TYPE end as risk,
IP_ADDR as host_ip,
IP_HEX as host_ip_hex,
KEYWORD as keyword,
LOG_MSG as msg,
LOG_DESC as description,
CREATE_DT as event_time,
CREATE_ID as creator,
MEDIA_DT as media_time,
MEDIA_NM as media_name,
MEDIA_SERIAL as media_serial,
case
when MEDIA_TYPE=0 then '보안USB메모리'
when MEDIA_TYPE=1 then 'USB메모리'
when MEDIA_TYPE=2 then 'CD'
when MEDIA_TYPE=3 then 'DVD'
when MEDIA_TYPE=4 then 'FDD'
when MEDIA_TYPE=10 then '이동형PC'
when MEDIA_TYPE=13 then 'HDD Key'
when MEDIA_TYPE=14 then '기타'
else MEDIA_TYPE end as media_type,
case
when MEDIA_LEVEL=0 then '일반'
when MEDIA_LEVEL=10 then '인증'
when MEDIA_LEVEL=20 then '비밀II'
when MEDIA_LEVEL=21 then '비밀III'
when MEDIA_LEVEL=22 then '대외비'
else MEDIA_LEVEL end as media_level,
case
when MEDIA_CLASS=0 then '개인용'
when MEDIA_CLASS=1 then '업무용'
else MEDIA_CLASS end as media_class,
USER_ID as user,
USER_NM as user_name,
USER_DEPT_ID as user_dept_code,
USER_DEPT_NM as user_dept_name,
MANAGER_ID as manager,
MANAGER_NM as manager_name,
MANAGER_DEPT_ID as manager_dept_code,
MANAGER_DEPT_NM as manager_dept_name,
case when MIGRATION_FL = 0 then false else true end as is_migrated,
case when DEL_FL='N' then false else true end as is_deleted,
LOGHASH as loghash,
LOGHASH_DT as loghash_time,
case when LOGHASH_ERR_FL='N' then false else true end as is_loghash_error,
LOGHASH_ERR_DT as loghash_error_time,
case when ERR_REPORT_FL='N' then false else true end as is_error_reported
from vw_MEDIA
$where
order by LOG_IDX
limit 10000
채울 UTMP POLICY
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 수집 모델 | 채울 UTMP POLICY |
| 필수 | 테이블 | DLP_CHAEWOOL_UTMP_POLICY |
| 필수 | SQL | 아래 참조 |
select
LOG_IDX as id,
case
when LOG_ID=501 then '정책생성'
when LOG_ID=506 then '정책변경'
when LOG_ID=511 then '정책삭제'
when LOG_ID=516 then '정책할당'
else LOG_ID end as log_category,
case
when LOG_TYPE=0 then 'LOW'
when LOG_TYPE=1 then 'MEDIUM'
when LOG_TYPE=2 then 'MEDIUM'
when LOG_TYPE=3 then 'HIGH'
else LOG_TYPE end as risk,
IP_ADDR as host_ip,
IP_HEX as host_ip_hex,
MAC_ADDR as host_mac,
KEYWORD as keyword,
LOG_MSG as msg,
LOG_DESC as description,
case when DEL_FL='N' then false else true end as is_deleted,
USER_ID as user,
USER_NM as user_name,
USER_DEPT_ID as user_dept_code,
USER_DEPT_NM as user_dept_name,
CREATE_DT as event_time,
CREATE_ID as creator,
LOGHASH as loghash,
LOGHASH_DT as loghash_time,
case when LOGHASH_ERR_FL='N' then false else true end as is_loghash_error,
LOGHASH_ERR_DT as loghash_error_time,
case when ERR_REPORT_FL='N' then false else true end as is_error_reported
from vw_POLICY
$where
order by LOG_IDX
limit 10000

