비공개 원본 인증 구성

이 페이지에서는 비공개 원본 인증의 개요와 Cloud CDN과 함께 사용하기 위한 안내를 제공합니다.

비공개 원본 인증은 Cloud CDN에 비공개 Amazon S3 버킷 또는 호환 가능한 객체 저장소에 대한 장기 리소스 액세스 권한을 제공합니다. 비공개 원본을 사용하면 클라이언트가 Cloud CDN을 우회하여 원본에 직접 액세스할 수 없습니다.

이 기능은 전역 외부 애플리케이션 부하 분산기 또는 기존 애플리케이션 부하 분산기가 있는 Cloud CDN에서 지원됩니다.

비공개 원본 인증은 원본 대상이고, 서명된 URL서명된 쿠키는 클라이언트 대상입니다. 동일한 콘텐츠에 두 가지를 모두 사용 설정할 수 있습니다. 비공개 원본 인증은 CDN 이외의 액세스를 원본 및 콘텐츠로 제한합니다. 서명된 URL 및 쿠키는 Cloud CDN에 액세스할 수 있는 사용자를 제어합니다.

시작하기 전에

비공개 원본의 인증 구성

비공개 원본 인증을 구성하려면 다음 안내를 따릅니다.

gcloud

  1. gcloud compute backend-services export 명령어를 사용하여 비공개 출처의 백엔드 구성을 YAML 파일로 내보냅니다.

    gcloud compute backend-services export BACKEND_SERVICE_NAME \
       [--destination=DESTINATION]
    

    DESTINATION을 YAML 파일의 이름으로 바꿉니다(예: my-private-origin.yaml).

  2. HMAC 키를 사용하여 백엔드 요청을 인증하려면 backendServicessecuritySettings 섹션에 이러한 추가 구성 옵션을 지정합니다.

    securitySettings:
      awsV4Authentication:
        accessKeyId: ACCESS_KEY_ID
        accessKey: ACCESS_KEY
        [accessKeyVersion: ACCESS_KEY_VERSION]
        originRegion: REGION
    …]
    

    다음을 바꿉니다.

    • ACCESS_KEY_ID: HMAC 액세스 키 ID
    • ACCESS_KEY: HMAC 액세스 키
    • ACCESS_KEY_VERSION(선택사항): 키 버전을 나타내기 위해 설정할 수 있는 고유한 이름
    • REGION: 스토리지 제공업체의 유효한 리전. Amazon S3의 경우 값은 Google Cloud 리전이 아닙니다.

    다음 스니펫은 샘플 my-private-origin.yaml 파일의 콘텐츠를 보여줍니다.

     name: shopping-cart-services
     backends:
       - description: cart-backend-1
         group: 'https://www.googleapis.com/compute/v1/projects/my-project-id/global/networkEndpointGroups/my-network-origin-group'
     securitySettings:
       awsV4Authentication:
         accessKeyId: AKIDEXAMPLE
         accessKey: c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9
         accessKeyVersion: prod-access-key-v1.2
         originRegion: us-east-2
    
  3. 비공개 원본을 업데이트하려면 gcloud compute backend-services import 명령어를 사용하여 구성을 백엔드 서비스로 가져옵니다.

    gcloud compute backend-services import BACKEND_SERVICE_NAME \
       [--source=SOURCE]
    

    SOURCE를 YAML 파일 이름으로 바꿉니다.

API

HMAC 키를 사용하여 백엔드 요청을 인증하려면 backendServicessecuritySettings 섹션에 이러한 추가 구성 옵션을 지정합니다.

Method: backendServices.insert 또는 Method: backendServices.update API 호출을 사용합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices
PUT https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE

JSON 요청 본문에 다음 스니펫을 추가합니다.

securitySettings: {
  awsV4Authentication: {
    accessKeyId: ACCESS_KEY_ID,
    accessKey: ACCESS_KEY,
    [accessKeyVersion: ACCESS_KEY_VERSION],
    originRegion: REGION
  }
}

다음을 바꿉니다.

  • ACCESS_KEY_ID: HMAC 액세스 키 ID
  • ACCESS_KEY: HMAC 액세스 키
  • ACCESS_KEY_VERSION(선택사항): 키 버전을 나타내기 위해 설정할 수 있는 고유한 이름
  • REGION: 스토리지 제공업체의 유효한 리전. Amazon S3의 경우 값은 Google Cloud 리전이 아닙니다.

다음 스니펫은 샘플 JSON 요청 본문의 콘텐츠를 보여줍니다.

securitySettings: {
  awsV4Authentication: {
    accessKeyId: "AKIDEXAMPLE",
    accessKey: "c4afb1cc5771d871763a393e44b703571b55cc28424d1a5e86da6ed3c154a4b9",
    accessKeyVersion: "prod-access-key-v1.2",
    originRegion: "us-east-2"
  }
}

서명을 생성하기 위해 서비스 이름이 s3으로 자동 설정됩니다. 이러한 구성이 적용되면 Cloud CDN에서 원본에 대한 모든 요청에 대해 HTTP 승인 헤더를 생성합니다.

비공개로 인증된 응답 캐시

비공개 인증된 콘텐츠가 Cloud CDN에 캐시되는지 확인하는 것이 좋습니다.

이렇게 하려면 캐시 모드모든 콘텐츠 강제 캐시로 설정하고 TTL을 지정하여 원본에서 제공되는 모든 콘텐츠가 캐시되도록 합니다.

또는 모든 콘텐츠가 동일한 방식으로 캐시되지 않도록 하려면 캐시 모드를 Cache-Control 헤더를 기준으로 원본 설정 사용 또는 정적 콘텐츠 캐시로 변경하고 Cache-Control 헤더가 원본에서 제공되는 콘텐츠에 올바르게 설정되었는지 확인합니다.

다음 단계