限制內容的地理分佈 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

限制內容的地理分佈

您可以使用地理限制 (有時稱為地理區域封鎖),防止特定地理位置的使用者存取您透過 Amazon 分發發 CloudFront 佈的內容。若要使用地理限制,您有兩個選擇:

  • 使用地 CloudFront 理限制功能。使用此選項可限制對與分佈相關聯的所有檔案的存取,並限制在國家/地區層級的存取。

  • 使用第三方地理位置服務。使用此選項來針對與分佈相關聯檔案的子集作限制存取,或在比國家/地區層級更細的層級作限制存取。

使用 CloudFront 地理限制

當用戶請求您的內容時,無論用戶位於何處, CloudFront 通常都會提供所請求的內容。如果您需要防止特定國家/地區的使用者存取您的內容,您可以使用 CloudFront 地理限制功能執行下列其中一項作業:

  • 只有當使用者位於您允許清單上其中一個核准國家/地區時,才能存取您的內容。

  • 如果使用者位於您封鎖清單上的被禁國家/地區,則阻止其存取您的內容。

例如,如果要求來自您未獲授權散佈內容的國家/地區,您可以使用 CloudFront 地理限制來封鎖要求。

注意

CloudFront 使用協力廠商資料庫來決定使用者的位置。IP 地址與國家/地區之間的映射的準確性因區域而異。根據最近的測試,整總體準確性為 99.8%。如果 CloudFront 無法判斷使用者的位置,請 CloudFront 提供使用者要求的內容。

以下是地理限制的運作方式:

  1. 假設您有權僅在列支敦斯登分配您的內容。您可以更新您的CloudFront 發行版,以新增僅包含列支敦士登的允許清單。(或者,您可以新增包含除了列支敦斯登以外的每個國家/地區的封鎖清單。)

  2. 摩納哥的使用者要求您的內容,並將要求DNS路由至義大利米蘭的 CloudFront 節點。

  3. 米蘭的邊緣節點會查詢您的分佈,並確定摩納哥的使用者沒有下載您的內容的許可。

  4. CloudFront 將HTTP狀態碼傳回403 (Forbidden)給使用者。

您可以選擇配置 CloudFront 為將自定義錯誤消息返回給用戶,並且可以指定 CloudFront 要為請求的文件緩存錯誤響應的時間長度。預設值為 10 秒。如需詳細資訊,請參閱為特定HTTP狀態碼創建自定義錯誤頁面

地理限制適用於整個分佈。如果您需要對部分內容套用一項限制,而對內容的另一部分套用不同的限制 (或無限制),您必須建立個別的 CloudFront 散佈或使用第三方地理定位服務

如果您啟用 CloudFront 標準記錄檔 (存取記錄),您可以搜尋值 sc-status (HTTP狀態碼) 所在的記錄項目,以識別 CloudFront 拒絕的要求403。不過,只使用標準記錄檔時,您無法根據使用者的位置來區分 CloudFront拒絕的要求與 CloudFront 拒絕的要求,因為使用者因為其他原因沒有存取檔案的權限。如果您有第三方地理位置服務 (例如 Digital Element) MaxMind,或者,您可以根據存取記錄中c-ip(用戶端 IP)欄中的 IP 位址來識別請求的位置。如需 CloudFront 標準記錄檔的詳細資訊,請參閱配置和使用標準日誌(訪問日誌)

下列程序說明如何使用 CloudFront 主控台將地理限制新增至現有發行版。如需有關如何使用主控台建立分佈的詳細資訊,請參閱建立分發

若要將地理限制新增至您的 CloudFront Web 分發 (主控台)
  1. 登入 AWS Management Console 並開啟 CloudFront 主控台,位於https://console.aws.amazon.com/cloudfront/v4/home

  2. 在導覽窗格中,選擇分佈,然後選擇您要更新的分佈。

  3. 選擇安全性分頁,然後選擇地理限制

  4. 選擇編輯

  5. 選擇 Allow list (允許清單) 建立允許的國家/地區清單,或 Block list (封鎖清單) 建立封鎖的國家/地區清單。

  6. 將所需的國家/地區新增至清單中,然後選擇 Save changes (儲存變更)

使用第三方地理定位服務

使用 CloudFront 地理限制功能,您可以在國家/地區層級控制您使用指定網頁發佈的所有檔案的內容發佈。如果您有地理限制不符合國家/地區界限的使用案例,或者如果您想要限制只存取您透過特定發行版所提供的某些檔案,您可以結CloudFront 合第三方地理定位服務。這使您不僅可以根據國家/地區,還可以根據城市ZIP,郵政編碼甚至緯度和經度來控制內容。

當您使用第三方地理定位服務時,我們建議您使用 CloudFront signedURLs,您可以使用它指定到期日期和時間,在此日期之後不再有效。URL此外,我們建議您使用 Amazon S3 儲存貯體做為來源,因為之後您可以使用 CloudFront 來源存取控制來防止使用者直接從來源存取您的內容。如需有關已簽署URLs和來源存取控制的詳細資訊,請參閱使用已簽署URLs和簽署的 Cookie 提供私人內容

以下步驟解釋如何使用第三方地理位置服務來控制對檔案的存取。

使用協力廠商地理定位服務來限制對發佈中檔案的存取 CloudFront
  1. 使用地理位置服務取得帳戶。

  2. 將內容上傳至 Amazon S3 儲存貯體。

  3. 設定 Amazon CloudFront 和 Amazon S3 以提供私有內容。如需詳細資訊,請參閱使用已簽署URLs和簽署的 Cookie 提供私人內容

  4. 寫入您的 Web 應用程式,以執行下列動作:

    • 將每個使用者請求的 IP 地址傳送到地理位置服務。

    • 評估地理位置服務的傳回值,以判斷使用者是否位於您 CloudFront 要發佈內容的位置。

    • 如果您想要將內容發佈到使用者的位置,請為您的內容產生已簽署URL的 CloudFront 內容。如果您不想將內容發佈到該位置,請將HTTP狀態碼傳回403 (Forbidden)給使用者。或者,您可以配置 CloudFront 為返回自定義錯誤消息。如需詳細資訊,請參閱為特定HTTP狀態碼創建自定義錯誤頁面

    如需詳細資訊,請參閱您所使用的地理位置服務的文件。

您可以使用 Web 伺服器變動變數來獲得瀏覽您的網站的使用者的 IP 位址。請注意以下警告:

  • 如果您的 Web 伺服器透過負載平衡器無法連線至網際網路,則可以使用 Web 伺服器變數來獲得遠端 IP 地址。不過,此 IP 地址不一定是使用者的 IP 地址。它也可以是代理伺服器的 IP 地址,取決於使用者如何連接到網際網路。

  • 如果您的 Web 伺服器透過負載平衡器連線至網際網路,則 Web 伺服器變數可能包含負載平衡器的 IP 地址,而非使用者的 IP 地址。在此設定中,建議您使用X-Forwarded-ForHTTP標頭中的最後一個 IP 位址。此標頭通常包含多個 IP 地址,其中大部分用於代理或負載平衡器。清單中的最後一個 IP 地址最有可能與使用者的地理位置相關聯。

如果您的 Web 伺服器無法連接到負載平衡器,我們建議您使用 Web 伺服器變數而非 X-Forwarded-For 標頭,以避免 IP 地址詐騙。