Microsoft Sentinel은 클라우드 네이티브 SIEM(보안 정보 및 이벤트 관리) 및 SOAR(보안 오케스트레이션 자동화 응답) 플랫폼입니다. Azure 전반과 하이브리드 환경에서 수집된 데이터를 AI/ML로 분석하여 위협을 탐지하고 대응을 자동화합니다.
250+ 커넥터 (Microsoft 365, AWS, GCP, Syslog, CEF, 사용자 정의 로그) → 모든 데이터를 중앙 수집.
내장 분석 규칙, MITRE ATT&CK 매핑, KQL(Kusto Query Language) 기반 위협 헌팅.
플레이북 (Logic Apps 기반)으로 자동 대응, AI 인시던트 분류, 가상 분석가.
기존 SIEM(Splunk, QRadar, ArcSight) 대비 Sentinel의 차별점:
| 영역 | Microsoft Sentinel | 기존 SIEM (온프레미스) |
|---|---|---|
| 인프라 | 완전 관리형, 서버 불필요 | 자체 서버, 스토리지, 유지보수 |
| 확장성 | Auto-scale, 페타바이트급 | 용량 계획 필요, 수직 확장 한계 |
| AI/ML | 내장 ML, UEBA, 위협 인텔리전스 | 별도 모듈/라이선스 |
| 비용 | 종량제 (데이터 볼륨) | 초기 라이선스 + 유지보수 |
| KQL | 강력한 시계열, 조인, 머신러닝 함수 | SPL 등 (러닝 커브) |
💡 AI 엔지니어 포인트: Sentinel의 KQL은 Python SDK와 연동 가능하며, Azure Machine Learning 추론을 직접 호출할 수 있습니다.
데이터 흐름: Log Sources → Data Connectors → Log Analytics Workspace → Analytics Rules → Incidents & Automation
Azure 구독 (기여자 권한), Log Analytics 작업 영역, Sentinel 리소스 공급자 등록.
# Azure CLI 로그인 및 공급자 등록
az login
az provider register --namespace Microsoft.OperationsManagement
az provider register --namespace Microsoft.OperationalInsights
# 변수 설정
RESOURCE_GROUP="rg-sentinel-lab"
LOCATION="koreacentral"
WORKSPACE_NAME="law-sentinel-lab"
# 리소스 그룹 생성
az group create --name $RESOURCE_GROUP --location $LOCATION
# Log Analytics 작업 영역 생성
az monitor log-analytics workspace create \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME \
--location $LOCATION
# Sentinel 활성화 (작업 영역에 솔루션 추가)
az monitor log-analytics solution create \
--resource-group $RESOURCE_GROUP \
--workspace-name $WORKSPACE_NAME \
--solution-type SecurityInsights
Azure Monitor Query SDK로 KQL 실행:
# pip install azure-monitor-query azure-identity
from azure.identity import DefaultAzureCredential
from azure.monitor.query import LogsQueryClient
credential = DefaultAzureCredential()
client = LogsQueryClient(credential)
workspace_id = "YOUR_WORKSPACE_ID"
query = """
SecurityEvent
| where EventID == 4625 # 로그인 실패
| where TimeGenerated > ago(1h)
| summarize FailedAttempts = count() by Account, Computer
| where FailedAttempts > 5
"""
response = client.query_workspace(workspace_id, query, timespan=None)
for row in response.tables[0].rows:
print(f"계정: {row[0]}, 컴퓨터: {row[1]}, 실패 횟수: {row[2]}")
⚠️ 실무 팁: Sentinel에서 제공하는 Analytics Rules 마법사를 사용하면 KQL 템플릿을 바로 배포할 수 있습니다. 위 쿼리를 “예약된 규칙”으로 등록하면 인시던트가 자동 생성됩니다.
| 설정 항목 | 권장 값 / 옵션 | 비고 |
|---|---|---|
| 데이터 보존 기간 | 90일 (대화형) + 2년 (장기 보관) | 비용 최적화: 핫/콜드 티어 |
| Analytics 규칙 빈도 | 5분 (빠른 탐지) / 1시간 (헌팅) | 쿼리 비용과 탐지 속도 트레이드오프 |
| UEBA | 활성화 (기본) | Azure AD DS, Windows EV 필요 |
| 위협 인텔리전스 | TAXII 커넥터 + STIX | Anomali, MISP 등 연동 |
| Playbooks 제한 | 4초/액션 (표준) | 장기 작업은 비동기 처리 |
증상: 로그가 Sentinel에 30분 이상 표시 안 됨.
해결: Log Analytics 에이전트 상태 확인, Heartbeat 테이블 쿼리, 커넥터 상태 점검.
원인: 테이블 전체 스캔, 비효율적인 조인.
튜닝: 시간 범위 제한, where 필터 선배치, materialize() 사용.
원인: Logic Apps 커넥터 권한 부족.
조치: 관리 ID 사용, RBAC 할당 (Sentinel 기여자).
🔧 AI 엔지니어 꿀팁: Sentinel의 Fusion (ML 기반 다단계 공격 탐지)을 활성화하고, 사용자 지정 ML 모델을 Azure Functions로 호출하는 플레이북을 만들어 보세요.