如要建立已簽署的要求,請編寫字串,其中包含描述要保護的內容和已簽署值的到期時間的參數。然後在要求中加入組合字串。接著,Media CDN 會驗證已簽署的要求是否有效,然後再採取行動。
已簽署的要求規定
已簽署的要求必須符合下列規定:
使用
GET
、HEAD
或OPTIONS
HTTP 方法。不支援其他方法。請設定未來的到期時間。由於可能會發生時鐘同步差異,以及用戶端網路狀況 (例如中斷連線和重試),建議您將時間戳記設為不小於一分鐘的未來時間,或不小於影片串流長度 (以兩者中較大者為準)。
簽名可透過
EdgeCacheKeyset
中的金鑰或密鑰驗證。
您無法簽署其他 HTTP 方法,例如 POST
、PUT
或 DELETE
要求。如果您需要為使用者上傳作業發出已簽署的網址,請參閱 Cloud Storage 的已簽署網址說明文件。
設定已簽署的要求
以下各節將詳細說明如何設定、簽署及驗證已簽署的要求。
產生金鑰
建立金鑰組
要求簽署的要求
如要只允許已簽署的請求存取資源,您可以將鍵清單附加至路徑,並將 signedRequestMode
設為下列其中一個:
REQUIRE_SIGNATURES
:用於不使用權杖的已簽署要求。REQUIRE_TOKENS
:使用權杖的已簽署要求。
在路徑上啟用已簽署的要求,可強制要求所有要求都必須簽署或提供權杖。沒有有效簽章的請求 (例如無效的鍵名稱、已過期的簽章或權杖、不相符的簽章等等) 會失敗。
EdgeCacheKeyset
可包含多個鍵,以便進行鍵旋轉。系統會接受使用任何所列金鑰簽署的有效要求,並依序嘗試金鑰。如要進一步瞭解金鑰輪替,請參閱「輪替機密」。
當 signedRequestMode
設為 REQUIRE_SIGNATURES
或 REQUIRE_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 值區,請參閱「起源連線與防護」一文。