패밀리 API 를 소비해 만든 통합 클라이언트. 외부 공개 API 는 없다.

개요

Sentivex 는 역할×퍼스펙티브 OpenXDR 통합 클라이언트다. 자체 분석엔진·데이터스토어가 없고, SOC 대시보드·인시던트/알럿/엔드포인트·TI·헌팅·보고서·코파일럿 전 화면을 패밀리 API(SEE·SIT·SCTI·Auth) 소비로 구성한다. 모든 엔드포인트는 이 문서의 다른 솔루션에서 온 것이며, Sentivex 자체가 노출하는 공개 API 는 없다. 퍼스펙티브 9종(analyst/hunter/ciso/responder/general/pm/tenant/super/sales)이 메뉴 가시성을 결정한다.

소비 백엔드

Sentivex 는 외부 공개 API 가 없다(전부 세션 게이트 BFF). 외부 개발자용 정본 스펙은 아래 백엔드다.

화면 영역소비 백엔드
데이터 조회(OCSF) · SEE 특화 · 측정랩SEE enrich API
인시던트·티켓·HITL·대시보드SIT REST (세션교환 토큰)
TI 조회·헌팅SCTI API
OSA 알럿osawebhook
로그인·역할·메뉴 카탈로그Auth IdP (OIDC·카탈로그 API)
보고서·개인화·코파일럿prefs-store · SEE copilot · LiteLLM

인증 · svx_session · 브로드롤

항목계약
로그인OIDC(auth IdP) /api/auth/oidc/start → callback → HS256 JWT 쿠키 svx_session(7일). 페이로드: role(현재 퍼스펙티브)·roles[]·allowedTenants[](데이터 격리 경계 — tid 와 다른 네임스페이스)
브로드롤 계약auth openxdr-roles.ts 롤 키 = sentivex roles.ts 퍼스펙티브 키 100% 동일 유지(한쪽 변경 시 양쪽 동기)
파생 토큰SIT per-user = POST {SIT}/api/auth/exchange(BFF_EXCHANGE_SECRET). SEE 분석 트리거 = see_session 서명(SEE_SESSION_SECRET 동일값 계약)
OPEN 모드무세션 시 데모 super(개발 기본) · 운영 fail-closed(SVX_OPEN_MODE)

BFF 라우트

전부 svx_session 게이트 · 서버 전용 프록시 · 점수 스트립 통과. 외부 공개 API 는 아니다.

카테고리라우트백엔드
데이터 조회(OCSF)list · entity-kpi · bundle · compare · hashrefs · series · siem/query · logs · incidents · ingest-health · metric/[key] · verify · wazuh · newsSEE enrich
SEE 특화see/ti-pipeline/{recent,state,top-threats} · ti/pipeline{,-state,-stream(SSE)} · agents/analyze · measure/*(12종)SEE enrich
SIT 프록시pm/{incidents, incident/[key]{,decision,agent-state}, incident-action, agent-queue, hitl-executions, dashboard, issues, me, projects, runbook, soc-roles, summary, notifications}SIT (exchange 토큰)
SCTI 프록시ti/[...path] · ti/benign · ti/threat-hunterSCTI
OSAosa/alerts{,/[id]} · osa/statsosawebhook
보고서report(CRUD) · report-template · report/{period,generate,revise,compliance,contribution,analyses,bundle,export,pdf}prefs-store + SEE + LiteLLM
개인화/AIdash-layout · copilot · copilot/conversations{,/[id]}prefs-store · copilot-store · LiteLLM
인증/관리auth/oidc/start · auth/callback · login · logout · admin/{health,license,db-counts,menus/[key]} · ops/[...path]auth IdP 등

주의사항

패밀리 전 기능을 API 소비만으로 구축하며 실측으로 확정한 주의사항들. 이 랩의 API 를 소비할 모든 개발자에게 그대로 적용됩니다.

#주의사항
1RSC 는 쿠키를 안 보낸다 — 페이지/RSC 에서 자기 BFF 호출 시 세션 쿠키 수동 전달(internalGet). 잊으면 서버에서만 401
2테넌트 2중 네임스페이스 — IdP tid ≠ 데이터 태그 tenant_name. 격리는 반드시 allowedTenants(+scopeByTenant), 빈 목록=fail-closed
3벤더 스코프는 별개 축 — data_vendor_name 조합 뷰와 테넌트 보안 경계를 혼동 금지
4소스 화이트리스트 강등 주의사항 — 미등록 source 는 묵시 강등되어 가짜 표기. 신규 소스는 ALLOWED_SOURCES 등록 필수
5-latest 는 동결 스냅샷(2026-06-28) — 신규 문서는 DS 에만 있다. -latest 미발견 ≠ 버그
6DS 번들은 top-level 요약을 안 채운다 — mitre/hashes/joins null → 원본 doc+evidences 직접 추출 폴백 필요
7점수 비노출은 2중 가드 — BFF stripScores(키 제거) + 렌더 redactScore(자유텍스트). 신규 자유텍스트 경로는 반드시 후자 통과
8LLM 게이트웨이는 HTTP 200 으로도 실패한다 — body error 검사 + 빈 content throw(가짜 완성 금지)
9WS URL 은 헬퍼로만 — localhost 하드코딩은 원격 사용자에게 1006. 워커 이벤트는 .35 에만 존재
10스토어 다운 = graceful(기능 축소), 404 = not_found 정상 계약({found:false}) — 오류로 오독 금지
11외부 호출은 전부 타임아웃 가드(AbortController) — 실패 시 백엔드 URL 비노출 일반 메시지
12exchange 시크릿 부재의 퇴행 경로 — dev 는 상대 OPEN 모드 편승, 운영은 unauthorized 로 정직 강등(무음 성공 금지)

퀵스타트

외부 키 발급 경로는 아직 없습니다(auth 소관 — 개발자 프로그램 트랙). 내부 개발자 기준: git clone → .env.example→.env.local(SEE_URL 등 원격 백엔드 지정) → pnpm i → pnpm pm2:dev(:42010, webpack 고정) → OPEN 모드로 즉시 데이터 화면.

첫 호출 예
curl 'http://localhost:42010/api/list?entity=alerts&source=ocsf_ds&size=5'

도메인 · 포트 · env

구분
운영 도메인sentivex.in-bridge.com (.35 pm2 sentivex-web)
로컬 개발:42010 (stag-sentivex.in-bridge.com 경유 권장) · 배포 = deploy.sh sentivex(오프박스 빌드)
env(서버 전용 원칙)SEE_URL·SIT_URL·SCTI_URL·OSA_URL·OIDC 4종·SVX_SESSION_SECRET(운영 필수)·BFF_EXCHANGE_SECRET·SEE_SESSION_SECRET·COPILOT/PREFS/LITELLM 계약 키. NEXT_PUBLIC 금지 — 유일 예외 NEXT_PUBLIC_SEE_WS_URL
에러 규약BFF 는 백엔드 내부(URL/스택) 비노출 일반 메시지 + 상태코드(401 UNAUTHENTICATED · 403 TENANT_FORBIDDEN · 502 프록시 실패). KPI 미지원=null→"—"(가짜 숫자 금지). rate limit 자체 없음(백엔드 의존)