보안 모델

CASTOVIA가 운영, 데이터, 구독자, 인프라를 어떻게 보호하는지 설명합니다.

플랫폼 보안

SaaS 제어 평면: Castovia는 관리형 SaaS입니다. 소스 코드는 제공되지 않습니다. 자체 호스팅 옵션은 없습니다. 인프라는 Castovia가 관리합니다.

테넌트 격리: 각 공급자는 논리적으로 분리된 테넌트에서 운영됩니다. 공급자는 다른 공급자의 데이터, 구독자, 스트림, 구성에 접근할 수 없습니다.

RBAC(역할 기반 접근 제어): 네 가지 역할: super_admin, admin(공급자), supplier, viewer. 각 역할은 엄격하게 범위가 제한된 권한을 가집니다.

요금제 강제 적용: API 수준의 소프트 및 하드 강제 적용이 있는 7단계 요금제 모델입니다. 중요한 상업 경로에는 하드 강제 적용이 활성화됩니다.

인증 및 접근

비밀번호 보안: 비밀번호는 bcrypt로 해시됩니다. 관리자/공급자 계정에 평문 저장은 없습니다.

노드 인증: 공급자 노드는 범위가 제한된 노드별 서버 토큰으로 인증하며, 관리자 대시보드와 독립적으로 교체할 수 있습니다.

속도 제한: 무차별 대입 공격을 방지하기 위해 로그인, 가입, 문의 양식, API 엔드포인트는 IP별로 속도 제한이 적용됩니다.

세션 관리: 24시간 만료가 적용된 JWT 기반 세션입니다.

의심스러운 활동 감지: 의심스러운 로그인 패턴을 자동으로 감지하고 기록합니다.

데이터 보호

sourceUrl 노출 없음: 내부 스트림 소스 URL은 최종 사용자 기기나 클라이언트 측 코드에 절대 노출되지 않습니다.

storagePath 노출 없음: 내부 저장소 경로는 서버 측에만 유지됩니다.

서명된 재생 URL: 재생 URL은 시간 제한이 있으며 암호학적으로 서명됩니다. 만료된 URL은 거부됩니다.

서명된 재생 메타데이터: 최종 사용자 기기에는 안전한 메타데이터만 전달됩니다. 내부 인프라 세부 정보는 포함되지 않습니다.

감사 로그: 관리 작업은 책임 추적을 위해 기록됩니다.

CDN/DRM 자격 증명 보안

CDN API 키: 데이터베이스에 암호화되어 저장됩니다. API 응답으로 반환되지 않습니다. UI에서는 마스킹됩니다.

DRM 비밀값: 암호화되어 저장됩니다. 클라이언트 기기에 노출되지 않습니다. 애플리케이션 로그에 원시 라이선스 비밀값이 남지 않습니다.

원본 비밀 노출 없음: CDN 원본 비밀값은 최종 사용자 기기에 노출되지 않습니다.

Stripe 및 결제 보안

Stripe Secret Key: 서버 측에서만 사용됩니다. 클라이언트 측 코드나 API 응답에 노출되지 않습니다.

Webhook 서명 검증: 모든 Stripe webhook 이벤트는 처리 전에 HMAC 서명으로 검증됩니다.

멱등 처리: 중복 처리를 방지하기 위해 webhook 이벤트는 중복 제거됩니다.

Publishable Key: 클라이언트 측 결제 흐름에는 공개 가능한 키(읽기 전용)만 사용됩니다.

법적 포지셔닝 및 악용 방지

콘텐츠 제공 없음: Castovia는 TV/비디오 콘텐츠를 제공, 호스팅, 배포하지 않습니다. 콘텐츠의 법적 권리는 전적으로 공급자에게 있습니다.

악용 신고: 공개 악용 신고 메커니즘이 있습니다. 신고는 검토 후 조치됩니다.

계정 정지: Castovia는 불법적으로 콘텐츠를 배포하는 계정을 정지할 권리를 보유합니다.

로그 보존: 관련 로그는 규정 준수를 위해 법적으로 필요한 경우 보존될 수 있습니다.

허용 가능한 사용 정책: 모든 공급자는 이에 동의해야 합니다. 위반 시 즉시 정지될 수 있습니다.

공급자 노드 보안

전용 castovia 시스템 사용자 — root 런타임 없음
SSH 키 기반 인증만 사용
방화벽: 개방 포트 제한
모든 외부 연결에 TLS 사용
FFmpeg, Nginx, OS 패키지를 최신 상태로 유지
Nginx 디렉터리 목록 표시 비활성화
침해 시 서버 토큰 회전
설정 파일: chmod 600, castovia 사용자 소유