本頁簡要說明 Media CDN 提供的選項,協助防止內容遭到未經授權的散布。
Media CDN 提供下列選項,協助保護內容免於遭到未經授權的散布。
符記 (建議做法):Media CDN 會使用符記來保護內容。
權杖是用於交換已簽署要求的媒介,例如已簽署的 Cookie、含有查詢參數的 URI,或路徑元件。觀眾提供的有效權杖可用於驗證內容存取權。如果觀眾的權杖無效或遺失,就無法存取你的內容。
您可以選擇使用單一權杖或雙重權杖驗證。雙重權杖驗證需要權杖。
使用雙重權杖驗證時,Media CDN 會使用兩個權杖:短期權杖和長期權杖。
Google 建議您在新的整合作業中使用符記,因為符記具備下列優點:
- 提供與非 Google 內容傳遞聯播網 (CDN) 的相容性。
- 支援僅路徑簽署。
- 啟用多個標頭簽署功能。
- 提供精細的存取權控管和撤銷機制。
- 將遭盜用權杖的影響降至最低。
- 可嵌入任意資料和工作階段 ID。
簽章:Media CDN 會使用單一簽章來保護內容。簽名可讓您執行完整的網址簽署作業,包括主機和通訊協定。
你可以同時使用這兩種選項來保護內容。
雙重權杖驗證的運作方式
雙重權杖驗證會使用兩個權杖來驗證內容的要求:一個是用於啟動播放作業的短期權杖,另一個是用於播放工作階段其餘部分的長期權杖。
如要使用雙權杖驗證,您必須設定應用程式伺服器,以便向使用者代理程式核發短期權杖。接著,您可以設定 Media CDN 回應短時間代碼。您可以將符記放入所選的查詢參數,也可以將符記放入 Cookie 中。詳情請參閱「使用雙重權杖驗證」。
應用程式伺服器產生的短時間符記有助於保護主要資訊清單 (有時稱為多變數播放清單)。簽署要求的到期時間很短,足以要求主要資訊清單,但無法觀看資訊清單內含的所有內容。
當 Media CDN 收到含有已授權短時間符記的要求時,系統會產生已簽署的長時間符記。您可以在單一名稱的查詢參數或 Cookie 中使用權杖。長期權杖可支援觀看完整節目。Media CDN 產生的已簽署長期權杖使用 Ed25519 簽名,這些簽名是使用與 EdgeCacheKeyset
資源相關聯的Google-owned and managed keys 簽署。
您可以自訂短時間和長時間符記的到期時間。最佳做法是,Google 建議您將應用程式伺服器產生的短期權杖到期時間設定為一分鐘。您必須將 Media CDN 產生的長時間長度權杖的到期時間設為大於內容長度的時間長度,最多為一天。
雙重權杖驗證的要求流程
以下說明要求流程:
觀眾會向應用程式伺服器要求所要觀看媒體的中繼資料。應用程式伺服器會傳回使用短時間憑證簽署的主要資訊清單的 URI。
播放器應用程式會向媒體 CDN 要求主要資訊清單。要求會在單一名稱查詢參數格式中,將短時間戳記當做 URI 查詢參數的值。
Media CDN 會驗證短時間權杖和權杖的已簽署參數。
- 如果符記有效,Media CDN 會建立長期簽名符記。Media CDN 會在 Set-Cookie 標頭中傳回符記,或是修改主要資訊清單中的資訊清單和區段 URI 以納入符記。
- 如果符記無效,Media CDN 會傳回
HTTP 403 Forbidden
回應。
播放器應用程式會從 Media CDN 接收主要資訊清單,然後要求主要資訊清單中參照的媒體播放清單或媒體區段。要求必須包含長時間長度的符記,可做為已簽署的 Cookie 或 URI 參數。
Media CDN 會驗證長期權杖簽章:
- 如果長時間戳記對特定要求有效,Media CDN 就會提供要求的內容。
- 如果長時間代碼無效 (可能是因為代碼已過期或路徑無效),Media CDN 會傳回
HTTP 403 Forbidden
回應。
這個程序會重複執行,直到媒體播放結束或長時間簽章到期為止。
支援的雙權杖已簽署要求權杖格式
媒體 CDN 雙權杖簽署要求支援多種格式,具體取決於權杖類型。
短時間簽署要求
針對短時間簽署要求,Media CDN 預設支援使用 Ed25519 簽章簽署的權杖。您也可以使用對稱金鑰雜湊訊息驗證碼 (HMAC),讓系統與現有的應用程式程式碼和其他 CDN 相容。
如要使用 HMAC,您可以使用 Secret Manager 儲存 HMAC 密鑰。接著,您可以授予 Media CDN 服務帳戶存取權,以便存取儲存的機密金鑰。為確保安全性和效能,Google 建議您使用非對稱簽署功能搭配 Ed25519 簽章。
Media CDN 服務帳戶由 Media CDN 專案擁有,不會顯示在專案的服務帳戶清單中。服務帳戶只會授予存取權給您明確允許的專案中的 Media CDN 資源。
這個服務帳戶具備下列格式:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
其中 PROJECT_NUMBER 是專案編號。
如要啟用 Media CDN 服務帳戶,請至少建立一個 Media CDN 資源,例如 EdgeCacheOrigin
。
長時間簽署的要求
針對長期簽署要求,Media CDN 會使用 Ed25519 簽章,這些簽章是使用與 EdgeCacheKeyset
資源相關聯的 Google-owned and managed keys簽署。
Media CDN 支援長時間符記的單一符記格式,可用於 HLS 串流的單一命名查詢參數,或在 Cookie 中使用。
已簽署要求的運作方式
已簽署的要求會使用簽名或權杖,驗證每位觀眾是否已通過驗證,可存取內容。您可以設定 Media CDN,將存取權範圍限制在下列任一項目:
- 在限定時間內使用完全相符的 URI 或 URI 前置字串
- 特定客戶
- 使用符記的已簽署要求:最多五個含萬用字元的路徑
如要使用已簽署的要求,您必須產生金鑰來簽署及驗證簽名。接著,您可以設定路徑,根據內容類型、用戶端屬性和新鮮度需求,進行最佳化行為。您可以依據個別路徑強制執行已簽署的要求,以便保護特定端點。
每個 Media CDN 服務可使用多組金鑰。鍵的集合也稱為「鍵組」。您可以使用 Keyset 在自己的基礎架構中輪替金鑰並發布私密金鑰,且不會中斷服務。
您可以設定 Media CDN 使用已簽署要求或權杖,以便保護內容。
如果是使用權杖的已簽署要求,您可以將權杖放置在下列任一位置:
- 在您選擇的查詢參數中
- 在 Cookie 中
詳情請參閱「產生符記」。
針對使用簽名的已簽署要求,您可以使用下列任一格式:
- 含有查詢參數的完全相符 URI:您可以使用含有完全相符 URI 的
URLPrefix
,並在多個 URI 中附加相同的查詢參數。 - 含有查詢參數的 URI 前置字串:您可以使用 URI 前置字串指定
URLPrefix
,並將相同的查詢參數附加至多個 URI。 - 路徑元件:您可以指定路徑元件,讓相對資訊清單 URI 繼承已簽署的 URI 元件。
- 已簽署的 Cookie:您可以在 Cookie 中指定 URI 前置字串,以便存取您指定前置字串的任何 URI。
詳情請參閱「產生簽名」。
注意事項
以下各節將討論各種考量因素,協助你防止內容遭到未經授權的散布。
安全性考量
Media CDN 會驗證所有與 REQUIRE_SIGNATURES
或 REQUIRE_TOKENS
的 cdnPolicy.signedRequestMode
所設定路徑相符的要求。
建議您在原始位置驗證要求。雖然 Media CDN 會拒絕無效和未簽署的要求 (針對需要簽章的路徑),但用戶端可能會找到直接存取來源的方法。額外的驗證層可提供深入防禦方法,保護您的內容。
下表說明 Media CDN 驗證要求的情況:
要求已簽署 | 簽名有效嗎? | signedRequestMode | 行為 | 狀態碼 |
---|---|---|---|---|
否 | 不適用 | REQUIRE_SIGNATURES 或REQUIRE_TOKENS |
如果要求沒有簽章或權杖,系統會視為簽章無效。 | HTTP 403 |
是 | 否 | REQUIRE_SIGNATURES 或REQUIRE_TOKENS |
如果簽章或權杖已過期,或是網址不相符或金鑰不正確,就會視為無效。無效的簽名或權杖會在 CDN 邊緣遭到拒絕。 | HTTP 403 |
是 | 是 | REQUIRE_SIGNATURES 或REQUIRE_TOKENS |
系統會驗證簽章或符記,並提供快取或來源的內容回應。 | HTTP 200 |
是 | 是 | None 或 DISABLED |
系統不會執行驗證,而是直接將回應提供給使用者。 | HTTP 200 |
是 | 否 | None 或 DISABLED |
系統不會執行驗證,而是直接將回應提供給使用者。 | HTTP 200 |
當應用程式偵測到無效的簽名時,請務必讓應用程式以 HTTP 403 (Forbidden)
狀態碼回應。HTTP 403
狀態碼無法快取。
如果應用程式將可快取的狀態碼傳送至無效要求,日後的有效要求可能會遭到誤拒。
URI 限制
大多數新型的 HTTP 用戶端支援長度為 8000 個半形字元的 URI。不過,某些舊版或特殊裝置可能有更嚴格的限制。一般來說,已簽署的 URI 會在要求 URI 中加入約 125 個字元,包括:
- 如果使用所有欄位名稱,每個欄位的字元數約為 67 個 (例如
Expires=
和KeyName=
)。 - Unix 時間戳記:10 個半形字元
KeyName
為五個字元- 對於 Base64 編碼的
Signature
值,為 43 個字元
最佳做法是使用查詢參數做為符記,將 URI 長度控制在 2, 000 個字元以下。縮短 URI 可避免裝置將截斷的 URI 傳送至 Media CDN。
舊版串流影片裝置
部分舊版影片串流裝置可能不完全支援將 Cookie 附加至資訊清單或媒體片段要求。如果您的裝置有處理 HTTP Cookie 的已知問題,請將 Media CDN 設為使用查詢參數,以便處理已簽署的要求和雙權杖交換。
同意聲明和隱私權法規遵循
您必須自行負責使用 Cookie 交換短時間權杖時,所需的任何同意聲明和隱私權遵循規定。當 Media CDN 設定為使用雙權杖簽署要求時,Google 會為長時間權杖核發及管理 Cookie。
帳單
如要進一步瞭解 Secret Manager 的計費方式,請參閱「定價」一文。
媒體 CDN 會在內部快取密鑰,大幅降低從 Secret Manager 擷取密鑰的頻率。減少擷取次數後,Secret Manager 觀察到的存取率和收費金額也會大幅降低。
如要進一步瞭解 Media CDN 中的密鑰快取功能,請參閱「金鑰總覽」。