REST API Reference

Crowny Security Platform v1.0 — 24 Endpoints

v1.0.0 BETA JWT + API Key
Base URL: http://localhost:9500 (Docker) 또는 자체 배포 주소
인증: Authorization: Bearer <token> 또는 X-API-Key: <key>
Demo 모드: CROWNY_API_KEY_HASH 미설정 시 인증 없이 사용 가능

인증

POST /api/v1/auth/token

JWT 토큰 발급. API 키를 교환하거나 demo 모드에서 바로 발급.
curl -X POST http://localhost:9500/api/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{"client_id": "my-app", "api_key": "your-api-key"}'

# Response: {"token": "eyJ...", "expires_in": 86400}

이벤트

POST /api/v1/events

보안 이벤트 수집 (단일 또는 배치). 자동 상관분석 + IOC 매칭 + UEBA 이상탐지.
curl -X POST http://localhost:9500/api/v1/events \
  -H 'Content-Type: application/json' \
  -d '{"source":"192.168.1.50","type":"login_failure","severity":3,"detail":"Invalid password","tags":["auth"]}'

# Response: {"ingested":1,"results":[{"id":1,"analysis":{"iocMatch":null,"ruleHits":[],"anomaly":null}}]}

GET /api/v1/events

이벤트 조회. 필터: ?type=login_failure&source=10.0.0.1&severity_min=3&since=1713000000000&limit=50&offset=0

알림

GET /api/v1/alerts

상관분석 발동 알림 조회. 필터: ?status=open (open/acknowledged/resolved/false_positive)

PATCH /api/v1/alerts/:id

알림 상태 변경, 담당자 배정, 메모 추가.
curl -X PATCH http://localhost:9500/api/v1/alerts/1 \
  -H 'Content-Type: application/json' \
  -d '{"status":"acknowledged","assignee":"admin","notes":["조사 시작"]}'

IOC (위협 지표)

POST /api/v1/iocs

IOC 등록 (IP, 도메인, 해시, URL). 위협 그룹 자동 연결.
curl -X POST http://localhost:9500/api/v1/iocs \
  -H 'Content-Type: application/json' \
  -d '{"type":"ip","value":"203.0.113.66","threat_name":"APT-CrownyHunter","severity":5,"tags":["apt","c2"]}'

GET /api/v1/iocs

IOC 목록 조회. 필터: ?type=ip

POST /api/v1/iocs/match

실시간 IOC 매칭. 값 배열을 보내면 일치 여부 반환.
curl -X POST http://localhost:9500/api/v1/iocs/match \
  -H 'Content-Type: application/json' \
  -d '{"indicators":["203.0.113.66","10.0.0.1","evil.com"]}'

상관분석 규칙

GET /api/v1/rules

등록된 상관분석 규칙 목록 (기본 4개 포함).

POST /api/v1/rules

사용자 정의 상관분석 규칙 추가.
curl -X POST http://localhost:9500/api/v1/rules \
  -H 'Content-Type: application/json' \
  -d '{"name":"Port Scan","window_sec":60,"conditions":[{"event_type":"port_scan","min_count":5}],"severity":4}'

제로트러스트 / ABAC

POST /api/v1/trust/evaluate

신뢰도 평가. 주체의 행동 이력 기반 동적 점수 (0~100).

POST /api/v1/abac/subjects

ABAC 주체 등록 (사용자/서비스 계정).

POST /api/v1/abac/resources

ABAC 자원 등록 (보호 대상 리소스).

POST /api/v1/abac/evaluate

접근 결정: subject + resource + action + context → allow/deny.

내보내기

GET /api/v1/export/stix

STIX 2.1 형식으로 IOC + 위협 그룹 내보내기.

GET /api/v1/export/elastic

Elasticsearch Bulk API 호환 형식 (ndjson).

GET /api/v1/export/splunk

Splunk HEC 호환 JSON 형식.

웹훅

GET /api/v1/webhooks

등록된 웹훅 목록.

POST /api/v1/webhooks

웹훅 등록. HMAC-SHA256 서명 지원.
curl -X POST http://localhost:9500/api/v1/webhooks \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://slack.example.com/hook","events":["alert"],"secret":"my-hmac-secret"}'

DELETE /api/v1/webhooks/:id

웹훅 삭제.

기타

GET /api/v1/stats

플랫폼 통계: 수집 이벤트 수, 알림 수, IOC 매칭 수, 가동 시간.

GET /api/v1/audit

감사 로그 조회.

POST /api/v1/feeds/import

위협 인텔리전스 피드 가져오기 (STIX, CSV).

GET /health

헬스체크 (인증 불필요).
curl http://localhost:9500/health
# {"status":"healthy","version":"1.0.0","uptime":3600}

Quick Start (5분)

# 1. Docker 배포
docker compose -f docker/docker-compose.yml up -d

# 2. 토큰 발급 (demo 모드)
TOKEN=$(curl -s -X POST http://localhost:9500/api/v1/auth/token \
  -H 'Content-Type:application/json' \
  -d '{"client_id":"demo"}' | jq -r '.token')

# 3. 이벤트 수집
curl -X POST http://localhost:9500/api/v1/events \
  -H "Authorization: Bearer $TOKEN" \
  -H 'Content-Type:application/json' \
  -d '{"source":"10.0.0.1","type":"login_failure","severity":3,"detail":"invalid password"}'

# 4. 대시보드 확인
open http://localhost:9500/

# 5. Node SDK
npm i @crowny/security-sdk
node -e "const C=require('@crowny/security-sdk');new C().health().then(console.log)"