회사에서 운영 중인 오디오북 서비스에서 음원 파일의 무분별한 접근을 방지하고자 한 실전 적용 사례입니다.
정적 파일(이미지, 음원, 영상 등)을 인터넷에 공개할 경우, 사용자 누구나 직접 다운로드하거나 재사용이 가능해집니다. 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 공식 가이드를 참고하세요.