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 순서로 배치됩니다. HCAD는 최종 위험 판정기가 아니라, 보호 대상 리소스에 도달하기 전에 인증된 요청을 LLM 분석 경로로 보낼 가치가 있는지 판단하는 조기 게이트입니다.

설계 원칙. HCAD는 항상 요청을 통과(fail-open)시키며 차단·챌린지를 직접 수행하지 않습니다. 기본 pre-trigger 모드는 SHADOW입니다. 후보 요청은 LLM 분석을 시작할 수 있지만 런타임 부작용은 event boundary에서 억제됩니다. 실제 집행은 일반 Zero Trust 판정 경로가 담당합니다.

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

Stage 1
HTTP 요청 도착
인증된 세션이 Filter Chain 에 진입
Stage 2
HCADFilter
행동 신호 수집. 차단하지 않음
Stage 3
신호 점수화
신뢰 projection → 조기 분석 점수
Stage 4
조기 분석 개시
평가 행을 저장하고 후보 여부 판정
Stage 5
LLM 파이프라인
공통 trigger coordinator를 통해 1회 실행

분석 개시 시점 비교

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

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

신뢰 fast context projection

HCAD scoring은 TrustedHcadContextProjectionFactory가 생성하는 TrustedHcadContextProjection을 기준으로 수행됩니다. pre-trigger scoring에는 TRUSTED_SERVER, BRIDGE_VERIFIED, STORE_DERIVED 출처가 확인된 필드만 반영됩니다. 클라이언트가 보낸 시뮬레이션 헤더, 공식검사 override slot, RAG/vector/MCP 데이터, 외부 threat pack 입력은 hot path 판단에서 제외됩니다.

신뢰 경계. HCAD는 resource sensitivity나 business impact 같은 임의 요청 헤더를 점수화하지 않습니다. 신뢰 가능한 서버 상태, 검증된 bridge, 저장소에서 파생된 baseline/history로 추적되지 않는 값은 LLM trigger 이전 판단에서 무시됩니다.
ID
요청 식별
  • userId · sessionId
  • requestPath · httpMethod
  • remoteIp
GEO
시간·지리
  • clientIp
  • impossibleTravel
  • trusted server time
CTX
컨텍스트 바인딩
  • contextBindingHash
  • tenantId
  • organizationId
AUTH
인증
  • authenticationMethod
  • failedLoginAttempts
  • hasValidMFA
BHV
행동 패턴
  • requestBurst
  • rapidSequence
  • previousPath
BL
평소 행동 기준
  • baselineConfidence
  • baselineEstablished
  • STORE_DERIVED source
RES
리소스 바인딩
  • normalizedPath
  • httpMethod
  • verificationRequired
AUTHZ
인가 bridge
  • authorizationPolicyId
  • authorizationPrivileged
  • recentPermissionChanges
EXCL
제외 입력
  • RAG / vector / MCP
  • simulation headers
  • client risk overrides

신호 가중치 모델

신호는 두 종류로 나뉩니다. 핵심 신호(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개 이상 포함 시)
추가 임계값. contexa.hcad.high-risk-score=50, contexa.hcad.medium-risk-score=30, contexa.hcad.low-baseline-confidence-threshold=0.35. 평소 행동 기준(baseline)의 신뢰도가 0.35 미만인 사용자는 보조 신호 BASELINE_UNCERTAIN이 자동 부여됩니다.

판정 레코드 구조

점수 계산 결과는 불변 레코드 HcadPreProtectablePromotionAssessment에 담기며, pending anomaly trigger chain이 읽을 수 있도록 HTTP request attribute에 연결됩니다. 후보, trigger, 중복 억제, LLM 결과 상태는 별도의 hcad_detection_evaluation 테이블에 저장됩니다. 런타임 audit_log에는 감사 추적용 요약만 남기고, 통계와 관리자 화면은 전용 평가 테이블을 기준으로 집계합니다.

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

신뢰 projection 평가 및 평가 테이블 저장

보호 리소스에 도달하기 전, 현재 hot path에서 일어나는 흐름을 축약한 예시 코드입니다:

// HCADFilter 흐름을 단순화한 예시입니다.
// 1. 신뢰 출처 기반 canonical fast projection 생성
TrustedHcadContextProjection projection =
        trustedProjectionFactory.project(request, authentication);

// 2. 신뢰 필드만 점수화. ignoredInputs는 설명용으로만 보관하고 scoring에는 쓰지 않음
HcadPreProtectablePromotionAssessment assessment =
        hcadPreProtectablePromotionScorer.score(projection);

// 3. trigger chain이 읽을 수 있도록 request attribute에 assessment 연결
HcadPreProtectablePromotionRequestProjector.project(
        request,
        assessment,
        hcadProperties.getPreTrigger().effectiveMode());

// 4. orchestrator가 hcad_detection_evaluation 저장과 LLM 중복 억제를 조정
if (assessment.eligible()) {
    pendingAnomalyTriggerOrchestrator.maybeTrigger(request, authentication);
}

조기 분석 트리거 체인

HCAD 필터 이후 배치되는 AuthenticatedPendingAnomalyTriggerFilter는 아래의 순차 게이트를 통과한 요청에 한해 이벤트를 발행합니다. 각 단계는 서로 독립적으로 실패할 수 있으며, 어떤 단계에서 중단되든 기존 요청 흐름은 영향을 받지 않습니다. HCAD와 @Protectable trigger는 같은 idempotency key를 공유하므로 동일 요청에서 LLM 분석이 중복 실행되지 않습니다.

1
자격 확인
인증 여부 · action=PENDING_ANALYSIS · 평가 존재 확인
2
증거 검증
설명 필드 준비도 확인. 증거 보고서 생성
3
중복 제거
동일 request/context signature의 반복 후보 억제
4
Trigger coordinator
HCAD와 @Protectable trigger를 하나의 LLM analysis lease로 병합
5
이벤트 발행
조기 분석 이벤트 발행 + 재전송 대기 시간 마킹
담당 컴포넌트. PendingAnomalyEligibilityGate (1), PendingAnomalyEvidenceCheckService (2), AnalysisTriggerStateRepositoryHcadLlmTriggerCoordinator (3·4), PendingAnomalyEventTriggerService (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 시나리오에서도 그대로 재사용됩니다.

필드 타입 설명
hcadEvaluationId string hcad_detection_evaluation에 저장되는 기본 평가 ID
hcadMode enum OBSERVE · SHADOW · ENFORCE. 기본값은 SHADOW
decisionBoundaryMode enum HCAD shadow 후보에서는 SHADOW로 설정되어 enforcement 부작용을 건너뜁니다.
hcadEscalationScore integer 0~100 위험 점수
hcadEscalationBand enum LOW · MEDIUM · HIGH · REDLINE
hcadEscalationEligible boolean 조기 분석 개시 대상 여부
hcadEscalationReasons string[] 사유 코드 배열. 감지된 신호 목록
hcadEscalationSummary string 한 줄 요약. 관리자 알림 용도
hcadEscalationVersion string 평가 로직 버전. 재현성 보장
rawSignalSnapshot object 원시 신호 값. verifier 재평가 입력
duplicateSuppressed boolean coordinator가 HCAD/@Protectable 중복 trigger를 억제했는지 여부
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
projection·scorer·evaluation writer·data store·trigger coordination 빈 자동 등록
IdentitySecurityCoreAutoConfiguration
HCAD 경로와 Identity 필터 체인 통합

Shadow 모니터링과 승격 기준

HCAD pre-trigger 평가는 IAM 관리자 화면 /contexa/admin/security-monitor/hcad에서 확인합니다. 이 화면은 hcad_detection_evaluation을 기준으로 일·주·월·연 기간의 후보 수, LLM 호출 수, precision, false positive, 관측 가능한 false negative, unknown 비율, 평균 LLM latency, 중복 억제 수, signal별 성능, resource별 성능, 사용자·세션 반복, 예상 낭비 비용을 집계합니다.

운영 원칙. HCAD는 자동으로 enforce 전환을 수행하지 않습니다. 관리자 화면은 shadow 관측 결과와 권장 상태를 제시하고, 실제 전환 여부는 운영자가 판단합니다.
설정 기본값 의미
contexa.hcad.pre-trigger.mode shadow observe, shadow, enforce, disabled 중 선택
contexa.hcad.pre-trigger.qualification.shadow-min-precision 0.80 shadow 유지 최소 기준
contexa.hcad.pre-trigger.qualification.limited-enforce-min-precision 0.90 제한적 enforce 권장 기준
contexa.hcad.pre-trigger.qualification.default-enforce-min-precision 0.95 기본 enforce 권장 기준
contexa.hcad.pre-trigger.qualification.minimum-sample-size 100 권장 판단에 필요한 최소 표본 수