

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

# 限制檔案存取
<a name="private-content-overview"></a>

您可以透過兩種方式控制使用者對私人內容的存取權：
+ [限制存取 CloudFront 快取中的檔案](#private-content-overview-edge-caches)。
+ 執行以下其中一項以在您的原始伺服器中限制存取檔案：
  + [為您的 Amazon S3 儲存貯體設定原始存取控制 (OAC)](private-content-restricting-access-to-s3.md)。
  + [為私有 HTTP 伺服器 (自訂原始伺服器) 設定自訂標頭。](#forward-custom-headers-restrict-access)

## 限制存取 CloudFront 快取中的檔案
<a name="private-content-overview-edge-caches"></a>

您可以設定 CloudFront，來請求使用者使用*已簽署的 URL* 或*已簽署的 Cookie*，以存取您的檔案。然後，您可以開發應用程式，以建立和分配已簽署的 URL 給驗證過的使用者，或傳送 `Set-Cookie` 標頭，這是經驗證之使用者設定的已簽署 Cookie。(若要提供一些使用者長期存取少量檔案，您還可以手動建立簽章的 URL。) 

當您建立已簽章的 URL 或已簽章的 Cookie，以控制存取您的檔案時，可以指定下列限制：
+ 結束日期和時間，之後 URL 不再有效。
+ (選用) URL 生效的日期和時間。
+ (選用) 可用於存取內容的電腦的 IP 位址或地址範圍。

使用公有-私有金鑰對中的私有金鑰對已簽署的 URL 或已簽署的 Cookie 的一部分進行雜湊和簽名。當有人使用已簽署的 URL 或已簽署的 Cookie 存取檔案時，CloudFront 會比較 URL 或 Cookie 的已簽署和未簽署部分。如果它們不相符， CloudFront 就不會提供檔案。

您必須使用 RSA 2048 或 ECDSA 256 私有金鑰來簽署 URL 或 Cookie。

## 限制對 Amazon S3 儲存貯體中檔案的存取
<a name="private-content-overview-s3"></a>

您可以選擇性地保護 Amazon S3 儲存貯體中的內容，以便使用者可以透過指定的 CloudFront 分佈，但無法使用 Amazon S3 URL 直接進行存取。這可防止某些人繞過 CloudFront 並利用 Amazon S3 URL 來取得您想要限制其存取的內容。使用簽章 URL 不需要此步驟，但我們建議執行此作業。

若要請求使用者透過 CloudFront URL 存取您的內容，請執行下列任務：
+ 授予 CloudFront *原始存取控制*許可，以讀取 S3 儲存貯體中的檔案。
+ 建立原始存取控制，並將其與您的 CloudFront 分佈產生關聯。
+ 移除其他人使用 Amazon S3 URL 讀取檔案的許可。

如需詳細資訊，請參閱 [限制對 Amazon S3 原始伺服器的存取](private-content-restricting-access-to-s3.md) 或 [限制對 Amazon S3 多區域存取點原始伺服器的存取](private-content-restricting-access-to-s3-mrap.md) 。

## 在自訂原始伺服器上限制存取檔案
<a name="forward-custom-headers-restrict-access"></a>

如果您使用自訂原始伺服器，您可以選擇性設定自訂標頭來限制存取。若要使 CloudFront 從自訂原始伺服器取得您的檔案，必須使用標準 HTTP (或 HTTPS) 請求來提供 CloudFront 檔案的存取權限限。然而透過自訂標頭，您可以限制存取內容，讓使用者只能透過 CloudFront，而無法直接進行存取。使用簽章 URL 不需要此步驟，但我們建議執行此作業。

若要請求使用者透過 CloudFront 存取內容，請在您的 CloudFront 分佈中變更下列設定：

**原始伺服器自訂標頭**  
設定 CloudFront 以將自訂標頭轉送至原始伺服器 請參閱 [設定 CloudFront 以將自訂標頭新增到原始伺服器請求](add-origin-custom-headers.md#add-origin-custom-headers-configure)。

**檢視器通訊協定政策**  
設定您的分佈以請求檢視器使用 HTTPS 來存取 CloudFront。請參閱 [檢視器通訊協定政策](DownloadDistValuesCacheBehavior.md#DownloadDistValuesViewerProtocolPolicy)。

**原始伺服器通訊協定政策**  
將分佈設定為請求 CloudFront 使用與檢視器相同的協定將請求轉傳到原始伺服器。請參閱 [通訊協定 (僅限自訂原始伺服器)](DownloadDistValuesOrigin.md#DownloadDistValuesOriginProtocolPolicy)。

完成這些變更之後，請在自訂原始伺服器上更新應用程式，以僅接受包含您已設定 CloudFront 要傳送之自訂標頭的請求。

**檢視器通訊協定政策**與**原始伺服器通訊協定政策**的組合可確保自訂標頭在傳輸過程中加密。但是，我們建議您定期執行以下任務來輪換 CloudFront 轉傳到您原始伺服器的自訂標頭：

1. 更新您的 CloudFront 分佈以開始將新標頭轉送至您的自訂原始伺服器。

1. 更新您的應用程式以接受新標頭，以確認請求來自 CloudFront。

1. 當檢視器請求不再包括要替換的標頭時，請更新應用程式至不再接受的舊標頭，以確認請求來自 CloudFront。