SOAR 개요
Security Orchestration, Automation and Response (SOAR). 설정 가능한 승인 워크플로우와 실행 모드를 갖춘 Tool 실행 Pipeline을 통해 보안 인시던트를 처리하는 AI 기반 인시던트 대응 시스템입니다.
개요
Contexa SOAR는 AI 기반 위협 탐지와 자동화된 인시던트 대응 사이의 간격을 연결합니다. 계층형 평가 Pipeline이 중요한 보안 결정을 내리면 (예: Layer 2가 BLOCK 수준의 위협을 감지), SOAR 시스템이 대응을 조율합니다: 적절한 Tool을 선택하고, 승인 워크플로우를 관리하며, 대응 액션을 실행하고, 감사 추적을 유지합니다.
SOAR 아키텍처는 AI Lab 패턴을 따릅니다: SoarLab이 인시던트 컨텍스트를 포함한 SoarRequest를 받고, LLM 기반 Pipeline을 통해 처리하며, 어떤 @SoarTool 어노테이션 메서드를 호출할지 결정하고, 실행 전 승인 흐름을 관리합니다.
SoarLab
SOAR 처리 Lab입니다. 리액티브 인시던트 처리를 제공하기 위해 AI Lab 인터페이스를 구현합니다.
public interface SoarLab
AI Pipeline을 통해 SOAR 요청을 비동기로 처리합니다. 인시던트를 분석하고, 적절한 Tool을 선택하며, 승인 워크플로우를 관리하고, 대응 계획을 실행합니다.
SoarContext
SOAR 세션의 전체 수명 주기를 추적하는 풍부한 컨텍스트 객체입니다. DomainContext를 확장하며 인시던트 상세, 세션 상태, 대화 이력, 승인 요청, Tool 실행 결과, LLM 상호작용 상태를 유지합니다.
public class SoarContext extends DomainContext
| 필드 | 타입 | 설명 |
|---|---|---|
incidentId | String | 보안 인시던트의 고유 식별자. |
threatType | String | 위협 분류 (예: "UNAUTHORIZED_ACCESS"). |
severity | String | 인시던트 심각도 수준. |
description | String | 사람이 읽을 수 있는 인시던트 설명. |
affectedAssets | List<String> | 영향받는 시스템 자산 목록. |
currentStatus | String | 현재 인시던트 상태. |
organizationId | String | 조직 컨텍스트. |
sessionState | SessionState | 현재 세션 수명 주기 상태 (NEW, INITIALIZED, ACTIVE, ANALYZING, INVESTIGATING, WAITING_APPROVAL, EXECUTING 등). |
executionMode | SoarExecutionMode | SOAR Pipeline이 이 컨텍스트를 처리하는 방식 (SYNC, ASYNC, AUTO). |
threatLevel | ThreatLevel | 평가된 위협 수준 (CRITICAL, HIGH, MEDIUM, LOW, INFO, UNKNOWN). |
riskScore | double | 수치적 위험 평가. |
conversationHistory | List<Message> | 이 세션의 전체 LLM 대화 이력. |
approvalRequests | List<ApprovalRequest> | 처리 중 생성된 모든 승인 요청. |
approvedTools | Set<String> | 실행이 승인된 Tool. |
humanApprovalNeeded | boolean | 현재 사람의 승인이 필요한지 여부. |
emergencyMode | boolean | 긴급 모드 활성화 여부 (일반 승인 흐름을 우회). |
세션을 새로운 상태로 전환합니다.
이 세션에서 Tool의 실행을 승인합니다.
감사 및 컨텍스트 추적을 위해 Tool 실행 결과를 기록합니다.
SoarRequest
SOAR 처리를 시작하는 요청 객체입니다. AIRequest<SoarContext>를 확장하며 템플릿 및 진단 타입 설정과 함께 컨텍스트를 래핑합니다.
public class SoarRequest extends AIRequest<SoarContext>
SoarRequest request = SoarRequest.builder()
.context(soarContext)
.incidentId("INC-2024-001")
.threatType("UNAUTHORIZED_ACCESS")
.description("Suspicious login from unrecognized IP range")
.initialQuery("Investigate and contain the unauthorized access attempt")
.sessionId("session-abc-123")
.userId("admin-user")
.build();
SoarExecutionMode
public enum SoarExecutionMode
| 값 | 코드 | 설명 |
|---|---|---|
SYNC | sync | 블로킹 대기를 사용하는 동기 승인 처리. 호출자는 승인을 받거나 타임아웃될 때까지 블로킹됩니다. |
ASYNC | async | 영속성을 갖춘 비동기 승인 처리. 승인 요청이 저장되고 나중에 해결될 수 있습니다. |
AUTO | auto | 컨텍스트에 따른 자동 모드 선택. 저위험 Tool은 SYNC를, 고위험 Tool은 필수 승인과 함께 ASYNC를 사용합니다. |
SoarIncident
탐지부터 해결까지 전체 수명 주기 추적이 포함된 보안 인시던트를 나타냅니다.
public class SoarIncident
IncidentStatus
| 값 | 설명 |
|---|---|
NEW | 인시던트가 방금 생성됨. |
INVESTIGATING | 활발히 조사 중. |
IN_PROGRESS | 대응 액션 진행 중. |
CONTAINED | 위협이 억제되었지만 제거되지 않음. |
MITIGATED | 영향이 완화됨. |
ERADICATED | 위협이 완전히 제거됨. |
RECOVERED | 시스템이 정상 운영으로 복구됨. |
RESOLVED | 인시던트 해결됨. |
CLOSED | 사후 분석 후 인시던트 종결됨. |
FALSE_POSITIVE | 오탐으로 확인됨. |
IncidentType
| 값 | 설명 |
|---|---|
MALWARE | 맬웨어 감염. |
RANSOMWARE | 랜섬웨어 공격. |
PHISHING | 피싱 시도. |
DATA_BREACH | 데이터 유출. |
UNAUTHORIZED_ACCESS | 비인가 접근 시도. |
DOS_ATTACK | 서비스 거부 공격. |
INSIDER_THREAT | 내부자 위협 활동. |
VULNERABILITY | 취약점 악용. |
COMPLIANCE_VIOLATION | 컴플라이언스 정책 위반. |
OTHER | 미분류 인시던트. |