使用已簽署的要求

如要建立經簽署的要求,請編寫字串,其中包含描述要保護內容的參數,以及經簽署值的到期時間。然後在要求中加入組成的字串。 Media CDN 會先驗證已簽署的要求是否有效,再據此採取行動。

經簽署的要求規定

簽署的要求必須符合下列規定:

  • 使用 GETHEADOPTIONS HTTP 方法。不支援其他方法。

  • 將到期時間設為未來時間。由於時鐘可能不同步,以及用戶端網路狀況 (例如中斷和重試),建議您將時間戳記設為至少一分鐘後的未來時間,或至少是影片串流長度,以較長者為準。

  • 簽名可透過 EdgeCacheKeyset 中的金鑰或密鑰驗證。

您無法簽署其他 HTTP 方法,例如 POSTPUTDELETE 要求。如要為使用者上傳作業核發已簽署的網址,請參閱 Cloud Storage 已簽署網址說明文件

設定已簽署的要求

以下各節詳細說明如何設定、簽署及驗證已簽署的要求。

產生金鑰

建立金鑰,供 Media CDN 用於簽署要求。

建立金鑰組

建立金鑰組,供 Media CDN 用於簽署要求。

要求簽署要求

如要只允許已簽署的要求存取資源,您可以將金鑰清單附加至路徑,並將 signedRequestMode 設為下列其中一項:

  • REQUIRE_SIGNATURES,適用於未使用權杖的已簽署要求。

  • REQUIRE_TOKENS,以使用權杖簽署要求。

在路徑上啟用已簽署的要求後,所有要求都必須經過簽署或提供權杖。如果要求沒有有效簽章 (例如金鑰名稱無效、簽章或權杖過期、簽章不符等),就會失敗。

EdgeCacheKeyset 可以包含多個金鑰,以便進行金鑰輪替。系統會接受以任何列出的金鑰簽署的有效要求,並依序嘗試使用金鑰。如要進一步瞭解金鑰輪替,請參閱「輪替密鑰」。

如果 signedRequestMode 設為 REQUIRE_SIGNATURESREQUIRE_TOKENS,Media CDN 會驗證快取命中和未命中。包括對來源的所有要求。

以下範例為 Media CDN 設定,可針對特定 PathMatcher (路徑) 強制執行已簽署的要求:

gcloud edge-cache services describe prod-media-service
輸出:
...
  routeAction:
    cdnPolicy:
      cacheMode: CACHE_ALL_STATIC
      signedRequestMode: REQUIRE_SIGNATURES
      signedRequestKeyset: prod-vod-keyset

如要瞭解如何為已簽署的要求建立權杖,請參閱「產生權杖」。

如要停用要求簽署,您可以將 signedRequestMode 設為 DISABLED, 並刪除對 signedRequestKeyset 的參照。

在來源驗證要求

如果將路徑的簽署模式設為 REQUIRE_SIGNATURES,Media CDN 會驗證每個相符要求是否具有有效簽章。對於這些路由,缺少簽章會視為無效簽章。

為避免簽署設定錯誤,以及使用者嘗試直接存取來源的情況,建議您在來源端驗證要求是否已簽署。採用縱深防禦的內容保護方法,有助於防止未經授權存取及下載已授權和付費內容。

以網址為準的簽署方法,指的是簽章為查詢參數的一部分,或是以網址路徑元件形式嵌入。在這種情況中,系統會先從網址中移除簽章和相關參數,再將要求傳送至來源。這樣一來,來源處理要求時,簽章就不會引發轉送問題。如要驗證這類要求,可以檢查 x-client-request-url 要求標頭,此標頭中包含移除已簽署元件前的原始 (已簽署) 用戶端要求網址。

如要在來源端驗證要求,請在要求簽署端點中使用相同的驗證碼,這也有助於減少金鑰不符的情況,以及金鑰輪替導致的問題。

輪替金鑰

最佳做法是定期輪替或更新 Media CDN 使用的密鑰。建議每 30 到 60 天輪替一次金鑰,但這並非強制要求。

後續步驟

  • 如要進一步瞭解如何啟用及存取 Media CDN 記錄,包括如何篩選及查詢記錄,請參閱「記錄」一文。

  • 如要設定 Media CDN 和私有 Cloud Storage bucket,請參閱「來源連線與防護」。