使用與 Amazon S3 相容的私人值區做為來源

本頁面說明如何使用 Amazon Simple Storage Service (Amazon S3) 和 AWS 簽章版本 4,將 Media CDN 連結至與 Amazon S3 相容的私人值區。Media CDN 不支援 AWS 簽章第 4a 版。

Media CDN 支援 AWS 第 4 版簽署程序,用於驗證來源要求。您可以使用這項功能將 Media CDN 連結至私人 Amazon S3 相容值區,確保內容只會與 Media CDN 共用。您也可以啟用用戶端驗證,進一步強化防禦深度。詳情請參閱「使用已簽署的要求」。

事前準備

請確認您擁有下列資源:

  • 符合命名規則的私人 Amazon S3 值區。

  • 專用 AWS IAM 使用者帳戶,可存取上述私人 Amazon S3 值區。請確認值區已將 s3:getObject 權限授予 AWS IAM 使用者帳戶。如要進一步瞭解如何設定 Amazon S3 值區的存取權,請參閱「Amazon S3 中的身分與存取權管理」。

  • 專屬 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」頁面中,按一下「Create secret」

  3. 在「Secret details」(機密資料) 部分完成下列操作:

    1. 在「Name」欄位中輸入機密金鑰的名稱,例如 aws-access-key-id

    2. 在「Secret value」部分,略過「Upload file」欄位。

    3. 在「Secret value」(密鑰值) 欄位中輸入 AWS 私密存取金鑰。

  4. 略過其餘區段。

  5. 按一下「Create secret」

gcloud

請確認您使用的是 Google Cloud CLI 402.0.0 以上版本。在 Compute Engine 或 Google Kubernetes Engine (GKE) 上,您必須使用 cloud-platform 範圍進行驗證

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 存取權角色

請按照下列步驟,將 Secret Manager 密鑰存取者角色 (roles/secretmanager.secretAccessor) 授予 Media CDN 服務帳戶。

主控台

  1. 前往 Google Cloud 控制台的「Secret Manager」頁面。

    前往 Secret Manager

  2. 選取密鑰。
  3. 依序選取「權限」和「授予存取權」。系統會隨即顯示「授予存取權」對話方塊。
  4. 在「新增主體」部分,在「新增主體」欄位中輸入 Media CDN 服務帳戶,如下所示:
    service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com

    PROJECT_NUMBER 替換為您的專案編號。

  5. 在「Assign roles」專區的「Select a role」部分,依序選取「Secret Manager」和「Secret Manager Secret Accessor」
  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. 按一下「Origins」分頁標籤。

  3. 按一下要設定的來源名稱。

    系統會開啟「Edge Cache origin details」頁面。

  4. 按一下 [Edit] (編輯) 按鈕。

  5. 在「Origin address」(來源位址) 中,選擇「Specify an FQDN or IP address」(指定 FQDN 或 IP 位址),然後輸入 FQDN 或 IP 位址。

  6. 在「私人來源驗證」部分,選取「使用 AWS 第 4 版簽署程序,驗證 Media CDN 傳給這個來源的要求」

  7. 請指定下列資訊:

    • Key ID:具備來源讀取權限的 AWS 存取金鑰 ID
    • 參照密鑰Secret Manager 中的存取金鑰 ID 及其版本。您可以選取現有的 ID、手動輸入 ID,或是建立新的 ID 並選取。
    • 區域:Amazon S3 值區所在的區域,例如 us-east-1
  8. 在「Protocol」(通訊協定) 欄中,選取「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_NAMESecret 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_NAME 替換為您的 EdgeCacheService 名稱。

    詳情請參閱「使用第三方儲存空間後端」一文。

  5. 儲存 YAML 檔案。

  6. 如要更新設定,請匯入 YAML 檔案。

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

設定 Media CDN 以驗證外部值區後,Media CDN 會為所有標頭要求產生 HTTP 授權標頭。所有查詢參數都會從簽章計算和對來源要求中移除。

來源可能會在回應中附加其他標頭。如要在提供給用戶端之前移除回應標頭,請參閱「設定自訂標頭」一文。如要進一步瞭解如何設定來源,請參閱「來源連線和遮蔽」。