
회사에서 운영 중인 오디오북 서비스에서 음원 파일의 무분별한 접근을 방지하고자 한 실전 적용 사례입니다.
정적 파일(이미지, 음원, 영상 등)을 인터넷에 공개할 경우, 사용자 누구나 직접 다운로드하거나 재사용이 가능해집니다. DRM 솔루션을 도입하면 복제와 재생을 제어할 수 있지만, 다음과 같은 단점이 있습니다.
저희 팀은 오디오북 음원 파일의 무단 접근 문제를 해결하고자, 비교적 간단하고 효과적인 방법으로 **Naver Cloud Platform(NCP)**의 Object Storage와 Global CDN의 Secure Token 기능을 도입했습니다.
원본 파일을 안전하게 저장하고 외부 접근을 제어하기 위해, NCP의 Object Storage를 선택했습니다.
버킷 생성 시 기본 설정 유지
권한 관리: “공개” 설정
sample-audio.mp3 파일 업로드 후 공개 상태에서 접근 시, 링크만 알면 누구나 다운로드 가능✔️ 기본적으로는 "공개 안함" 상태로 파일을 업로드하고,
필요 시 Secure Token이나 Presigned URL을 통해 제한적 접근을 허용하는 방식이 적절합니다.
NCP에서는 기존 CDN+ 대신 Global CDN을 새롭게 제공하고 있으며, 보안 기능으로 Secure Token 발급을 지원합니다.
서비스 설정: 이름 설정, 프로토콜은 ALL 선택
원본 설정: 앞서 생성한 Object Storage 버킷을 원본으로 지정
캐싱 설정: 기본값 사용
Viewer 전송 설정:
사용Query String 선택CDN이 생성되면 약 10분 내 활성화됩니다. 이후 https://{CDN 도메인}/sample-audio.mp3 형식으로 접근할 수 있습니다.
단, 버킷이 “공개 안함” 상태이므로 기본적으로 접근은 차단됩니다.
Secure Token은 다음 조건을 포함한 암호화된 문자열로, 일정 시간 동안만 특정 파일에 접근할 수 있도록 제한합니다.
네이버에서 제공하는 Python 예제를 기반으로 토큰을 생성할 수 있습니다.
코드를 실행하면 아래와 같이 토큰이 발급됩니다.
$ python test.py -k [보안키] -n token -s now -w 3600 -a '/sample-audio.mp3*'
# 결과 예시
token=st=1738757016~exp=1738760616~acl=/sample-audio.mp3*~hmac=...
https://{CDN도메인}/sample-audio.mp3?token=st=...~exp=...~hmac=...
이 URL로 접근하면, 지정한 시간 동안만 해당 파일을 안전하게 요청할 수 있습니다.
정적 파일은 공개 설정만으로는 충분한 보안이 어렵습니다.
Object Storage + Secure Token CDN 방식은 비교적 간단하면서도 실효적인 파일 보호 수단입니다.
보안을 강화할 필요가 있는 경우,
Presigned URL, Secure Token, 암호화된 파일 업로드 등을 상황에 따라 선택적으로 사용해야 합니다.추가적으로 Java SDK나 AWS S3 호환 기능도 함께 검토해볼 수 있습니다.
📚 더 자세한 사용 방법은 NCP 공식 가이드를 참고하세요.