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

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

限制您的內容的地理分佈

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

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

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

使用 CloudFront 地理限制

當使用者請求內容時,無論使用者身在何處,CloudFront 通常會為請求的內容提供服務。如果您需要防止特定國家/區域的使用者存取您的內容,則可以使用 CloudFront 地理限制功能執行以下其中一項:

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

  • 如果使用者所位於的國家/地區是在被禁國家/地區封鎖清單中,則防止他們存取您的內容。

例如,如果請求來自國家/區域,對於著作權考量,您無權分發內容,則可以使用 CloudFront 地理限制來封鎖請求。

注意

CloudFront 透過使用第三方的 GeoIP 資料庫決定使用者的位置。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 狀態碼) 的值為 403 的日誌項目來識別 CloudFront 拒絕該請求。不過,如果只使用存取日誌,您無法區分 CloudFront 根據使用者所在位置而拒絕的請求,和 CloudFront 因為使用者不具有存取檔案的許可 (有其他的理由) 而拒絕的請求。如果您有第三方地理位置服務,例如 Digital Element 或 MaxMind,則可以根據存取日誌中 c-ip (用戶端 IP) 列中的 IP 地址來識別請求的位置。如需 CloudFront 存取日誌的詳細資訊,請參閱設定和使用標準日誌 (存取日誌)

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

將地理限制功能新增至您的 CloudFront Web 分發 (主控台)

  1. 請登入 AWS 管理主控台,開啟位於 https://console.aws.amazon.com/cloudfront/ 的 CloudFront 主控台。

  2. 選取您要更新的分佈。

  3. Distribution Settings (分佈設定) 窗格中,選擇 Restrictions (限制) 索引標籤。

  4. 選擇 Edit (編輯)。

  5. 輸入適用的值。如需更多詳細資訊,請參閱 限制

  6. 選擇 Yes, Edit (是,編輯)

使用第三方地理位置服務。

CloudFront 地理限制功能可讓您控制內容在國家/區域層級的分發,以便您在特定的 Web 分發中分發所有檔案。如果您對可以分發內容的位置,設有地理上的限制,而且這些限制不是根據國家/區域的邊界,或者,如果您想只針對透過 CloudFront 分發的某些檔案,限制對這些檔案的存取,可以將 CloudFront 結合第三方的地理位置服務一起使用。這可讓您不僅可以根據國家/地區控制對內容的存取,還可以根據城市、郵遞區號,甚至是緯度和經度來控制對內容的存取。

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

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

使用地理位置限制對 CloudFront 分發中檔案的存取

  1. 使用地理位置服務取得帳戶。

  2. 將您的內容上傳到 Amazon Simple Storage Service (S3) 儲存貯體。如需詳細資訊,請參閱 Amazon S3 說明文件

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

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

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

    2. 評估來自地理位置服務傳回的值,以判斷使用者是否位於您希望 CloudFront 分發內容的位置。

    3. 如果您想要將內容分發至使用者的位置,請為您的 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 地址詐騙。