View a markdown version of this page

限制檔案存取 - Amazon CloudFront

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

限制檔案存取

您可以透過兩種方式控制使用者對私人內容的存取權:

限制存取 CloudFront 快取中的檔案

您可以設定 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 儲存貯體中檔案的存取

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

若要請求使用者透過 CloudFront URL 存取您的內容,請執行下列任務:

  • 授予 CloudFront 原始存取控制許可,以讀取 S3 儲存貯體中的檔案。

  • 建立原始存取控制,並將其與您的 CloudFront 分佈產生關聯。

  • 移除其他人使用 Amazon S3 URL 讀取檔案的許可。

如需詳細資訊,請參閱 限制對 Amazon S3 原始伺服器的存取限制對 Amazon S3 多區域存取點原始伺服器的存取

在自訂原始伺服器上限制存取檔案

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

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

原始伺服器自訂標頭

設定 CloudFront 以將自訂標頭轉送至原始伺服器 請參閱 設定 CloudFront 以將自訂標頭新增到原始伺服器請求

檢視器通訊協定政策

設定您的分佈以請求檢視器使用 HTTPS 來存取 CloudFront。請參閱 檢視器通訊協定政策

原始伺服器通訊協定政策

將分佈設定為請求 CloudFront 使用與檢視器相同的協定將請求轉傳到原始伺服器。請參閱 通訊協定 (僅限自訂原始伺服器)

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

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

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

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

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