구성 요소와 책임 경계
검토서의 구성도는 학습자 기기, 고객사 영역, PlaynPlay 측 서버 세 구역으로 나눠 그리면 질문이 정리됩니다.
| 구성 요소 | 실행 위치 | 맡는 일 | 다루는 데이터 |
|---|---|---|---|
| PlaynPlay App | 학습자 PC(Windows 10 이상, macOS 11 이상), 별도 설치 | 재생, 다운로드, 녹화 차단 | 패키징 파일, 다운로드 파일 |
| agent.js와 설정 파일 | 고객사 웹 페이지. agent.js는 app.playnplay.com 또는 CDNetworks 도메인에서, 설정 파일은 고객사 경로에서 불러옴 | 앱 실행과 재생 정보 전달 | 영상 URL, App ID, 사용자 ID, userData |
| Android·iOS SDK | 고객사 앱 안 | 앱 안 재생과 다운로드 | 위 항목과 장치 ID |
| 인증 서버 | PlaynPlay 측 | 라이선스 키 발급, 세션 관리 | App ID, 사용자 ID, 세션 |
| PlaynPlay Console | PlaynPlay 측 웹 | App·키 발급, 보안 정책, Callback URL 설정, 기록 조회 | App ID·App Key, 사용자·세션·미디어별 재생 기록, 녹화 차단 기록 |
| DRM 패키징 도구 | 고객사 작업 PC나 서버(macOS, Windows, Linux) | 영상 파일 암호화 | 원본 영상, 패키징 결과 |
| 미디어 서버 | 고객사 | 패키징 파일 제공 | 패키징 파일 |
| Callback 서버 | 고객사 | 재생 허용 판단, 보고 수신 | 다음 표의 필드 |
패키징은 콘솔에서 내려받은 명령줄 도구를 고객사 환경에서 실행하는 방식이고, 플레이어는 미디어 서버의 패키징 파일을 URL로 받아 재생합니다. 콘솔 메뉴는 콘솔 기능 소개에 있습니다.
Callback URL로 고객사 서버에 오는 데이터
Callback URL은 콘솔에 등록하며, 플레이어는 이 주소로 JSON 본문의 POST 요청을 보낸 뒤 돌아온 응답대로 움직입니다. 모든 요청에 type, appId, userId, userData, mediaUrl이 실리고, 아래는 그 밖의 필드입니다.
| 보고 | 추가로 오는 필드 | 고객사 응답 |
|---|---|---|
| 접근 권한 검사 CheckAccessRights |
deviceId, offline(다운로드 콘텐츠 여부) | Ok, Expired, NoRights, DeviceLimitExceeded 중 하나. Ok이면 expiresOn(Unix epoch time) |
| 재생 진행 상태 NotifyPlaybackProgress |
sessionId, position·duration(밀리초), playTime, watchTime | Ok 또는 PlaybackLimitExceeded |
| 재생 상태 NotifyPlaybackStatus |
sessionId, status(Started·Stopped), createdAt | Ok |
| 재생 종료 NotifyPlaybackFinish |
sessionId, position, duration, playTime, watchTime, reason | Ok |
| 오프라인 재생 정보 NotifyOfflinePlaybackLog |
items: 세션별 sessionId, startedAt, stoppedAt, position, duration, playTime, watchTime, finishReason | Ok |
| 다운로드 상태 NotifyDownloadStatus |
sessionId, status(Started·Completed·Canceled·Failed), createdAt | Ok |
| 북마크 제공·업데이트 GetBookmarks, UpdateBookmarks |
sessionId. 업데이트는 bookmarks(위치, 제목) | Ok. 제공 요청에는 북마크 목록을 함께 반환 |
Authorization 문자열은 선택 항목입니다. 콘솔에 등록하면 모든 요청에 Authorization: Bearer 헤더로 실려 오므로 서버에서 검사하고 교체 주기를 정해 두기를 권합니다. userId와 userData는 고객사가 실행할 때 넣는 값이라, 이름이나 연락처 대신 내부 식별번호를 쓰면 보고 데이터의 개인정보 범위가 줄어듭니다. 북마크 보고는 실행할 때 useBookmarkCallback을 켠 경우에 씁니다.
학습자 기기에서 실행되는 것
사내 PC 표준이나 모바일 기기 관리 정책과 부딪히는 지점을 채널별로 봅니다.
| 채널 | 실행 요소 | 기기에 남는 것 | 필요한 권한·설정 |
|---|---|---|---|
| PC 웹 연동 | PlaynPlay App, 웹 페이지의 agent.js | 다운로드 파일, 오프라인 재생 위치와 기록(온라인 연결 때 전송) | 앱 설치 권한 |
| PC 커스텀 페이지 | 앱 안에서 도는 고객사 웹 페이지, 서비스 워커 스크립트(playnplay-service.js), nPlayer 스크립트 | 위와 같음 | 서비스 워커 등록 |
| Android 앱 | SDK(aar)와 Media3, OkHttp, Room 등 의존 라이브러리 | 다운로드 파일, 오프라인 재생 기록 | INTERNET, READ_MEDIA_VIDEO, FOREGROUND_SERVICE, FOREGROUND_SERVICE_MEDIA_PLAYBACK, 다운로드 완료 수신기 |
| iOS 앱 | NPlayerSDK 프레임워크 | 다운로드 파일, 오프라인 재생 기록 | Background Modes(Audio, AirPlay, and Picture in Picture) |
2026년 2월 Android·iOS SDK 배포본은 다운로드 파일에 쓰는 DRM 키의 저장 방식을 개선했습니다. 키의 저장 위치와 보호 방식은 아래 확인 목록에 넣었습니다. PC 앱 변경 이력(1.0.32)에는 WebView2 새 버전에서 로컬 네트워크 접근 제한이 기본값이 된 뒤 나타난 재생 오류의 수정이 있으니, 사내 PC의 WebView2 갱신 정책도 함께 보세요.
위협별 통제와 적용 범위
플랫폼마다 문서로 확인되는 범위가 다르므로 적용 범위 칸을 검토서에 그대로 옮기세요.
| 위협 | 통제 | 적용 범위 | 문서 |
|---|---|---|---|
| 저장소·CDN의 파일 복사 | DRM 패키징, 재생할 때 라이선스 필요 | 전 채널 | DRM Packaging, 소개 |
| 재생 주소 공유 | 라이선스 발급 때 고객사 서버가 NoRights·Expired로 거절 | 전 채널 | 접근 권한 검사 |
| 계정 공유, 기기 돌려쓰기 | 동시 접속 감지, 기기 제한 초과 오류. 고객사 서버의 DeviceLimitExceeded 응답 | PC 커스텀 페이지, Android, iOS | SessionError, MediaPlayerException, MediaPlayerError |
| 위조·재포장 앱 | 콘솔에 올린 패키지 이름(Bundle ID)과 다른 앱은 등록되지 않은 앱 오류로 거부 | Android, iOS | 사용 방법, 오류 목록 |
| 화면 녹화·캡처 | PC App 녹화 차단, Android 녹화·캡처 차단, iOS 녹화 차단과 화면 캡처 감지 오류 | 전 채널 | 소개, 변경 이력, MediaPlayerError |
| 카메라 촬영 유출 | 워터마크 | PlaynPlay App, Android | 소개, WatermarkSettings |
| 루팅 기기·앱 플레이어 | 감지하면 앱에 알림, 재생 중단 등 대응은 앱이 구현 | Android | MediaPlayerBaseFragment |
| 통신 가로채기 분석 | 디버깅 프록시 방어(2026년 1월) | Android, iOS | 변경 이력 |
| PC 개발자 도구 악용 | 브라우저 단축키 비활성화(1.0.29), 개발툴 열기 API는 운영 환경에서 쓰지 말라는 권고 | Windows, 커스텀 페이지 | Desktop 변경 이력, 커스텀 페이지 |
| 다운로드본 장기 보관 | 오프라인 재생 기한 지정. 0이면 오프라인 재생 불가 | PC, Android, iOS | Agent › DRM, 오류 목록 |
| 배수·횟수 정책 위반 | 진행 보고에 PlaybackLimitExceeded로 응답하면 재생 제한 초과 오류로 처리 | 전 채널 | 재생 진행 상태 보고 |
문서로 답할 수 없는 항목
공개 개발 문서에 설명이 없는 항목입니다. 검토서에 추정으로 채우지 말고 Newin에 서면으로 확인받으세요.
| 항목 | 검토에서 필요한 이유 | 상태 |
|---|---|---|
| DRM 방식, 암호화 알고리즘, 키 관리 구조, 오프라인용 키 저장 위치 | 암호화 수준 평가 | 문서에 없음 — 확인 필요 |
| 인증 서버와 콘솔의 호스팅 위치 | 개인정보 국외 이전 여부 판단 | 문서에 없음 — 확인 필요 |
| PlaynPlay 측에 남는 사용자·세션 기록 항목과 보관 기간 | 처리 위탁 범위 산정 | 문서에 없음 — 확인 필요 |
| Callback 요청의 출발지와 IP 범위 | 방화벽 허용 규칙 | 문서에 없음 — 확인 필요 |
| Callback 서버 무응답·지연 때 재생 처리 | 장애 영향 평가 | 문서에 없음 — 확인 필요 |
| 전송 구간 암호화 요구 사항 | Callback 서버 설정 기준 | 문서에 없음 — 확인 필요 |
| 콘솔 관리자 권한 분리, 접속 기록, 추가 인증 | 관리자 계정 통제 | 문서에 없음 — 확인 필요 |
| 장치 ID 생성 방식과 초기화 조건 | 개인정보 해당 여부 | 문서에 없음 — 확인 필요 |
| 동시 접속·기기 수 허용 범위 | 정책 설계 | 문서에 없음 — 확인 필요 |
| 패키징 도구의 외부 통신 여부, ndrmconfig 파일 보관 방법 | 작업 서버 통제 | 문서에 없음 — 확인 필요 |
| 외부 출력(HDMI·미러링), iOS 탈옥 기기, iOS 워터마크 | 플랫폼 간 통제 차이 파악 | 문서에 없음 — 확인 필요 |
검토 진행 권장 순서
위 표를 사내 검토 양식에 옮길 때 아래 순서를 권합니다.
-
흐름도 작성
구성 요소 표를 세 구역 그림으로 옮기고 요청 방향과 필드를 화살표마다 적습니다.
-
넘길 식별값 확정
사용자 ID와 userData에 들어갈 값을 정하고 개인정보가 섞이지 않게 합니다.
-
통제 시연
테스트 계정으로 위협 표의 거부 상황을 재현하고 화면과 서버 로그를 증적으로 남깁니다.
-
미확인 항목 회신
문서로 답할 수 없는 항목을 Newin에 보내고 회신을 검토서에 첨부합니다.
-
운영 통제 지정
Authorization 교체 주기, 녹화 차단 로그 점검 주기, 콘솔 계정 담당자를 정합니다.
보안 담당자의 역할 범위는 보안 담당자 안내, 데이터 원문은 Callback URL 문서에 있습니다.
PlaynPlay 도입을 위한
기술적 지원과 서비스를 제공합니다.
제품 문의부터 데모 시연까지, 모든 지원을 위해 세일즈 및 기술 지원 팀이 준비되어 있습니다.
-
제품 및 도입 문의
도입 범위, 일정, 견적을 상담합니다. 서비스 형태와 사용자 규모를 알려주시면 맞는 연동 방식과 보안 설정을 제안합니다.
-
Trial 신청
PlaynPlay의 기능을 먼저 테스트해 보세요. 트라이얼 기간 동안 귀사의 제품과 PlaynPlay를 연동하고 성능과 기능을 직접 검증할 수 있습니다.
-
PlaynPlay 기술 문의
SDK 연동, Callback URL 설계, DRM 패키징 중에 생기는 질문에 기술팀이 답합니다. 공개된 개발 문서와 샘플 프로젝트도 함께 확인하세요.
역할별 안내
기능
기능