설치 매뉴얼
개요
NETCLIENT 앱은 닥터소프트 넷클라이언트의 PC 보안로그 데이터베이스를 JDBC로 정기 폴링하여 매체 제어와 비인가 SW 로그를 수집합니다. 원본 컬럼을 소나 로그 스키마로 매핑하고, 출력물·매체 보안 현황 대시보드를 제공합니다.
Note
본 문서의 테이블명(DEVICE_CONTROL_LOG·UNAUTH_SW_LOG)과 수집 쿼리(SQL)는 모두 예시입니다. 실제 넷클라이언트 DB의 테이블·컬럼 구성에 맞춰 조정하세요. 단, 각 컬럼의 별칭(AS 이름)은 소나 로그 스키마 필드명과 일치해야 정상 매핑됩니다.
적용 범위
Note
소나 4.0.2312.0 이상, MariaDB(MySQL 계열) 환경에서 동작합니다.
요구 사항
| 항목 | 요구사항 | 비고 |
|---|---|---|
| DB 계정/권한 | 대상 테이블에 SELECT 권한 읽기 전용 계정 | 권한 부족 시 수집 실패 |
| 발급 필요 자격증명 | MariaDB 계정·암호 | 넷클라이언트 DB 관리자에게 요청 |
| 네트워크 허용 | TCP/3306 (소나 수집 노드 → MariaDB, Outbound) | 방화벽 정책 반영 필요 |
넷클라이언트 DB 설정
단계 1: DB 계정·권한 준비
대상 테이블에 대한 SELECT 권한을 가진 읽기 전용 계정을 준비합니다.
단계 2: 대상 테이블 확인(예시)
| 로그 | 테이블 | 증분 기준 컬럼 |
|---|---|---|
| 매체 제어 | DEVICE_CONTROL_LOG | CreateDate |
| 비인가 SW | UNAUTH_SW_LOG | LogDate |
로그프레소 수집 설정
단계 1: DB 접속 프로파일 추가
시스템 > 접속 프로파일 > 추가:
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 접속 프로파일을 식별할 고유한 이름 |
| 필수 | 식별자 | 로그프레소 쿼리 등에서 사용할 고유 식별자 |
| 필수 | 유형 | 데이터베이스 선택 |
| 필수 | 데이터베이스 유형 | MariaDB (또는 MySQL / 사용자 정의) |
| 필수 | 접속 문자열 | jdbc:mariadb://<DB_HOST>:3306/<DB_NAME> |
| 필수 | 계정 | 사전 준비한 읽기 전용 계정 |
| 필수 | 암호 | 계정 암호 |
| 선택 | 읽기전용 | 체크 |
단계 2: 수집기 추가 — 매체 제어
수집 > 수집기 > 추가:
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름 |
| 필수 | 주기 | 60 (초, 60초 이상 권장) |
| 필수 | 수집 모델 | NETCLIENT 매체 제어 |
| 필수 | JDBC 프로파일 | 단계 1의 프로파일 |
| 필수 | SQL | 아래 "매체 제어 수집 쿼리" 참조 |
| 필수 | 조건절 | WHERE CreateDate > ? |
| 필수 | 첫번째 기준 열 | event_time |
| 선택 | 첫번째 기준 열 초기 값 | 수집 시작 일시 (yyyy-MM-dd HH:mm:ss) |
| 선택 | 첫번째 기준 열 초기 값 타입 | date |
매체 제어 수집 쿼리(예시)
SELECT
CreateDate AS event_time,
CASE WHEN IsBlock + 0 = 1 THEN 'BLOCK' ELSE 'DETECT' END AS action,
CASE MediaType WHEN '0' THEN 'CD' WHEN '1' THEN '볼륨디스크'
WHEN '2' THEN '플로피디스크' ELSE '미정의매체' END AS media_type,
ProcessId AS process_id, ProcessName AS process_name, ProcessOwner AS process_owner,
FileName AS src_file, FileSize AS file_size, DstFileName AS dst_file,
PolicyAgentReportId AS policy_id, PolicyType AS policy_type, EquipLogId AS log_id
FROM DEVICE_CONTROL_LOG
$where
ORDER BY CreateDate ASC
LIMIT 1000
단계 3: 수집기 추가 — 비인가 SW
수집 > 수집기 > 추가:
| 구분 | 항목 | 설정 |
|---|---|---|
| 필수 | 이름 | 수집기를 식별할 고유한 이름 |
| 필수 | 주기 | 60 (초) |
| 필수 | 수집 모델 | NETCLIENT 비인가 SW |
| 필수 | JDBC 프로파일 | 단계 1의 프로파일 |
| 필수 | SQL | 아래 "비인가 SW 수집 쿼리" 참조 |
| 필수 | 조건절 | WHERE LogDate > ? |
| 필수 | 첫 번째 기준 열 | event_time |
| 선택 | 첫번째 기준 열 초기 값 | 수집 시작 일시 (yyyy-MM-dd HH:mm:ss) |
| 선택 | 첫번째 기준 열 초기 값 타입 | date |
비인가 SW 수집 쿼리(예시)
SELECT
LogDate AS event_time,
CASE LogType WHEN 5 THEN '제거유도' WHEN 9 THEN '실행차단'
ELSE CAST(LogType AS CHAR) END AS action,
EquipId AS device_id,
CASE WHEN FileName LIKE '%[경고설정:%'
THEN TRIM(SUBSTRING_INDEX(FileName, '[경고설정:', 1)) ELSE NULL END AS result,
CASE WHEN FileName LIKE '%[경고설정:%'
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(FileName, '[경고설정:', -1), ']', 1) ELSE NULL END AS warning_threshold,
CASE WHEN FileName LIKE '%[경고횟수:%'
THEN SUBSTRING_INDEX(SUBSTRING_INDEX(FileName, '[경고횟수:', -1), ']', 1) ELSE NULL END AS warning_count,
EquipLogId AS log_id
FROM UNAUTH_SW_LOG
$where
ORDER BY LogDate ASC
LIMIT 1000

