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

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

限制內容的地理分佈

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

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

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

使用 CloudFront 地理限制

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

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

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

例如,如果請求來自您無權分發內容的國家,您可以使用 CloudFront 地理限制來封鎖請求。

注意

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

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

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

  2. Monaco 中的使用者請求您的內容,並將請求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 地理限制功能,您可以控制使用指定 Web 分發分發的所有檔案在國家/地區層級的內容分發。如果您有地理限制的使用案例,而這些限制未遵循國家/地區界限,或者如果您只想要限制存取您由指定分發提供的某些檔案,則可以CloudFront 與第三方地理位置服務結合。這不僅可以根據國家/地區,也可以根據城市ZIP、 或 郵遞區號,甚至是緯度和經度來控制您的內容。

當您使用第三方地理位置服務時,建議您使用 CloudFront 已簽署的 URLs,您可以指定到期日期和時間,之後 即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-For HTTP 標頭中的最後一個 IP 地址。此標頭通常包含多個 IP 地址,其中大部分用於代理或負載平衡器。清單中的最後一個 IP 地址最有可能與使用者的地理位置相關聯。

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