R2 3D Tiles 보안 — 전체 방식 분류 및 현황

Cloudflare R2에서 3D Tiles(GLB, b3dm)를 서빙할 때 사용할 수 있는 보안 방식의 전체 지도. 업데이트: 2026-04-06


핵심 요약

구분내용
📖 정의R2 Object Storage 위에서 대량의 3D 타일 파일을 안전하게 서빙하기 위한 보안 아키텍처 선택지
💡 핵심6가지 방식이 존재하며, Worker + R2 Binding + JWT 조합이 3D Tiles 서빙에 최적
🎯 대상3D 타일링 파이프라인을 운영하며 R2에서 tileset을 서비스하는 개발자
⚠️ 주의API Key를 URL에 포함하거나 파일마다 Presigned URL을 발급하는 방식은 3D Tiles에 부적합

목차

  1. 문제 정의 — 왜 3D Tiles 보안이 특수한가
  2. 전체 보안 방식 분류
  3. 주요 방식 현황 테이블
  4. R2 비용 구조 기초
  5. 관련 표준 및 가이드라인

1. 문제 정의 — 왜 3D Tiles 보안이 특수한가

일반 API vs 3D Tiles 요청 패턴

일반 API 보안과 달리, 3D Tiles 서빙은 한 번의 씬 로드에서 수백~수천 개 파일이 동시에 요청되는 특수한 패턴을 가진다.

구분일반 API3D Tiles 서빙
요청 패턴1회 요청 → 1개 응답1회 씬 로드 → tileset.json + 수백~수천 개 .b3dm/.glb 동시 요청
파일 수소수도시 모델 기준 수천~수만 개
동시성낮음CesiumJS가 카메라 시점에 따라 병렬 요청 발행
트래픽 규모예측 가능사용자 10명 × 씬 전환 = 초당 수천 파일 요청 가능

기존 방식의 문제점

방식문제심각도
URL에 API Key 포함브라우저 히스토리, 네트워크 탭, 서버 로그에 키 노출🔴 치명적
파일마다 Presigned URL 발급서버 병목 + 클라이언트↔서버 왕복 지연 × 파일 수🔴 치명적
[ Presigned URL 병목 흐름 ]

CesiumJS가 tile_0.b3dm 필요
    → 백엔드에 presigned URL 발급 요청 (왕복 1)
    → 백엔드가 URL 생성
    → 클라이언트가 R2에 실제 요청
    ↑ 이 과정이 파일 수만큼 반복

파일 1,000개 = 백엔드 왕복 1,000번 = 렌더링 지연 폭증

핵심 요구사항: API Key 노출 없이, 파일 수에 무관하게 일괄 인증이 가능한 방식이 필요하다.


2. 전체 보안 방식 분류

Cloudflare가 제공하는 R2 보안 방식은 크게 인증 프록시형, 토큰 서명형, 네트워크 제한형으로 나뉜다.

flowchart TD
    ROOT["R2 3D Tiles 보안 방식"]
    
    ROOT --> AUTH["인증 프록시형"]
    ROOT --> SIGN["토큰 서명형"]
    ROOT --> NET["네트워크 제한형"]
    
    AUTH --> A["A. Worker + R2 Binding<br/>(JWT Auth Proxy)"]
    AUTH --> B["B. Cloudflare Access<br/>(Zero Trust)"]
    
    SIGN --> C["C. R2 Presigned URL<br/>(S3 호환)"]
    SIGN --> D["D. Worker HMAC<br/>Signed URL"]
    
    NET --> E["E. Public Bucket<br/>+ WAF/Rate Limiting"]
    NET --> F["F. Cloudflare Tunnel<br/>+ Private Network"]
    
    A -.- A1["R2 비공개 유지<br/>Worker가 내부 바인딩으로 접근<br/>JWT 1개로 전체 타일 인증"]
    B -.- B1["대시보드 설정만으로 구현<br/>Service Token 또는 IdP 연동"]
    C -.- C1["파일마다 개별 URL 서명<br/>3D Tiles에 부적합"]
    D -.- D1["URL 쿼리에 HMAC 서명<br/>헤더 불가 환경에 유용"]
    E -.- E1["버킷 공개 + WAF로 보호<br/>보조 레이어로만 활용"]
    F -.- F1["WARP 클라이언트 필요<br/>내부 접근 전용"]

    style A fill:#2d6a4f,color:#fff
    style C fill:#d32f2f,color:#fff

방식별 인증 구조 비교

구분R2 버킷 상태인증 위치인증 수단파일별 처리
A. Worker JWT비공개Worker (엣지)JWT 헤더불필요 (토큰 1개)
B. Access공개 (Access가 보호)Cloudflare 엣지Service Token / 쿠키불필요
C. Presigned URL비공개URL 서명S3 서명 파라미터필요 (파일마다)
D. HMAC Signed비공개Worker (엣지)URL 쿼리 HMACprefix 단위 가능
E. WAF공개Cloudflare WAFIP/Referer/Rate불필요
F. Tunnel비공개WARP 클라이언트디바이스 인증불필요

3. 주요 방식 현황 테이블

방식권장도3D Tiles 적합성월 비용코드 필요주요 사용 사례
A. Worker + R2 Binding (JWT)★★★★★최적5예 (Worker)B2B SaaS, 다중 프로젝트
B. Cloudflare Access★★★★☆적합7·인아니오소규모 팀, 내부 뷰어
C. R2 Presigned URL★★☆☆☆부적합무료 tier 소진 위험예 (서버)단일 파일 다운로드 전용
D. Worker HMAC Signed URL★★★★☆적합5예 (Worker)iframe, 헤더 불가 환경
E. Public + WAF★★★☆☆보조 레이어$0 (제한적)아니오기본 보호 + 다른 방식 보완
F. Tunnel + WARP★★★☆☆내부 전용$0 (50명)아니오개발/스테이징 환경

기술 의존성

방식필요 서비스추가 라이브러리외부 서버 필요
AWorkers, R2jose (JWT)JWT 발급 서버
BAccess, R2없음없음
CR2 (S3 API)@aws-sdk/client-s3Presigned URL 발급 서버
DWorkers, R2없음 (crypto.subtle 내장)서명 URL 발급 서버
EWAF, R2없음없음
FTunnel, WARP없음cloudflared 데몬

4. R2 비용 구조 기초

R2의 가장 큰 특징은 Egress 비용이 $0이라는 점이다. 대용량 3D 타일 파일을 서빙해도 데이터 전송 비용이 발생하지 않는다.

항목무료 Tier초과 단가
스토리지10 GB/월$0.015/GB/월
Class A Operations (PutObject 등)1,000,000건/월$4.50/100만 건
Class B Operations (GetObject 등)10,000,000건/월$0.36/100만 건
Egress (외부 전송)무제한$0

Workers 비용

항목무료(Free)Standard ($5/월)
요청 수100,000건/일10,000,000건/월 포함
CPU 시간10ms/요청30,000,000 ms/월 포함
초과 요금서비스 중단$0.30/100만 건

Cloudflare Access 비용

플랜사용자 수비용
Free최대 50명$0
Pay-As-You-Go무제한$7/사용자/월
Enterprise무제한별도 계약

5. 관련 표준 및 가이드라인

표준/가이드관련 내용비고
OWASP API Security Top 10API 키 노출 방지, 인증 설계API Key in URL은 OWASP 위반
OGC 3D Tiles 1.1타일셋 구조 및 HTTP 기반 서빙 스펙인증 방식은 미지정 (구현체 자유)
RFC 7519 (JWT)JSON Web Token 표준방식 A에서 사용
RFC 2104 (HMAC)Hash-based Message Authentication Code방식 D에서 사용
Cloudflare Zero Trust기업용 접근 제어 프레임워크방식 B, F에서 사용

문서 탐색


참고 자료