무단 배포 방지

이 페이지에서는 콘텐츠 무단 배포를 방지하기 위해 Media CDN에서 제공되는 옵션에 대해 간략하게 설명합니다.

Media CDN은 무단 배포로부터 콘텐츠를 보호하는 데 도움이 되는 다음과 같은 옵션을 제공합니다.

  • 토큰(권장 접근 방식): Media CDN은 콘텐츠 보호를 돕기 위해 토큰을 사용합니다.

    토큰은 서명된 쿠키, 쿼리 매개변수가 포함된 URI, 경로 구성요소와 같이 서명된 요청을 교환하기 위한 매체입니다. 뷰어가 제공하는 유효 토큰은 콘텐츠 액세스를 인증하기 위해 사용됩니다. 토큰이 유효하지 않거나 누락된 뷰어는 콘텐츠 액세스가 방지됩니다.

    단일 토큰 또는 이중 토큰 인증을 사용하도록 선택할 수 있습니다. 토큰은 이중 토큰 인증을 위해 필요합니다.

    이중 토큰 인증을 사용할 경우 Media CDN은 단기 토큰과 장기 토큰이라는 두 가지 토큰을 사용합니다.

    새 통합에는 다음과 같은 이점을 제공하는 토큰을 사용하는 것이 좋습니다.

    • Google 이외의 콘텐츠 전송 네트워크(CDN)와 호환성을 제공합니다.
    • 경로 전용 서명을 지원합니다.
    • 여러 헤더 서명을 사용 설정합니다.
    • 세분화된 액세스 제어 및 취소를 제공합니다.
    • 손상된 토큰의 영향을 최소화합니다.
    • 임의 데이터 및 세션 ID를 삽입할 수 있습니다.
  • 서명: Media CDN은 콘텐츠 보호를 위해 단일 서명을 사용합니다. 서명을 사용하면 호스트 및 프로토콜을 포함하여 전체 URL 서명을 수행할 수 있습니다.

두 옵션을 함께 사용하여 콘텐츠를 보호할 수 있습니다.

이중 토큰 인증 작동 방법

이중 토큰 인증은 콘텐츠에 대한 요청을 인증하기 위해 2개의 토큰을 사용합니다. 단기 토큰은 재생 시작 시에 사용되고 장기 토큰은 재생 세션의 남은 부분에 사용됩니다.

이중 토큰 인증을 사용하려면 사용자 에이전트에 대해 단기 토큰을 발행하도록 애플리케이션 서버를 구성합니다. 그런 후 단기 토큰에 응답하도록 Media CDN을 구성합니다. 선택한 쿼리 매개변수에 토큰을 배치하거나 쿠키에 토큰을 배치할 수 있습니다. 자세한 내용은 이중 토큰 인증 사용을 참조하세요.

애플리케이션 서버에서 생성된 단기 토큰은 기본 매니페스트(다중 변형 재생목록이라고도 함) 보호에 도움이 됩니다. 이렇게 서명된 요청은 빠르게 만료되어 기본 매니페스트를 요청할 수 있는 시간이 충분하지만 매니페스트 내에 포함된 모든 콘텐츠를 보기에 시간이 충분하지 않습니다.

Media CDN은 승인된 단기 토큰이 포함된 요청을 수신할 때 서명된 장기 토큰을 생성합니다. 토큰은 단일 이름의 쿼리 매개변수 또는 쿠키에서 사용할 수 있습니다. 장기 토큰은 전체 길이 프로그램 보기를 지원합니다. Media CDN에서 생성된 서명된 장기 토큰은 EdgeCacheKeyset 리소스와 연관된 Google 관리 키로 서명된 Ed25519 서명을 사용합니다.

단기 및 장기 토큰의 만료 시간은 맞춤설정할 수 있습니다. 권장사항으로 애플리케이션 서버에서 생성되는 단기 토큰의 만료 시간을 1분으로 구성하는 것이 좋습니다. Media CDN이 생성하는 장기 토큰의 만료 시간은 콘텐츠 길이보다 큰 기간(최대 1일)으로 설정해야 합니다.

이중 토큰 인증의 요청 흐름

다음은 요청 흐름에 대한 설명입니다.

  1. 뷰어는 보려는 미디어에 대해 애플리케이션 서버에서 메타데이터를 요청합니다. 애플리케이션 서버는 단기 토큰으로 서명된 기본 매니페스트의 URI를 반환합니다.

  2. 플레이어 애플리케이션은 Media CDN에서 기본 매니페스트를 요청합니다. 요청에는 단일 이름의 쿼리 매개변수 형식으로 단기 토큰이 URI 쿼리 매개변수 값으로 포함되어 있습니다.

  3. Media CDN은 단기 토큰과 토큰의 서명된 매개변수를 확인합니다.

    1. 토큰이 유효하면 Media CDN이 장기 서명 토큰을 만듭니다. Media CDN은 Set-Cookie 헤더를 사용하거나 토큰을 포함하도록 기본 매니페스트의 매니페스트 및 세그먼트 URI를 수정하여 토큰을 반환합니다.
    2. 토큰이 유효하지 않으면 Media CDN이 HTTP 403 Forbidden으로 응답합니다.
  4. 플레이어 애플리케이션은 Media CDN에서 기본 매니페스트를 수신한 후 기본 매니페스트에서 참조된 미디어 재생목록 또는 미디어 세그먼트를 요청합니다. 요청에는 서명된 쿠키 또는 URI 매개변수로 장기 토큰이 포함되어야 합니다.

  5. Media CDN은 장기 서명 토큰을 확인합니다.

    1. 장기 토큰이 특정 요청에 대해 유효한 경우 Media CDN이 요청된 콘텐츠를 제공합니다.
    2. 장기 토큰이 유효하지 않으면(토큰 만료 또는 부적합한 경로), Media CDN이 HTTP 403 Forbidden으로 응답합니다.
  6. 이 프로세스는 미디어 재생이 종료되거나 장기 서명이 만료될 때까지 반복됩니다.

이중 토큰 서명 요청에 지원되는 토큰 형식

Media CDN 이중 토큰 서명 요청은 토큰 유형에 따라 여러 형식을 지원합니다.

단기 서명 요청

단기 서명 요청의 경우 Media CDN은 기본적으로 Ed25519로 서명된 토큰을 요청을 지원합니다. 또한 기존 애플리케이션 코드 및 기타 CDN과의 호환성을 위해 대칭 키 해시 기반 메시지 인증 코드(HMAC)를 사용할 수 있습니다.

HMAC를 사용하려면 Secret Manager를 사용해서 HMAC 보안 비밀을 저장합니다. 그런 후 저장된 보안 비밀에 액세스할 수 있도록 Media CDN 서비스 계정에 액세스 권한을 부여합니다. 권장사항에 따라 보안 및 성능을 위해 Ed25519를 사용하는 비대칭 서명을 사용하는 것이 좋습니다.

Media CDN 서비스 계정은 Media CDN 프로젝트의 소유이며 프로젝트의 서비스 계정 목록에 표시되지 않습니다. 서비스 계정은 프로젝트에서 사용자가 명시적으로 허용하는 Media CDN 리소스에 대해서만 액세스 권한을 부여합니다.

서비스 계정에는 다음과 같은 형식이 있습니다.

service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

여기서 PROJECT_NUMBER는 프로젝트 번호입니다.

Media CDN 서비스 계정을 활성화하려면 EdgeCacheOrigin과 같은 Media CDN 리소스를 하나 이상 만듭니다.

장기 서명된 요청

장기 서명된 요청의 경우 Media CDN은 EdgeCacheKeyset 리소스와 연결된 Google 관리 키로 서명된 Ed25519 서명을 사용합니다.

Media CDN은 HLS 스트림을 위한 단일 이름의 쿼리 매개변수 또는 쿠키에서 사용할 수 있는 장기 토큰에 대해 단일 토큰 형식을 지원합니다.

서명된 요청 작동 방법

서명된 요청은 서명 또는 토큰을 사용해서 각 뷰어가 토큰에 액세스하도록 인증되었는지 확인합니다. 액세스 범위가 다음과 같이 지정되도록 Media CDN을 구성할 수 있습니다.

  • 제한된 기간 동안의 정확한 URI 또는 URI 프리픽스
  • 특정 클라이언트
  • 토큰을 사용하는 서명된 요청의 경우 와일드 카드를 포함하는 최대 5개 경로

서명 요청을 사용하려면 이러한 요청에 서명하고 해당 요청의 서명을 확인하는 키를 생성합니다. 그런 후 요청이 처리되는 방식을 제어하는 경로를 구성합니다. 콘텐츠 유형, 클라이언트 속성, 최신성 요구사항에 따라 동작을 최적화할 수 있습니다. 서명된 요청은 특정 엔드포인트 보호에 도움이 되는 경로별 기준에 따라 적용될 수 있습니다.

각 Media CDN 서비스는 여러 키 컬렉션을 사용할 수 있습니다. 키 컬렉션을 키 세트라고도 부릅니다. 키 세트를 사용하면 키를 순환하고 자체 인프라 내에서 중단 없이 비공개 키를 배포할 수 있습니다.

콘텐츠 보호를 돕기 위해 서명된 요청 또는 토큰을 사용하도록 Media CDN을 구성할 수 있습니다.

토큰을 사용하여 서명된 요청의 경우 다음 중 하나에 토큰을 배치할 수 있습니다.

  • 선택한 쿼리 매개변수
  • 쿠키

자세한 내용은 토큰 생성을 참조하세요.

서명을 사용하여 서명된 요청의 경우 다음 형식을 사용할 수 있습니다.

  • 쿼리 매개변수가 포함된 정확한 URI: 정확한 URI를 사용해서 URLPrefix를 지정하고 동일한 쿼리 매개변수를 여러 URI에 추가합니다.
  • 쿼리 매개변수가 포함된 URI 프리픽스: URI 프리픽스를 사용하여 URLPrefix를 지정하고 동일한 쿼리 매개변수를 여러 URI에 추가합니다.
  • 경로 구성요소: 경로 구성요소를 지정합니다. 상대적 매니페스트 URI가 서명된 URI 구성요소를 상속할 수 있습니다.
  • 서명된 쿠키: 쿠키에 URI 프리픽스를 지정합니다. 지정한 프리픽스를 사용하여 URI에 액세스할 수 있습니다.

자세한 내용은 서명 생성을 참조하세요.

고려사항

다음 섹션에서는 콘텐츠의 무단 배포를 방지하는 데 도움이 되는 다양한 요소를 설명합니다.

보안 고려사항

Media CDN은 REQUIRE_SIGNATURES 또는 REQUIRE_TOKENScdnPolicy.signedRequestMode로 구성된 경로와 일치하는 모든 요청을 검증합니다.

원본에서 요청을 검증하는 것이 좋습니다. Media CDN이 서명이 필요한 경로에 대해 유효하지 않고 서명되지 않은 요청을 거부하지만 클라이언트가 원본에 직접 액세스할 수 있는 방법을 찾을 수 있습니다. 추가 검증 레이어는 콘텐츠 보호를 위한 심층 방어 방법을 제공합니다.

다음 표에서는 Media CDN이 요청을 검증하는 시나리오에 대해 설명합니다.

요청에 서명이 있음 서명이 유효한가요? signedRequestMode 동작 상태 코드
아니요 해당 사항 없음 REQUIRE_SIGNATURES 또는 REQUIRE_TOKENS 서명 또는 토큰이 없는 요청은 서명이 유효하지 않은 것으로 취급됩니다. HTTP 403
아니요 REQUIRE_SIGNATURES 또는 REQUIRE_TOKENS 만료되었거나 일치하지 않는 URL 또는 잘못된 키가 포함된 경우 서명 또는 토큰이 유효하지 않은 것으로 간주됩니다. 유효하지 않은 서명 또는 토큰은 CDN 에지에서 거부됩니다. HTTP 403
REQUIRE_SIGNATURES 또는 REQUIRE_TOKENS 서명 또는 토큰이 검증되고 캐시 또는 출처의 콘텐츠로 응답이 제공됩니다. HTTP 200
없음 또는 DISABLED 검증이 수행되지 않고 응답이 사용자에게 직접 제공됩니다. HTTP 200
아니요 없음 또는 DISABLED 검증이 수행되지 않고 응답이 사용자에게 직접 제공됩니다. HTTP 200

애플리케이션이 잘못된 서명을 감지하면 HTTP 403 (Forbidden) 상태 코드로 응답하는지 확인합니다. HTTP 403 상태 코드는 캐시할 수 없습니다.

애플리케이션이 캐시 가능한 상태 코드를 잘못된 요청에 보내면 유효한 향후 요청이 부당하게 거부될 수 있습니다.

URI 한도

대부분의 현대적인 HTTP 클라이언트는 최대 8,000자 길이의 URI를 지원합니다. 그러나 일부 레거시 또는 틈새 시장 기기는 한도가 이보다 더 엄격할 수 있습니다. 일반적으로 서명된 URI는 요청 URI에 약 125자를 추가하며, 여기에는 다음이 포함됩니다.

  • 모든 필드 이름이 사용된 경우 각 필드에 대해 약 67자(예: Expires=KeyName=).
  • Unix 타임스탬프를 위한 10자
  • KeyName을 위한 5자
  • base64 인코딩 Signature 값을 위한 43자

권장사항에 따르면 쿼리 매개변수를 토큰으로 사용해서 URI를 2,000자 미만으로 유지하는 것이 좋습니다. URI이 더 짧으면 기기가 잘린 URI를 Media CDN으로 전송할 수 없습니다.

기존 동영상 스트리밍 기기

일부 기존 동영상 스트리밍 기기는 매니페스트 또는 미디어 세그먼트 요청에 쿠키 추가를 완전하게 지원하지 못할 수 있습니다. HTTP 쿠키 처리에 알려진 문제가 있는 기기가 있으면 서명된 요청 및 이중 토큰 교환을 위해 쿼리 매개변수를 사용하도록 Media CDN을 구성합니다.

단기 토큰 교환을 위해 쿠키를 사용할 때는 필요한 동의 및 개인 정보 보호 규정 준수만 수행하면 됩니다. Media CDN이 이중 토큰 서명 요청을 사용하도록 구성된 경우 Google은 장기 토큰에 사용되는 쿠키를 발행하고 관리합니다.

결제

Secret Manager 결제 방법은 가격 책정을 참조하세요.

보안 비밀에 대한 Media CDN 가져오기가 내부적으로 캐시되어 Secret Manager에서 보안 비밀 가져오기 횟수가 크게 줄어듭니다. 또한 줄어든 가져오기 덕분에 Secret Manager에서 관측되고 결제되는 액세스 비율도 크게 줄어듭니다.

Media CDN에서 보안 비밀 캐싱에 대한 자세한 내용은 키 개요를 참조하세요.