[기타] NCP Object Storage + Global CDN 으로 안전하게 미디어파일 제공하기

KIM Jongwan·2025년 1월 21일
0
post-thumbnail

🎧 정적 파일 보안을 위한 실전 접근법 – NCP Object Storage + Global CDN Secure Token 활용기

회사에서 운영 중인 오디오북 서비스에서 음원 파일의 무분별한 접근을 방지하고자 한 실전 적용 사례입니다.


✅ 왜 원본 파일 보안이 필요할까?

정적 파일(이미지, 음원, 영상 등)을 인터넷에 공개할 경우, 사용자 누구나 직접 다운로드하거나 재사용이 가능해집니다. DRM 솔루션을 도입하면 복제와 재생을 제어할 수 있지만, 다음과 같은 단점이 있습니다.

  • 💸 비용: 상용 DRM 솔루션은 라이선스 비용이 발생
  • 🔧 복잡성: 기술 구현 및 플랫폼 연동 난이도가 높음

저희 팀은 오디오북 음원 파일의 무단 접근 문제를 해결하고자, 비교적 간단하고 효과적인 방법으로 **Naver Cloud Platform(NCP)**의 Object Storage와 Global CDN의 Secure Token 기능을 도입했습니다.


🗃️ Object Storage를 활용한 원본 파일 저장

원본 파일을 안전하게 저장하고 외부 접근을 제어하기 위해, NCP의 Object Storage를 선택했습니다.

📁 버킷 생성 및 권한 설정

  • 버킷 생성 시 기본 설정 유지

  • 권한 관리: “공개” 설정

    • 버킷 전체는 비공개라도, 개별 파일을 공개하면 접근 가능
    • 그러나 “공개 안함”으로 설정하면 개별 파일이 공개되어도 접근 불가

🔍 파일 업로드 및 접근 테스트

  • sample-audio.mp3 파일 업로드 후 공개 상태에서 접근 시, 링크만 알면 누구나 다운로드 가능
  • 버킷/파일 권한을 "공개 안함"으로 설정하면 접근 차단됨

✔️ 기본적으로는 "공개 안함" 상태로 파일을 업로드하고,
필요 시 Secure Token이나 Presigned URL을 통해 제한적 접근을 허용하는 방식이 적절합니다.


🌍 Global CDN + Secure Token 적용하기

NCP에서는 기존 CDN+ 대신 Global CDN을 새롭게 제공하고 있으며, 보안 기능으로 Secure Token 발급을 지원합니다.

1. CDN 생성하기

  • 서비스 설정: 이름 설정, 프로토콜은 ALL 선택

  • 원본 설정: 앞서 생성한 Object Storage 버킷을 원본으로 지정

  • 캐싱 설정: 기본값 사용

  • Viewer 전송 설정:

    • Secure Token → 사용
    • 방식 → Query String 선택

2. 서비스 도메인 확인

CDN이 생성되면 약 10분 내 활성화됩니다. 이후 https://{CDN 도메인}/sample-audio.mp3 형식으로 접근할 수 있습니다.
단, 버킷이 “공개 안함” 상태이므로 기본적으로 접근은 차단됩니다.


🔐 Secure Token 생성하기

Secure Token은 다음 조건을 포함한 암호화된 문자열로, 일정 시간 동안만 특정 파일에 접근할 수 있도록 제한합니다.

  • start_time: 토큰 유효 시작 시간
  • window_seconds: 토큰 유지 시간(초)
  • acl: 접근 허용 경로
  • key: CDN에서 제공하는 보안 키

🐍 Python으로 토큰 발급하기

네이버에서 제공하는 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 공식 가이드를 참고하세요.

profile
3년차 백앤드 개발자입니다.

0개의 댓글