Shadow Mode 마이그레이션
Shadow Mode는 AI 기반 보안의 안전하고 점진적인 도입 경로를 제공합니다. security.zerotrust.mode로 제어되는 두 가지 단계를 통해 관찰 전용에서 완전 적용으로 전환합니다.
Shadow Mode의 작동 방식
Contexa를 기존 애플리케이션에 처음 배포할 때, AI 기반 보안 결정을 즉시 적용하는 것은 위험합니다. Shadow Mode는 기존 보안과 병렬로 전체 AI 평가 파이프라인을 실행하여 적용을 활성화하기 전에 AI 결정을 관찰하고 검증할 수 있게 합니다.
모드는 단일 속성 security.zerotrust.mode로 제어됩니다. SHADOW 모드에서는 AI 분석 파이프라인이 완전히 실행(HCAD, LLM 분석, 위험 점수 산정)되지만 SecurityDecisionEnforcementHandler가 Redis에 액션을 기록하지 않습니다. ENFORCE 모드(기본값)에서는 액션이 저장되고 ZeroTrustAccessControlFilter에 의해 적용됩니다.
| 단계 | security.zerotrust.mode |
AI 동작 | 적용 | 사용 사례 |
|---|---|---|---|---|
| Shadow | SHADOW |
관찰, 분석, 로깅만 수행 | 없음 - AI 결정이 로깅되지만 적용되지 않음 | 초기 배포, 기준선 학습, 오탐 평가 |
| Enforce | ENFORCE (기본값) |
완전 적용 | AI가 Zero Trust 엔진을 통해 모든 보안 결정을 수행 | 프로덕션 운영, 완전한 AI 네이티브 보안 |
1단계: Shadow
Shadow 모드에서는 전체 Contexa AI 파이프라인이 기존 보안 인프라와 함께 실행되지만 인가 결정에 영향을 미치지 않습니다. 모든 요청이 HCAD와 Zero Trust 엔진을 통해 분석되며, AI는 ZeroTrustAction 결정을 생성하지만 SecurityDecisionEnforcementHandler는 적용을 완전히 건너뜁니다. 결정은 감사 로그에만 기록됩니다.
이 단계는 행동 기준선을 구축하는 데 필수적입니다. HCAD 엔진은 이상을 안정적으로 탐지하기 전에 정상적인 사용자 패턴을 관찰해야 합니다.
contexa:
enabled: true
autonomous:
enabled: true
security:
zerotrust:
enabled: true
mode: SHADOW
hcad:
enabled: true
baseline:
learning:
enabled: true
기준선 학습 — 신뢰할 수 있는 행동 기준선을 확립하기 위해 최소 2주간 Shadow 모드를 실행하세요. HCAD 학습 단계는 신뢰 점수가 안정화되기 전에 사용자당 충분한 요청 샘플이 필요합니다.
Shadow Mode의 내부 작동 방식
SecurityEventProcessor 핸들러 체인이 순서대로 실행됩니다:
- ProcessingExecutionHandler (order=50) - AI 분석이 정상적으로 실행되어 위험 점수와 액션 권장 사항을 생성합니다
- SecurityDecisionEnforcementHandler (order=55) -
SecurityZeroTrustProperties.isEnforcementEnabled()가false(즉mode = SHADOW)를 반환하면, 핸들러는 관찰된 결정을 로그에 기록한 뒤ZeroTrustActionRepository.saveAction(),setBlockedFlag(),BlockingSignalBroadcaster.registerBlock(),IBlockedUserRecorder.recordBlock()을 호출하지 않고 반환합니다. 런타임 부수 효과가 적용되지 않습니다. ENFORCE 모드(기본값)에서는 네 가지 부수 효과가 기존과 동일하게 실행됩니다.ALLOW결정에 대한SecurityLearningService기준선 학습은 두 모드 모두에서 계속 수행됩니다. - AuditingHandler (order=60) - 적용되었을 액션을 포함하여 AI 결정을 감사 로그에 기록합니다
Redis에 액션이 기록되지 않으므로 ZeroTrustAccessControlFilter는 다음 요청에서 적용할 것이 없어 모든 요청이 정상적으로 통과합니다.
모니터링 항목
- 활성 사용자 전체에서 HCAD 기준선 신뢰 점수 안정화
- 감사 로그의
ZeroTrustAction분포 (ALLOW vs. BLOCK vs. CHALLENGE vs. ESCALATE) - 오탐률: AI가 정상 요청을 차단했을 빈도
- AI 분석 지연 시간: 비동기 파이프라인이 요청 처리량에 영향을 미치지 않는지 확인
2단계: Enforce
Enforce 모드에서는 Contexa AI 엔진이 보안 결정에 대한 완전한 권한을 갖습니다. SecurityDecisionEnforcementHandler가 AI가 결정한 ZeroTrustAction 결정을 Redis에 저장하고, ZeroTrustAccessControlFilter가 후속 요청에서 이를 적용합니다. 이것이 기본 모드입니다.
contexa:
enabled: true
autonomous:
enabled: true
security:
zerotrust:
enabled: true
mode: ENFORCE
threat:
initial: 0.3
session:
bearer:
enabled: true
hcad:
enabled: true
baseline:
learning:
enabled: true
적용 규칙
- ALLOW - 요청이 정상적으로 통과
- BLOCK - 요청이 거부됨 (HTTP 403). 사용자가 차단 사용자 레지스트리에 기록됩니다.
- CHALLENGE - 추가 검증 단계가 트리거됨
- ESCALATE - 추가 검토가 완료될 때까지 요청이 보류됨 (HTTP 423)
- PENDING_ANALYSIS - 응답이
BlockableResponseWrapper로 래핑되며, 비동기 AI 파이프라인이 차단이 필요하다고 판단하면 중단될 수 있음
프로덕션 준비 체크리스트 - 프로덕션에서 Enforce 모드로 전환하기 전에:
- 모든 활성 사용자에 대해 충분한 학습 데이터로 HCAD 기준선이 확립되어야 함
- Shadow 단계 동안 오탐률이 1% 미만이어야 함
- 액션 저장 및 조회를 위해 Redis가 사용 가능해야 함
ZeroTrustAction.BLOCK및ESCALATE이벤트에 대한 모니터링 및 알림이 설정되어야 함
마이그레이션 전략
안전한 마이그레이션을 위해 다음 권장 타임라인을 따르세요:
Shadow (1-4주차)
security.zerotrust.mode: SHADOW로 Contexa를 배포하세요. 전체 AI 분석 파이프라인이 실행됩니다 - HCAD 행동 분석, LLM 기반 위협 평가, 위험 점수 산정 - 하지만 적용 액션은 적용되지 않습니다. 감사 로그를 모니터링하여 오탐률을 평가하고 모든 활성 사용자에 대해 HCAD 기준선이 올바르게 구축되고 있는지 확인하세요.
Enforce (5주차 이후)
security.zerotrust.mode: ENFORCE로 전환하여 완전한 AI 적용을 활성화하세요. 이제 SecurityDecisionEnforcementHandler가 Redis에 액션을 저장하고 ZeroTrustAccessControlFilter가 후속 요청에서 이를 적용합니다. 첫 주 동안 ZeroTrustAction.BLOCK 및 ESCALATE 이벤트 비율을 면밀히 모니터링하세요.
롤백 전략
security.zerotrust.mode 속성을 변경하여 언제든지 안전하게 롤백할 수 있습니다. HCAD 기준선과 학습된 패턴은 모드 변경 시에도 보존됩니다.
즉시 롤백 — 모든 AI 적용을 즉시 비활성화하려면 security.zerotrust.mode: SHADOW로 설정하세요. AI 파이프라인은 계속 실행되며 결정을 로깅하지만 적용 액션은 적용되지 않습니다. 이 변경이 적용되려면 애플리케이션 재시작이 필요합니다.
| 롤백 대상 | 구성 변경 | 영향 |
|---|---|---|
| Shadow | security.zerotrust.mode: SHADOW |
AI가 분석 및 로깅만 수행; 적용 없음 |
| 파이프라인 비활성화 | security.zerotrust.enabled: false |
Zero Trust 이벤트 파이프라인 비활성화; HCAD는 여전히 데이터 수집 |
| 완전 비활성화 | contexa.enabled: false |
전체 Contexa 플랫폼 비활성화; Spring Security 기본값 적용 |