contexa-core contexa-identity hcad

HCAD 조기 위협 탐지

HCAD(Host & Context Anomaly Detection)는 인증된 HTTP 요청이 보호 대상 리소스(@Protectable)에 도달하기 전에 행동 신호를 수집하고, 위험 점수를 계산하여 AI 분석 파이프라인을 조기 개시합니다. HCAD 자체는 차단 결정을 내리지 않고, 분석 개시 조건만 계산합니다.

개요

HCAD 조기 위협 탐지는 요청이 컨트롤러에 도달하기 전, HCADFilterConfigurerHCADFilter를 Spring Security의 AuthorizationFilter 앞에 삽입하는 방식으로 동작합니다. 현재 configurer 순서는 SecurityConfigurer.HIGHEST_PRECEDENCE + 115이며, 뒤이어 AuthenticatedPendingAnomalyTriggerFilterHIGHEST_PRECEDENCE + 116 순서로 배치됩니다. 각 요청에서 9개 차원의 행동 신호를 수집하고, 핵심 신호(Anchor Signal)와 보조 신호(Corroborating Signal)의 가중치를 합산해 위험 점수를 생성합니다. 점수가 임계값(redlineScore=70)을 넘고 핵심 신호가 1개 이상 포함되면 LLM 기반 비동기 분석이 보호 대상 접근 이전에 시작됩니다.

설계 원칙. HCAD는 항상 요청을 통과(fail-open)시키며 차단·챌린지를 직접 수행하지 않습니다. 집행은 기존 ZeroTrustActionRepository 기반의 비동기 enforcement 경로에서만 이뤄지고, HCAD는 그 경로를 일찍 기동하는 역할만 담당합니다.

요청 도착부터 결정까지의 단계

Stage 1
HTTP 요청 도착
인증된 세션이 Filter Chain 에 진입
Stage 2
HCADFilter
행동 신호 수집. 차단하지 않음
Stage 3
신호 점수화
9가지 신호 → 위험 점수
Stage 4
조기 분석 개시
점수가 임계치 이상이면 AI 이벤트 발행
Stage 5
LLM 파이프라인
기존 비동기 분석 경로에 합류

분석 개시 시점 비교

HCAD가 없는 기본 경로에서는 AI 분석이 보호 대상 리소스 접근 시점에 시작됩니다. HCAD 조기 탐지가 활성화되면, 이미 강한 이상 징후가 있는 요청은 필터 단계에서 즉시 분석이 예약됩니다.

기본 경로 (HCAD 조기 탐지 미사용)
인증
Filter
컨트롤러 도달 대기
LLM 분석
결정
인증 필터 체인 대기 LLM 분석
HCAD 조기 탐지 활성화
인증
HCAD
LLM 분석 (조기 개시)
결정 반영
인증 HCAD 수집 조기 분석 결정

9차원 행동 신호

HCAD는 매 요청마다 HCADContext 값 객체를 생성하며, 여기에 사용자·세션·디바이스·지리·행동·인증·리소스·의도·기준선 정보를 함께 담습니다. 이 객체가 이후 점수 계산과 LLM 컨텍스트의 공통 입력이 됩니다.

ID
요청 식별
  • userId · sessionId
  • requestPath · httpMethod
  • remoteIp
GEO
시간·지리
  • country · city
  • latitude · longitude
  • currentAccessHour
NEW
신규성
  • isNewSession
  • isNewDevice
  • isNewUser
AUTH
인증
  • authenticationMethod
  • failedLoginAttempts
  • hasValidMFA
BHV
행동 패턴
  • recentRequestCount (5분)
  • lastRequestInterval
  • previousPath
BL
평소 행동 기준
  • baselineConfidence
  • updateCount
  • avgTrustScore
RES
리소스
  • resourceType
  • isSensitiveResource
INT
의도 신호
  • intentBotUserAgent
  • intentMissingReferer
VEC
벡터 변환
  • toVector() — 384차원
  • toJson()
  • toCompactString()

신호 가중치 모델

신호는 두 종류로 나뉩니다. 핵심 신호(Anchor)는 단독으로도 조기 분석을 유발할 수 있을 만큼 무거운 가중치를 가집니다. 보조 신호(Corroborating)는 여러 개가 누적돼야 의미를 갖습니다. 최종 규칙은 "핵심 신호 ≥ 1개 AND 총점 ≥ 70".

핵심 신호 (Anchor)

AIMPOSSIBLE_TRAVEL
45
AAUTH_CONTEXT_INCONSISTENT
40
AFAILED_LOGIN_BURST
30
ANEW_DEVICE
25

보조 신호 (Corroborating)

CSENSITIVE_SURFACE
20
CREQUEST_BURST
10
CRAPID_SEQUENCE
10
CPREVIOUS_PATH_JUMP
10
CBASELINE_UNCERTAIN
5

위험 점수 밴드

합산 점수는 0~100 척도에서 네 구간으로 분류됩니다. 조기 분석은 RED 구간에 진입하면서 핵심 신호가 포함된 경우에만 발동합니다.

LOW MEDIUM HIGH REDLINE
0 25 50 75 100
밴드 점수 구간 의미 조기 분석 개시
LOW 0 – 29 정상 범주 아니오
MEDIUM 30 – 49 경미한 이상 아니오
HIGH 50 – 69 주시 필요 아니오 (기존 경로)
REDLINE 70 – 100 즉각 점검 대상 (핵심 신호 1개 이상 포함 시)
추가 임계값. highRiskScore=50, mediumRiskScore=30, lowBaselineConfidenceThreshold=0.35. 평소 행동 기준(baseline)의 신뢰도가 0.35 미만인 사용자는 보조 신호 BASELINE_UNCERTAIN이 자동 부여됩니다.

판정 레코드 구조

점수 계산 결과는 불변 레코드 HcadPreProtectablePromotionAssessment에 담겨 HCADContext.additionalAttributes와 HTTP request attribute 양쪽에 투영됩니다. 이 레코드가 이후 감사·설명·평가에 사용되는 공통 진실원천입니다.

score
0~100 정수. 모든 신호의 가중치 합산
band
LOW · MEDIUM · HIGH · REDLINE 중 하나
eligible
조기 분석 개시 대상 여부 (true/false)
anchorSignals
감지된 핵심 신호 enum 집합
corroboratingSignals
감지된 보조 신호 enum 집합
reasonCodes
사유 코드 배열. 운영자 설명 용도
summary
한 줄 요약 문자열
evaluationVersion
평가 로직 버전. 향후 점수 모델 재튜닝과 비교 재현 용도
rawSignalSnapshot
원시 신호 값 스냅샷. verifier 재검증에 사용

조기 분석 트리거 체인

HCAD 필터 이후 배치되는 AuthenticatedPendingAnomalyTriggerFilter는 5단계 게이트를 통과한 요청에 한해 이벤트를 발행합니다. 각 단계는 서로 독립적으로 실패할 수 있으며, 어떤 단계에서 중단되든 기존 요청 흐름은 영향을 받지 않습니다.

1
자격 확인
인증 여부 · action=PENDING_ANALYSIS · 평가 존재 확인
2
증거 검증
설명 필드 준비도 확인. 증거 보고서 생성
3
중복 제거
재전송 대기 시간(cooldown) 중이면 통과 중단
4
동시 실행 제어
분산 락(TTL 기반) 획득 시도
5
이벤트 발행
조기 분석 이벤트 발행 + 재전송 대기 시간 마킹
담당 컴포넌트. PendingAnomalyEligibilityGate (1), PendingAnomalyEvidenceCheckService (2), AnalysisTriggerStateRepository (3·4), PendingAnomalyEventTriggerService (5). 5단계 모두 통과한 요청은 ZeroTrustEventPublisher.publishPreProtectableThreat()로 연결됩니다.

평소 행동 기준 학습

HCAD가 "이 사용자에게 정상인가" 를 판단하려면 먼저 무엇이 정상인지 알아야 합니다. BaselineLearningService는 신뢰 등급이 높은 요청에서 IP 대역·접근 시간·경로·User-Agent·OS·인증 방식을 관찰해 개인·조직 두 단계의 기준선을 점진적으로 갱신합니다.

학습 방식

지수 이동 평균 (EMA)

  • newTrust = α·current + (1-α)·old
  • 최근 관측에 더 큰 가중
  • 느린 드리프트 자연 반영

최저 빈도 제거 (LFU)

  • IP · 경로 · UA · OS 집합
  • 최소 빈도 요소부터 퇴거
  • 집합 크기 상한 유지

개인 기준선

  • 최소 10 샘플 이후 활성
  • 신뢰도 단계 상승
  • 사용자별 독립 보관

조직 기준선

  • 개인 데이터 부재 시 대체
  • 동류 그룹(cohort) 통계
  • 초기 사용자 보호막

이벤트 페이로드 필드

5단계 트리거를 통과한 요청은 PRE_PROTECTABLE_REDLINE 이벤트로 발행되며, 이후 기존 비동기 LLM 파이프라인과 감사 시스템이 이 페이로드를 소비합니다. 설계 계약상 모든 판정 근거가 페이로드에 담겨 있어야 하며, 이 구조는 향후 외부 verifier 시나리오에서도 그대로 재사용됩니다.

필드 타입 설명
hcadEscalationScore integer 0~100 위험 점수
hcadEscalationBand enum LOW · MEDIUM · HIGH · REDLINE
hcadEscalationEligible boolean 조기 분석 개시 대상 여부
hcadEscalationReasons string[] 사유 코드 배열. 감지된 신호 목록
hcadEscalationSummary string 한 줄 요약. 관리자 알림 용도
hcadEscalationVersion string 평가 로직 버전. 재현성 보장
rawSignalSnapshot object 원시 신호 값. verifier 재평가 입력
action enum 항상 PENDING_ANALYSIS. 실제 집행 액션은 비동기 LLM 분석이 결정

인프라 모드와 배선

HCAD의 세션 메타데이터·요청 카운팅·디바이스 기록은 인프라 모드에 따라 저장소가 다릅니다. 둘은 동일한 HCADDataStore 계약을 구현하므로 애플리케이션 코드는 영향을 받지 않습니다.

STANDALONE

개발·테스트 환경의 기본 모드. 모든 상태가 JVM 내부에 존재합니다.

InMemoryHCADDataStore
  • ConcurrentHashMap 기반
  • TreeMap 을 이용한 5분 요청 윈도우
  • 외부 의존성 없음

DISTRIBUTED

다중 인스턴스 운영 환경. 상태를 Redis에 저장하여 전체 노드가 공유합니다.

RedisHCADDataStore
  • Hash · Set · Sorted Set 구조
  • 세션 TTL 24h · 디바이스 TTL 30d
  • 인스턴스 전체에서 일관된 판정

배선 지점

HCADFilterConfigurer
Spring Security 필터 체인에서 AuthorizationFilter 앞에 HCADFilter 삽입 (configurer order=HIGHEST_PRECEDENCE + 115)
PendingAnomalyTriggerConfigurer
HCAD 필터 이후 트리거 필터 배치
CoreHCADAutoConfiguration
점수 산정기·저장소·서비스 빈 자동 등록
IdentitySecurityCoreAutoConfiguration
HCAD 경로와 Identity 필터 체인 통합