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

本頁說明如何使用 Amazon Simple Storage Service (Amazon S3) 和 AWS Signature 第 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 bucket。確認值區已將 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. 在「密鑰詳細資料」部分,完成下列步驟:

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

    2. 在「Secret value」(密鑰值) 部分中,略過「Upload file」(上傳檔案) 欄位。

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

  4. 略過其餘部分。

  5. 點選「建立密鑰」

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. 在「指派角色」專區的「選取角色」部分,依序選取「Secret Manager」和「Secret Manager Secret Accessor」(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,向外部來源 bucket 進行驗證

控制台

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。

    前往 Media CDN

  2. 按一下「來源」分頁標籤。

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

    「邊緣快取來源詳細資料」頁面隨即開啟。

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

  5. 在「來源地址」部分,選擇「指定 FQDN 或 IP 位址」,然後輸入 FQDN 或 IP 位址。

  6. 在「Private origin authentication」(私人來源驗證) 部分,選取「Authenticate Media CDN's request to this origin with AWS signature version 4」(使用 AWS 第 4 版簽署程序,驗證 Media CDN 傳給這個來源的要求)

  7. 指定下列資訊:

    • 金鑰 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 bucket 的名稱
    • 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 授權標頭。簽章計算和傳送至來源的要求都會移除所有查詢參數。

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