Amazon CloudFront
开发人员指南 (API 版本 2016-09-29)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

提供私有内容概述

可采用两种方式控制用户对私有内容的访问,如下图所示:

  1. 限制对 CloudFront 边缘缓存中的文件的访问

  2. 通过执行下列操作之一,限制对您源中文件的访问:

    • 为您的 Amazon S3 存储桶(除非您已将其配置为网站终端节点)设置源访问身份 (OAI)

    • 为私有 HTTP 服务器配置自定义标头或者将 Amazon S3 存储桶配置作为网站终端节点


				在 CloudFront 中限制文件访问的两种方式

限制对 CloudFront 边缘缓存中的文件的访问

您可以将 CloudFront 配置为要求用户使用签名 URL签名 Cookie 访问您的文件。然后开发应用程序,以创建签名 URL 并将其分发给通过身份验证的用户,或者为通过身份验证的用户发送在查看器上设置签名 Cookie 的 Set-Cookie 标头。(要为少数用户提供长期访问有限数量的文件的权限,还可以手动创建签名 URL。)

创建签名 URL 或签名 Cookie 以控制对您的文件的访问时,可以指定以下限制:

  • 结束日期和时间,在此之后,URL 不再有效。

  • (可选)URL 生效的日期和时间。

  • (可选)可用于访问您的内容的 IP 地址或计算机的地址范围。

签名 URL 或签名 Cookie 的其中一部分使用公有/私有密钥对中的私有密钥进行哈希处理和签名。当某人使用签名 URL 或签名 Cookie 访问文件时,CloudFront 将比较 URL 或 Cookie 的已签名部分和未签名部分。如果它们不匹配,CloudFront 则不提供文件。

您必须使用 RSA-SHA1 来签署 URL 或 Cookie。 CloudFront 不接受其他算法。

限制对 Amazon S3 存储桶中的文件的访问

您可以选择保护 Amazon S3 存储桶中的内容,以便用户可以通过 CloudFront 访问内容,但无法使用 Amazon S3 URL 直接访问内容。这可防止其他人绕过 CloudFront 并使用 Amazon S3 URL 访问您希望限制访问的内容。虽然此步骤未要求使用签名 URL,但我们建议使用。请注意,此选项仅当您尚未将 Amazon S3 存储桶设置为网站终端节点时才可用。

如需要求用户通过 CloudFront URL 访问内容,请执行以下任务:

  • 创建一个称为源访问身份的特殊 CloudFront 用户。

  • 为源访问身份授予读取存储桶中的文件的权限。

  • 删除任何其他人使用 Amazon S3 URL 读取这些文件的权限。

有关更多信息,请参阅 使用源访问身份限制对 Amazon S3 内容的访问

在自定义源上限制对文件的访问

如果您使用自定义源,则可以选择设置自定义标头来限制访问。要使 CloudFront 从自定义源获取文件,文件必须可以公开访问。但是,使用自定义标头您可以限制对内容的访问,使得用户只能通过 CloudFront 进行访问而无法直接访问。虽然此步骤未要求使用签名 URL,但我们建议使用。

如需要求用户通过 CloudFront 访问内容,请在 CloudFront 分配中更改以下设置:

源自定义标头

配置 CloudFront 以将自定义标头转发到源。请参阅 将 CloudFront 配置为将自定义标头转发到源

查看器协议策略

将分配配置为要求查看器使用 HTTPS 访问 CloudFront。请参阅 查看器协议策略

源协议策略

将分配配置为要求 CloudFront 与查看器使用相同协议来向源转发请求。请参阅源协议策略

进行了这些更改之后,在自定义源上更新应用程序以仅接受包含这些标头的请求。

Viewer Protocol PolicyOrigin Protocol Policy 结合使用可确保在查看器与源之间对自定义标头加密。但是,我们建议您定期执行以下任务来轮换 CloudFront 转发到源的自定义标头:

  1. 更新 CloudFront 分配,开始将新标头转发到自定义源。

  2. 更新应用程序以接受新标头,从而确认请求来自 CloudFront。

  3. 当查看器请求不再包含您要替换的标头时,请更新应用程序以便不再接受旧标头,从而确认请求来自 CloudFront。