搭配 SAS 使用 Azure 內容傳遞網路
重要
Azure CDN Standard from Microsoft (classic) 將於 2027 年 9 月 30 日淘汰。 為了避免任何服務中斷,請務必在 2027 年 9 月 30 日之前,將 Azure CDN 標準從 Microsoft (傳統) 配置文件 移轉至 Azure Front Door Standard 或進階層。 如需詳細資訊,請參閱 Azure CDN Standard from Microsoft (classic) 淘汰。
來自 Edgio 的 Azure CDN 於 2025 年 1 月 15 日淘汰。 如需詳細資訊,請參閱來自Edgio的 Azure CDN 淘汰常見問題。
當您設定儲存體帳戶供「Azure 內容傳遞網路」用來快取內容時,根據預設,所有知道您儲存體容器 URL 的人都能存取您已上傳的檔案。 若要保護您儲存體帳戶中的檔案,您可以將儲存體容器的存取權從公用改設定成私用。 不過,如果您這樣做,則沒有人能夠存取您的檔案。
如果您想要授與有限的私人儲存體容器存取權,可以使用 Azure 儲存體帳戶的「共用存取簽章」(SAS) 功能。 SAS 是一個 URI,可在不公開您帳戶金鑰的情況下,授與對「Azure 儲存體」資源的有限存取權限。 針對您不信任其使用您儲存體帳戶金鑰但又想要將特定儲存體帳戶資源存取權委派給它們的用戶端,您可以將 SAS 提供給它們。 藉由將共用存取簽章 URI 提供給這些用戶端,您會授與它們一段指定時間的資源存取權。
使用 SAS 時,您可以定義各種 Blob 存取參數,例如開始時間和到期時間、權限 (讀取/寫入) 及 IP 範圍。 本文說明如何將 SAS 與 Azure 內容傳遞網路搭配使用。 如需有關 SAS 的詳細資訊 (包括如何建立 SAS 及其參數選項),請參閱使用共用存取簽章 (SAS)。
設定 Azure 內容傳遞網路以使用儲存體 SAS
以下是搭配 Azure 內容傳遞網路使用 SAS 時的兩個建議選項。 所有選項皆假設您已經建立一個可運作的 SAS (請參閱先決條件)。
必要條件
若要開始,請建立一個儲存體帳戶,然後為您的資產生 SAS。 您可以產生兩種類型的預存存取簽章:服務 SAS 或帳戶 SAS。 如需詳細資訊,請參閱共用存取簽章的類型。
產生 SAS 權杖之後,您可以將 ?sv=<SAS token>
附加至您的 URL 來存取 Blob 儲存體檔案。 此 URL 的格式如下:
https://<account name>.blob.core.windows.net/<container>/<file>?sv=<SAS token>
例如:
https://democdnstorage1.blob.core.windows.net/container1/demo.jpg?sv=2017-07-29&ss=b&srt=co&sp=r&se=2038-01-02T21:30:49Z&st=2018-01-02T13:30:49Z&spr=https&sig=QehoetQFWUEd1lhU5iOMGrHBmE727xYAbKJl5ohSiWI%3D
如需有關設定參數的詳細資訊,請參閱 SAS 參數考量和共用存取簽章參數。
選項 1:使用具有從 Azure 內容傳遞網路傳遞至 Blob 儲存體的 SAS
此選項是最簡單的選項,僅使用從 Azure 內容傳遞網路傳遞至原始伺服器的單一 SAS 權杖。
選取一個端點、選取 [快取規則],然後從 [查詢字串快取] 清單中,選取 [快取所有不重複的 URL]。
在儲存體帳戶上設定 SAS 之後,您必須搭配內容傳遞網路端點和原始伺服器 URL 來使用 SAS 權杖以存取檔案。
產生的內容傳遞網路端點 URL 會具有以下格式:
https://<endpoint hostname>.azureedge.net/<container>/<file>?sv=<SAS token>
例如:
https://demoendpoint.azureedge.net/container1/demo.jpg?sv=2017-07-29&ss=b&srt=c&sp=r&se=2027-12-19T17:35:58Z&st=2017-12-19T09:35:58Z&spr=https&sig=kquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D
使用快取規則或在原始伺服器新增
Cache-Control
標頭來微調快取持續時間。 由於 Azure 內容傳遞網路會將 SAS 權杖視為純查詢字串,因此最佳做法是,您應該設定一個在 SAS 到期時間或此時間之前到期的快取持續時間。 否則,如果檔案的快取持續時間比 SAS 的有效期長,便可能在過了 SAS 到期時間之後,從 Azure 內容傳遞網路原始伺服器存取該檔案。 如果發生這種情況,而您想要讓已快取的檔案變成無法存取,就必須對該檔案執行清除作業,以將它從快取中清除。 如需有關在 Azure 內容傳遞網路上設定快取持續時間的資訊,請參閱使用快取規則控制 Azure 內容傳遞網路快取行為。
選項 2:搭配重寫規則使用內容傳遞網路安性性權杖驗證
若要使用 Azure 內容傳遞網路安全性權杖驗證,您必須具有 來自 Edgio 的 Azure 進階 CDN 設定檔。 此選項是最安全且可自訂的選項。 用戶端存取權取決於您在安全性權杖上設定的安全性參數。 建立並設定安全性權杖後,所有內容傳遞網路端點 URL 上都需要它。 不過,由於 URL 重寫規則,內容傳遞網路端點上不需要 SAS 權杖。 如果 SAS 權杖之後變成無效,則 Azure 內容傳遞網路無法重新驗證原始伺服器中的內容。
建立 Azure 內容傳遞網路安全性權杖,然後藉由您的使用者可存取檔案所在內容傳遞網路端點和路徑的規則引擎來啟用權杖。
安全性權杖端點 URL 的格式如下:
https://<endpoint hostname>.azureedge.net/<container>/<file>?<security_token>
例如:
https://sasstoragedemo.azureedge.net/container1/demo.jpg?a4fbc3710fd3449a7c99986bkquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D
安全性權杖驗證的參數選項與 SAS 權杖的參數選項不同。 如果您在建立安全性權杖時選擇使用到期時間,請將其設定為與 SAS 權杖到期時間相同的值。 這麼做可確保到期時間是可預測的。
使用規則引擎來建立 URL 重寫規則,以啟用對容器中所有 Blob 的 SAS 權杖存取權。 新規則最多需要 4 小時的時間來傳播。
下列範例「URL 重寫」規則使用規則運算式模式,其中包含一個擷取群組和一個名為 sasstoragedemo 的端點:
來源:
(container1/.*)
目的地:
$1&sv=2017-07-29&ss=b&srt=c&sp=r&se=2027-12-19T17:35:58Z&st=2017-12-19T09:35:58Z&spr=https&sig=kquaXsAuCLXomN7R00b8CYM13UpDbAHcsRfGOW3Du1M%3D
如果您更新 SAS,請務必將 URL 重寫規則更新成使用新的 SAS 權杖。
SAS 參數考量
由於 Azure 內容傳遞網路看不到 SAS 參數,因此 Azure 內容傳遞網路無法根據這些參數來變更其傳遞行為。 所定義的參數限制僅適用於 Azure 內容傳遞網路對原始伺服器提出的要求,而不適用於用戶端對 Azure 內容傳遞網路提出的要求。 當您設定 SAS 參數時,請務必考量這項區別。 如果需要這些進階功能且您使用選項 2,請在 Azure 內容傳遞網路安全性權杖上設定適當的限制。
SAS 參數名稱 | 描述 |
---|---|
開始 | Azure 內容傳遞網路可以開始存取 Blob 檔案的時間。 由於時鐘誤差 (當時鐘訊號針對不同元件在不同時間抵達時) 的緣故,因此如果您想要讓資產立即可供使用,請選擇提早 15 分鐘的時間。 |
結束 | 之後 Azure 內容傳遞網路即無法再存取 Blob 檔案的時間。 Azure 內容傳遞網路上先前快取的檔案仍然可供存取。 若要控制檔案到期時間,請在 Azure 內容傳遞網路安全性權杖上設定適當的到期時間或清除資產。 |
允許的 IP 位址 | 選擇性。 如果您使用來自 Edgio 的 Azure CDN,您可以將此參數設定為來自 Edgio 的 Azure 內容傳遞網路 Edge Server IP 範圍 \(英文\) 中定義的範圍。 |
允許的通訊協定 | 針對使用帳戶 SAS 來提出的要求所允許的通訊協定。 建議使用 HTTPS 設定。 |
下一步
如需 SAS 的詳細資訊,請參閱下列文章:
如需設定權杖驗證的詳細資訊,請參閱使用權杖驗證來保護 Azure 內容傳遞網路資產。