設定私人來源驗證

本頁面將概述私人來源驗證,並說明如何搭配 Cloud CDN 使用。

私人來源驗證可讓 Cloud CDN 長期存取私人 Amazon S3 儲存貯體或其他相容物件儲存庫中的資源。使用私人來源可防止用戶端略過 Cloud CDN 並直接存取來源。

搭配全域外部應用程式負載平衡器或傳統版應用程式負載平衡器使用時,Cloud CDN 支援這項功能。

私人來源驗證是針對來源,而已簽署的網址已簽署的 Cookie 則是針對用戶端。你可以為相同內容啟用這兩種功能。私人來源驗證可限制非 CDN 對來源和內容的存取權。已簽署的網址和 Cookie 可控管哪些使用者可以存取 Cloud CDN。

事前準備

設定私人來源的驗證機制

如要設定私人來源驗證,請按照下列操作說明操作:

主控台

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

    前往 Cloud CDN

  2. 按一下要設定的來源名稱。來源必須是「自訂來源」類型。

  3. 在「來源詳細資料」頁面中,按一下「編輯」按鈕。

  4. 如要前往「Host and path rules」(主機與路徑規則) 部分,請點選「Next」

  5. 如要前往「快取效能」部分,請按一下「下一步」

  6. 在「Private origin authentication」(私人來源驗證) 部分,選取「Authenticate requests to this origin with AWS Signature Version 4」(使用 AWS 第 4 版簽署程序,驗證傳送至這個來源的要求)。然後指定下列資訊:

    • Key ID:Amazon S3 儲存貯體或其他相容物件儲存庫的存取金鑰。
    • 金鑰:用來進行物件儲存庫驗證的密鑰。如果您使用的是私人 Cloud Storage 值區,請指定 HMAC 金鑰。
    • 金鑰版本:代表金鑰版本的專屬名稱。
    • 區域:物件儲存庫所在的區域,例如 us-east-1
  7. 按一下 [完成]

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.insertMethod: 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 快取私人驗證的內容。

如要這麼做,請將快取模式設為「強制快取所有內容」,並指定存留時間,以便快取從來源提供的所有內容。

或者,如果您不想強制將所有內容以相同方式快取,請將快取模式變更為「使用根據 Cache-Control 標頭的來源設定」或「快取靜態內容」,並確保在從來源提供的內容上正確設定 Cache-Control 標頭。

後續步驟