[sql] 사용자별 데이터베이스 접근 로그 분석 방법

데이터베이스 접근 로그는 보안 및 감사 목적으로 중요한 정보를 포함하고 있습니다. 사용자별 데이터베이스 접근 로그를 분석하여 보안 위협을 탐지하고 사용자 활동을 추적할 수 있습니다. 이를 통해 미인가된 접근이나 잠재적인 보안 위협을 식별할 수 있습니다. 이제 그 방법에 대해 살펴보겠습니다.

1. 로그 데이터 수집

로그 데이터 수집은 데이터베이스 관리 시스템 (DBMS)에서 사용 가능한 감사 로깅 기능을 활성화하고 로그 저장을 구성함으로써 이루어집니다.

보통 DBMS는 로그인 시도, 접근 권한 요청, 쿼리 실행, 변경 작업 등의 이벤트를 기록합니다.

-- MSSQL Server에서 감사 로깅을 활성화하는 예시
USE master;
GO
ALTER SERVER AUDIT MyServerAudit
WITH (STATE = ON);
GO

2. 로그 분석 및 모니터링

이제, 수집된 로그 데이터를 분석하여 사용자별 접근 패턴 및 이상 징후를 탐지할 수 있습니다.

2.1 사용자별 접근 빈도 분석

가장 먼저 한 가지 사용자가 데이터베이스에 얼마나 자주 접근하는지를 확인합니다. 이를 통해 사용자의 활동 패턴을 이해할 수 있고, 이른 악의적인 활동에 대한 이상 징후를 쉽게 식별할 수 있습니다.

SELECT username, COUNT(*) AS access_count
FROM access_log
GROUP BY username
ORDER BY access_count DESC;

2.2 이상 접근 시도 탐지

이상한 시간대에 빈번한 로그인 시도나 쿼리 실행을 하는 사용자를 탐지할 수 있습니다. 이는 사용자의 계정이 침해당했거나, 악의적인 행위가 일어나고 있을 수 있다는 신호일 수 있습니다.

SELECT username, action, timestamp
FROM access_log
WHERE timestamp > (CURRENT_TIMESTAMP - INTERVAL 1 HOUR)
AND action = 'login'
GROUP BY username
HAVING COUNT(*) > 3;

2.3 민감한 데이터 접근 모니터링

특정 민감한 테이블이나 데이터베이스에 접근하는 사용자를 모니터링하는 것도 중요합니다. 이를 통해 데이터 유출 또는 불법적인 데이터 접근을 식별할 수 있습니다.

SELECT username, query, timestamp
FROM access_log
WHERE query LIKE '%sensitive_table%'
ORDER BY timestamp DESC;

3. 보고 및 대응

로깅 및 분석 결과를 기반으로 정기적인 보고서를 작성하고 보안 정책을 개선할 수 있습니다.

또한, 의심스러운 활동을 탐지하면 즉각적으로 대처하기 위한 대응 절차를 마련해야 합니다.

로깅과 모니터링을 통해 데이터베이스 접근을 추적하고 분석함으로써, 보안 위협에 대처하고 사용자 활동을 감시할 수 있습니다.

참고 자료


이러한 분석을 위해서는 로그 데이터를 실시간으로 분석하고 대응할 수 있는 시스템이 필요합니다. 현업에서는 SplunkELK 스택과 같은 로그 관리 및 분석 도구를 사용하여 이러한 작업을 수행합니다.