보안 구성
Zero Trust, HCAD 탐지, SecurityPlane 에이전트 설정을 포함한 Contexa 보안 엔진의 구성 속성입니다.
Zero Trust 속성
security.zerotrust 아래의 속성으로, SecurityZeroTrustProperties에 바인딩됩니다. Zero Trust 결정 모드, 핵심 임계값, hot-path 처리, 캐시 기간, 요청 추적 동작을 제어합니다. HCAD는 별도의 hcad 접두사에서 구성합니다.
전체 속성 참조는 메인 구성 페이지를 확인하세요.
관련 문서: Zero Trust 플로우
HCAD 속성
hcad 접두사 아래의 속성으로, HcadProperties에 바인딩됩니다. 계층적 컨텍스트 인식 탐지(HCAD) 필터 파이프라인과 기준선 학습을 구성합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
hcad | |||
.enabled |
boolean |
true |
HCAD 필터 파이프라인 활성화 또는 비활성화 |
.filter-order |
int |
100 |
서블릿 필터 체인에서의 HCAD 필터 순서 |
hcad.resource | |||
.sensitive-patterns |
List<String> |
[] |
강화된 분석이 필요한 민감 리소스 URL 패턴 |
hcad.analysis | |||
.max-age-ms |
long |
3600000 |
캐시된 분석 결과의 최대 보관 시간(ms) |
hcad.threshold | |||
.base |
double |
0.7 |
기본 이상 탐지 임계값 |
.min |
double |
0.3 |
적응 조정 후 최소 임계값 |
.max |
double |
0.95 |
적응 조정 후 최대 임계값 |
.adjustment-rate |
double |
0.01 |
피드백 주기당 임계값 적응 속도 |
.sensitivity |
double |
1.0 |
탐지 감도 전역 배율 |
.warn |
double |
0.7 |
차단 전 경고 임계값 |
hcad.cache | |||
.max-size |
int |
100000 |
캐시된 분석 항목 최대 수 |
.ttl-ms |
long |
300000 |
캐시 항목 TTL(밀리초) |
.clear-on-startup |
boolean |
false |
애플리케이션 시작 시 모든 캐시 항목 삭제 |
.local.ttl-minutes |
int |
10 |
로컬 캐시 TTL(분) |
hcad.baseline | |||
.min-confidence |
double |
0.3 |
기준선 데이터 최소 신뢰도 |
.update-alpha |
double |
0.1 |
기준선 업데이트용 지수이동평균 알파 |
.learning.enabled |
boolean |
true |
실시간 트래픽으로부터의 기준선 학습 활성화 |
.learning.alpha |
double |
0.1 |
온라인 기준선 적응 학습률 |
.bootstrap.enabled |
boolean |
true |
초기 기준선 구축을 위한 부트스트랩 모드 활성화 |
.bootstrap.initial-samples |
int |
10 |
적용 전 필요한 초기 샘플 수 |
.bootstrap.max-anomaly-score |
double |
0.85 |
부트스트랩 단계 최대 이상 점수 |
.statistical.enabled |
boolean |
true |
통계적 기준선 분석 활성화 |
.statistical.min-samples |
int |
20 |
통계 분석 최소 샘플 수 |
.statistical.z-score-threshold |
double |
3.0 |
이상치 탐지 Z-점수 임계값 |
.redis.ttl-days |
int |
30 |
Redis 기준선 데이터 TTL(일) |
hcad.feedback | |||
.learning-rate |
double |
0.1 |
임계값 조정을 위한 피드백 루프 학습률 |
.retrain-threshold |
double |
0.7 |
모델 재학습을 트리거하는 정확도 임계값 |
.window-size |
int |
1000 |
피드백 수집 슬라이딩 윈도우 크기 |
hcad.orchestrator | |||
.enabled |
boolean |
true |
조율된 분석을 위한 HCAD 오케스트레이터 활성화 |
.feedback-interval |
int |
300 |
피드백 처리 간격(초) |
.sync-batch-size |
int |
50 |
기준선 동기화 배치 크기 |
hcad.vector | |||
.embedding-dimension |
int |
384 |
행동 분석용 임베딩 벡터 차원 |
.similarity-threshold |
double |
0.85 |
행동 패턴 매칭 유사도 임계값 |
.scenario-detection-enabled |
boolean |
true |
벡터 기반 시나리오 이상 탐지 활성화 |
hcad.session | |||
.cookie-name |
String |
JSESSIONID |
HCAD 추적용 세션 쿠키 이름 |
.header-name |
String |
X-Session-Id |
무상태 모드에서의 세션 ID 헤더 이름 |
hcad.signal | |||
.chi-square-threshold |
double |
14.07 |
신호 이상 탐지 카이제곱 임계값 |
.history-size |
int |
100 |
보관할 과거 신호 수 |
.geoip.provider |
String |
api |
GeoIP 제공자: api 또는 local |
hcad.adaptive | |||
.adjustment-rate |
double |
0.1 |
적응형 임계값 조정 속도 |
.cusum.threshold |
double |
5.0 |
CUSUM 변화점 탐지 임계값 |
.cusum.slack |
double |
0.5 |
CUSUM 드리프트 허용 슬랙 파라미터 |
.baseline.window |
int |
100 |
적응형 기준선 윈도우 크기 |
hcad.geoip | |||
.enabled |
boolean |
false |
GeoIP 기반 위치 분석 활성화 |
.db-path |
String |
data/GeoLite2-City.mmdb |
MaxMind GeoLite2 데이터베이스 파일 경로 |
hcad.redis | |||
.key-prefix |
String |
hcad:baseline:v2: |
HCAD 기준선 데이터의 Redis 키 접두사 |
현재 OSS 코드에 추가로 존재하는 HCAD 필드
| 속성 | 기본값 | 설명 |
|---|---|---|
hcad.baseline.statistical.update-interval | 10 | 통계 기준선 갱신 간격 |
hcad.feedback.baseline.update-threshold | 0.95 | 피드백을 기준선에 반영하는 임계값 |
hcad.orchestrator.performance-tracking | true | 오케스트레이터 성능 추적 활성화 |
hcad.vector.cache-ttl-hours | 24 | 행동 임베딩 캐시 TTL(시간) |
hcad.vector.max-cached-embeddings | 1000 | 캐시할 임베딩 최대 수 |
hcad.signal.covariance.min-samples | 30 | 공분산 분석 최소 샘플 수 |
hcad.signal.geoip.api-url | https://ipapi.co/{ip}/json/ | 원격 GeoIP API URL 템플릿 |
hcad.signal.timing.bucket-count | 7 | 타이밍 버킷 수 |
hcad.signal.timing.interval.history-size | 100 | 타이밍 구간 이력 크기 |
hcad.sampling.random.floor | 0.01 | 최소 랜덤 샘플링 비율 |
hcad.sampling.random.ceiling | 0.03 | 최대 랜덤 샘플링 비율 |
hcad.sampling.composite.identifier.enabled | true | 복합 식별자 샘플링 활성화 |
hcad.similarity.hot-path-threshold | 0.7 | hot-path 판단에 사용하는 유사도 임계값 |
hcad.adaptive.min.trust.score | 0.7 | 적응형 제어 최소 신뢰 점수 |
hcad.pre-trigger.enabled | true | 전체 분석 전 pre-trigger 휴리스틱 활성화 |
hcad.pre-trigger.cooldown-seconds | 15 | 반복 pre-trigger cooldown |
hcad.pre-trigger.in-flight-ttl-seconds | 15 | in-flight pre-trigger TTL |
hcad.pre-trigger.negative-cache-seconds | 3 | negative cache 유지 시간 |
hcad.pre-trigger.redline-score | 70 | redline 위험 점수 |
hcad.pre-trigger.high-risk-score | 50 | 고위험 임계값 |
hcad.pre-trigger.medium-risk-score | 30 | 중위험 임계값 |
hcad.pre-trigger.low-baseline-confidence-threshold | 0.35 | 낮은 기준선 신뢰도 임계값 |
hcad.pre-trigger.failed-login-burst-threshold | 3 | 실패 로그인 폭주 임계값 |
hcad.pre-trigger.request-burst-threshold | 12 | 요청 폭주 임계값 |
hcad.pre-trigger.rapid-request-interval-ms | 1000 | 급격한 요청 간격 윈도우 |
구성 예제
YAML
hcad:
enabled: true
filter-order: 100
resource:
sensitive-patterns:
- /admin/api/security-test/sensitive/**
- /admin/api/security-test/critical/**
threshold:
base: 0.7
sensitivity: 1.0
baseline:
learning:
enabled: true
alpha: 0.1
bootstrap:
enabled: true
initial-samples: 10
geoip:
enabled: false
db-path: data/GeoLite2-City.mmdb
Security Plane 속성
security.plane 아래의 속성으로, SecurityPlaneProperties에 바인딩됩니다. 분산 security-plane agent, Kafka 토픽, Redis relay, 모니터링 배치, deduplication 윈도우, 비동기 보안 분석에 사용하는 LLM executor pool을 구성합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
security.plane.agent | |||
.name | String | SecurityPlaneAgent-1 | 에이전트 인스턴스 이름 |
.auto-start | boolean | true | 기동 시 자동 시작 |
.organization-id | String | default-org | 분산 배포 조직 ID |
.execution-mode | String | ASYNC | 에이전트 실행 모드 |
.auto-approve-low-risk | boolean | false | 저위험 자동 승인 여부 |
.event-timeout-ms | long | 30000 | 이벤트 처리 타임아웃 |
.max-deferred-retries | int | 3 | 지연 재시도 최대 횟수 |
security.plane.kafka | |||
.bootstrap-servers | String | localhost:9092 | Kafka bootstrap servers |
.group-id | String | security-plane-consumer | Kafka consumer group id |
.topics.security-events | String | security-events | 보안 이벤트 토픽 |
.topics.threat-indicators | String | threat-indicators | 위협 지표 토픽 |
.topics.network-events | String | network-events | 네트워크 이벤트 토픽 |
.topics.auth-events | String | auth-events | 인증 이벤트 토픽 |
security.plane.monitor | |||
.queue-size | int | 10000 | 이벤트 큐 용량 |
.batch-size | int | 8 | 모니터링 배치 크기 |
.flush-interval-ms | long | 500 | 배치 flush 간격 |
.correlation-window-minutes | int | 10 | 상관관계 윈도우 |
.dedup-window-minutes | int | 5 | 중복 제거 윈도우 |
security.plane.notifier | |||
.batch-size | int | 10 | 알림 배치 크기 |
.async-enabled | boolean | true | 비동기 알림 전송 활성화 |
.critical-threshold | double | 0.8 | 치명 알림 임계값 |
security.plane.redis | |||
.batch-size | int | 50 | Redis publish 배치 크기 |
.cache.ttl-minutes | int | 60 | Redis relay 캐시 TTL |
.channel.security-events | String | security:events | 보안 이벤트 Redis 채널 |
.channel.threat-alerts | String | security:threats | 위협 알림 Redis 채널 |
security.plane.llm-executor | |||
.core-pool-size | int | 2 | LLM 분석 코어 스레드 수 |
.max-pool-size | int | 2 | LLM 분석 최대 스레드 수 |
.queue-capacity | int | 50 | 대기 중인 LLM 작업 큐 용량 |
security.plane.deduplication | |||
.enabled | boolean | true | 중복 제거 활성화 |
.window-minutes | int | 5 | 중복 제거 윈도우 |
.cache-size | int | 10000 | 중복 제거 캐시 크기 |
YAML
security:
plane:
agent:
name: SecurityPlaneAgent-1
auto-start: true
organization-id: default-org
execution-mode: ASYNC
auto-approve-low-risk: false
event-timeout-ms: 30000
max-deferred-retries: 3
llm-executor:
core-pool-size: 2
max-pool-size: 2
queue-capacity: 50
deduplication:
enabled: true
window-minutes: 5
cache-size: 10000
관련 문서: Zero Trust 플로우, SOAR 참조
세션 보안 속성
security.session 아래의 속성으로, SecuritySessionProperties에 바인딩됩니다. 토큰 생성, 헤더/베어러 추출, hijack 이벤트 wiring, 쿠키 이름, 세션 이상 탐지에 사용하는 위험 임계값을 구성합니다.
| 속성 | 타입 | 기본값 | 설명 |
|---|---|---|---|
security.session.create.allowed | boolean | true | 세션/토큰 생성 허용 |
security.session.header.name | String | X-Auth-Token | 토큰 전달 헤더 이름 |
security.session.bearer.enabled | boolean | true | Bearer 토큰 파싱 활성화 |
security.session.cookie.name | String | SESSION | 세션 쿠키 이름 |
security.session.hijack.channel | String | security:session:hijack:event | Hijack 이벤트 채널 이름 |
security.session.hijack.detection.enabled | boolean | true | Hijack 탐지 활성화 |
security.session.threat.ip-change-risk | double | 0.4 | IP 변경 위험 가중치 |
security.session.threat.ua-change-risk | double | 0.3 | User-Agent 변경 위험 가중치 |
security.session.threat.rapid-access-threshold-ms | int | 100 | 짧은 간격 접근 임계값 |
security.session.threat.rapid-access-risk | double | 0.2 | 짧은 간격 접근 위험 가중치 |
security.session.threat.thresholds.monitoring | double | 0.5 | 모니터링 임계값 |
security.session.threat.thresholds.grace-period | double | 0.7 | 유예 구간 임계값 |
security.session.threat.thresholds.invalidation | double | 0.9 | 세션 무효화 임계값 |
관련 문서: 상태 관리 참조