限制您內容的地理分佈 - 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 合第三方地理定位服務。這讓您不僅可以根據國家/地區控制對內容的存取,還可以根據城市、郵遞區號,甚至是緯度和經度來控制對內容的存取。

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

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

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

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

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

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

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

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

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

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

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

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

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

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