本頁面將概述私人來源驗證,並說明如何搭配 Cloud CDN 使用。
私人來源驗證可讓 Cloud CDN 長期存取私人 Amazon S3 儲存貯體或其他相容物件儲存庫中的資源。使用私人來源可防止用戶端略過 Cloud CDN 並直接存取來源。
搭配全域外部應用程式負載平衡器或傳統版應用程式負載平衡器使用時,Cloud CDN 支援這項功能。
私人來源驗證是針對來源,而已簽署的網址和已簽署的 Cookie 則是針對用戶端。你可以為相同內容啟用這兩種功能。私人來源驗證可限制非 CDN 對來源和內容的存取權。已簽署的網址和 Cookie 可控管哪些使用者可以存取 Cloud CDN。
事前準備
建立雜湊架構訊息驗證碼 (HMAC) 金鑰,用於驗證要求並與服務帳戶建立關聯。請記下存取金鑰和密鑰。
請參閱 AWS 說明文件中的「使用 AWS 憑證存取 AWS:程式存取」。
-
如果物件儲存庫預期 HTTP 要求的
Host
標頭會傳回特定值,請務必在後端服務中設定該值。如果您未設定自訂要求標頭,後端服務會保留用戶端用來連線至外部應用程式負載平衡器的Host
標頭。如需設定步驟,請參閱「使用自訂要求標頭」。如需具體範例,請參閱「設定具備外部後端的負載平衡器」。
視需要更新至最新版 Google Cloud CLI:
gcloud components update
設定私人來源的驗證機制
如要設定私人來源驗證,請按照下列操作說明操作:
主控台
前往 Google Cloud 控制台的「Cloud CDN」頁面。
按一下要設定的來源名稱。來源必須是「自訂來源」類型。
在「來源詳細資料」頁面中,按一下「編輯」按鈕。
如要前往「Host and path rules」(主機與路徑規則) 部分,請點選「Next」。
如要前往「快取效能」部分,請按一下「下一步」。
在「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
。
按一下 [完成]。
gcloud
使用
gcloud compute backend-services export
指令,將私人來源的後端設定匯出至 YAML 檔案:gcloud compute backend-services export BACKEND_SERVICE_NAME \ [--destination=DESTINATION]
將
DESTINATION
替換為 YAML 檔案的名稱,例如my-private-origin.yaml
。如要使用 HMAC 金鑰驗證後端要求,請在
backendServices
的securitySettings
部分指定下列其他設定選項:securitySettings: awsV4Authentication: accessKeyId: ACCESS_KEY_ID accessKey: ACCESS_KEY [accessKeyVersion: ACCESS_KEY_VERSION] originRegion: REGION …]
更改下列內容:
ACCESS_KEY_ID
:HMAC 存取金鑰 IDACCESS_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
如要更新私人來源,請使用
gcloud compute backend-services import
指令將設定匯入後端服務:gcloud compute backend-services import BACKEND_SERVICE_NAME \ [--source=SOURCE]
將
SOURCE
替換為 YAML 檔案的名稱。
API
如要使用 HMAC 金鑰驗證後端要求,請在 backendServices
的 securitySettings
部分指定這些額外的設定選項。
使用 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 存取金鑰 IDACCESS_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
標頭。