비공개 Amazon S3 호환 버킷을 원본으로 사용

이 페이지에서는 Amazon Simple Storage Service(Amazon S3) 및 AWS Signature Version 4를 사용하여 비공개 Amazon S3 호환 버킷에 Media CDN을 연결하는 방법을 설명합니다. Media CDN은 AWS Signature Version 4a를 지원하지 않습니다.

Media CDN은 원본 요청 인증을 위해 AWS Signature Version 4를 지원합니다. 이 기능을 사용해서 Media CDN을 비공개 Amazon S3 호환 버킷에 연결하여 연결이 Media CDN과만 공유되도록 할 수 있습니다. 또한 더 효과적인 심층 방어를 위해 클라이언트 인증을 사용 설정할 수 있습니다. 자세한 내용은 서명된 요청 사용을 참조하세요.

시작하기 전에

다음 리소스가 있는지 확인합니다.

  • 이름 지정 규칙을 준수하는 비공개 Amazon S3 버킷

  • 이전 비공개 Amazon S3 버킷에 액세스하기 위한 전용 AWS IAM 사용자 계정. 버킷이 AWS IAM 사용자 계정에 s3:getObject 권한을 부여하는지 확인합니다. Amazon S3 버킷 액세스 구성에 대한 자세한 내용은 Amazon S3의 ID 및 액세스 관리를 참조하세요.

  • 전용 AWS IAM 사용자 계정에 대한 AWS 액세스 키 ID 및 AWS 보안 비밀 액세스 키. 자세한 내용은 IAM 사용자를 위한 액세스 키 관리를 참조하세요.

  • 이전에 Secret Manager를 사용하지 않았으면 Secret Manager를 구성합니다.

Media CDN의 서비스 에이전트 만들기

Media CDN의 서비스 에이전트를 만들려면 gcloud beta services identity create 명령어를 사용합니다.

gcloud

gcloud beta services identity create \
    --project PROJECT_ID \
    --service=networkservices.googleapis.com

PROJECT_ID를 프로젝트 ID로 바꿉니다.

자세한 내용은 서비스 에이전트 만들기 트리거를 참조하세요.

Secret Manager에 액세스키 저장

다음 단계에 따라 Secret Manager에서 보안 비밀을 만듭니다.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. Secret Manager 페이지에서 보안 비밀 만들기를 클릭합니다.

  3. 보안 비밀 세부정보 섹션에서 다음을 수행합니다.

    1. 이름 필드에 보안 비밀의 이름을 입력합니다(예: aws-access-key-id).

    2. 보안 비밀 값 섹션에서 파일 업로드 필드를 건너뜁니다.

    3. 보안 비밀 값 필드에 AWS 보안 비밀 액세스 키를 입력합니다.

  4. 나머지 섹션을 건너뜁니다.

  5. 보안 비밀 만들기를 클릭합니다.

gcloud

Google Cloud CLI의 버전 402.0.0 이상을 사용 중인지 확인합니다. Compute Engine 또는 Google Kubernetes Engine(GKE)에서는 클라우드-플랫폼 범위로 인증해야 합니다.

gcloud secrets create SECRET_NAME \
    --replication-policy="automatic" \
    --data-file="PATH_TO_AWS_SECRET_ACCESS_KEY"

다음을 바꿉니다.

  • SECRET_NAME: 보안 비밀의 이름입니다(예: aws-access-key-id).
  • PATH_TO_AWS_SECRET_ACCESS_KEY: AWS 보안 비밀 액세스 키 값의 경로입니다.

보안 비밀 버전 추가에 대한 자세한 내용은 보안 비밀 버전 추가를 참조하세요.

Secret Manager 액세스 역할 부여

다음 단계에 따라 Media CDN 서비스 계정에 Secret Manager 보안 비밀 접근자 역할(roles/secretmanager.secretAccessor)을 부여합니다.

콘솔

  1. Google Cloud 콘솔에서 Secret Manager 페이지로 이동합니다.

    Secret Manager로 이동

  2. 보안 비밀을 선택합니다.
  3. 권한을 선택한 후 액세스 권한 부여를 선택합니다. 액세스 권한 부여 대화상자가 나타납니다.
  4. 주 구성원 추가 섹션에서 다음과 같이 Media CDN 서비스 계정을 새 주 구성원 필드에 입력합니다.
    service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

    여기에서 PROJECT_NUMBER를 프로젝트 번호로 바꿉니다.

  5. 역할 할당 섹션에서 역할 선택에 대해 Secret Manager를 선택한 후 Secret Manager 보안 비밀 접근자를 선택합니다.
  6. 저장을 클릭합니다.

gcloud

gcloud secrets add-iam-policy-binding \
projects/PROJECT_NUMBER/secrets/SECRET_NAME \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \
    --role="roles/secretmanager.secretAccessor"

다음을 바꿉니다.

  • PROJECT_NUMBER: 프로젝트 번호
  • SECRET_NAME: 보안 비밀의 이름

외부 원본 버킷에 인증하도록 Media CDN 구성

콘솔

  1. Google Cloud 콘솔에서 Media CDN 페이지로 이동합니다.

    Media CDN으로 이동

  2. 원본 탭을 클릭합니다.

  3. 구성하려는 원본 이름을 클릭합니다.

    에지 캐시 원본 세부정보 페이지가 열립니다.

  4. 수정 버튼을 클릭합니다.

  5. 원본 주소에서 FQDN 또는 IP 주소 지정을 선택한 후 FQDN 또는 IP 주소를 입력합니다.

  6. 비공개 원본 인증 섹션에서 AWS 서명 버전 4로 이 원본에 대한 Media CDN 요청 인증을 선택합니다.

  7. 다음 정보를 지정합니다.

    • 키 ID: 원본에 대한 읽기 권한이 있는 AWS 액세스 키 ID입니다.
    • 보안 비밀 참조: Secret Manager에 있는 액세스 키의 ID와 해당 버전입니다. 기존 ID를 선택하거나, ID를 직접 입력하거나, 새 ID를 만들어 선택할 수 있습니다.
    • 리전: Amazon S3 버킷이 있는 리전입니다(예: us-east-1).
  8. 프로토콜HTTPS를 선택합니다.

  9. 원본 업데이트를 클릭합니다.

gcloud

  1. 현재 서비스 구성을 YAML 파일로 내보내려면 gcloud edge-cache services export 명령어를 실행합니다.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    다음을 바꿉니다.

    • SERVICE_NAME: Media CDN 서비스의 이름입니다.
    • FILENAME: YAML 파일의 이름입니다.
  2. Cloud Shell에서 텍스트 편집기를 사용하여 YAML 파일을 수정합니다.

  3. 다음 줄을 포함하도록 YAML 파일을 업데이트합니다.

    name: ORIGIN_NAME
    originAddress: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com"
    protocol: HTTPS
    awsV4Authentication:
      accessKeyId: "AWS_ACCESS_KEY_ID"
      secretAccessKeyVersion: "projects/PROJECT_NUMBER/secrets/SECRET_NAME/versions/SECRET_VERSION"
      originRegion: "S3_REGION"
    

    다음을 바꿉니다.

    • ORIGIN_NAME: 이 원본에 설정한 이름입니다.
    • S3_BUCKET_NAME: Amazon S3 버킷의 이름입니다.
    • S3_REGION: Amazon S3 버킷이 있는 리전입니다(예: us-east-1).
    • AWS_ACCESS_KEY_ID: 원본에 대해 읽기 권한이 있는 AWS 액세스 키 ID입니다.
    • PROJECT_NUMBER: 프로젝트 번호
    • SECRET_NAME: Secret Manager에 있는 액세스 키의 ID입니다.
    • SECRET_VERSION: 사용할 보안 비밀 버전입니다.
  4. 원본에 대한 요청의 호스트 및 경로 재작성을 구성합니다. 예를 들어 경로 프리픽스 /vod/가 포함된 모든 요청을 매핑하려면 EdgeCacheService의 YAML 파일에 나열된 originAddress와 일치하도록 hostRewrite를 구성합니다. 다음 코드 샘플에서는 hostRewrite 사용 방법을 보여줍니다.

    name: SERVICE_NAME
    routeRules:
      - priority: 1
      - description: ROUTE_DESCRIPTION
        origin: ORIGIN_NAME
        matchRules:
        - prefixMatch: "/vod/"
        routeAction:
          urlRewrite:
            hostRewrite: "S3_BUCKET_NAME.s3.S3_REGION.amazonaws.com"
            pathPrefixRewrite: "/"
          cdnPolicy:
            cacheMode: CACHE_ALL_STATIC
            defaultTtl: 3600s
    

    SERVICE_NAMEEdgeCacheService의 이름으로 바꿉니다.

    자세한 내용은 타사 스토리지 백엔드 사용을 참조하세요.

  5. YAML 파일을 저장합니다.

  6. 구성을 업데이트하기 위해 YAML 파일을 가져옵니다.

    gcloud edge-cache origins import ORIGIN_NAME \
        --source=FILENAME.yaml
    

외부 버킷에 인증을 수행하도록 Media CDN을 구성한 후에는 Media CDN이 헤더에 대한 모든 요청에 대해 HTTP 승인 헤더를 생성합니다. 모든 쿼리 매개변수가 원본에 대한 서명 계산 및 요청에서 삭제됩니다.

원본이 응답에 헤더를 추가할 수 있습니다. 클라이언트에 제공하기 전 응답 헤더를 삭제하려면 커스텀 헤더 설정을 참조하세요. 원본 구성에 대한 자세한 내용은 원본 연결 및 보호를 참조하세요.