通过 Amazon WAF 保护 CloudFront 分配的常见使用案例 - Amazon WAF、Amazon Firewall Manager、Amazon Shield Advanced 和 Amazon Shield 网络安全分析器
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

介绍 Amazon WAF 的全新控制台体验

现在,您可以使用更新后的体验访问控制台中任意位置的 Amazon WAF 功能。有关更多详细信息,请参阅 使用更新的控制台体验

通过 Amazon WAF 保护 CloudFront 分配的常见使用案例

以下 Amazon WAF 功能适用于所有 CloudFront 分配。以下每个功能场景均列出多租户分配的注意事项。

将 Amazon WAF 与 CloudFront 自定义错误页面结合使用

默认情况下,当 Amazon WAF 根据您指定的标准阻止网络请求时,它会向 CloudFront 返回 HTTP 状态代码 403 (Forbidden),而 CloudFront 会将该状态代码返回给查看器。然后,查看器显示简要且采用稀疏格式的默认消息,如下所示:

Forbidden: You don't have permission to access /myfilename.html on this server.

您可以通过定义自定义响应来覆盖您的 Amazon WAF 保护包(web ACL)规则中的此行为。有关使用 Amazon WAF 规则自定义响应行为的更多信息,请参阅 发送 Block 操作的自定义响应

注意

您使用 Amazon WAF 规则自定义的响应优先于您在 CloudFront 自定义错误页面中定义的任何响应规范。

如果您希望通过 CloudFront 显示自定义错误消息,可能与您网站其他部分使用相同的格式设置,则您可以配置 CloudFront 向查看器返回包含自定义错误消息的对象(例如,HTML 文件)。

注意

CloudFront 无法区分由您的源返回的 HTTP 状态代码 403 与请求被阻止时由 Amazon WAF 返回的 HTTP 状态代码 403。这意味着,您无法根据 HTTP 状态代码 403 的不同原因返回不同的自定义错误页面。

有关自定义错误页面的更多信息,请参阅 Amazon CloudFront 开发人员指南中的sheng'c生成自定义错误响应

多租户分配的自定义错误页面

对于 CloudFront 多租户分配,可通过以下方式配置自定义错误页面:

  • 在多租户级别:这些设置适用于使用多租户分配模板的所有租户分配

  • 通过 Amazon WAF 规则:在保护包(web ACL)中定义的自定义响应,优先于多租户分配和租户级自定义错误页面

对于在您自己的 HTTP 服务器上运行的应用程序,将 Amazon WAF 与 CloudFront 结合使用

将 Amazon WAF 与 CloudFront 结合使用时,您可以保护运行在任意 HTTP webServer 上的应用程序,不论这是在 Amazon Elastic Compute Cloud (Amazon EC2) 中运行的 webServer 还是您私下管理的 webServer。您还可以将 CloudFront 配置为要求在 CloudFront 与您自己的 webServer 之间以及在查看器与 CloudFront 之间使用 HTTPS。

要求在 CloudFront 和您自己的 webServer 之间使用 HTTPS

如需要求在 CloudFront 和您自己的 webServer 之间使用 HTTPS,您可以使用 CloudFront 自定义源功能,并为特定源配置源协议策略源域名设置。在您的 CloudFront 配置中,可以指定服务器的 DNS 名称,以及在从源中提取对象时希望 CloudFront 使用的端口和协议。您还应确保自定义原始服务器上的 SSL/TLS 证书与您已配置的源域名匹配。当您在 Amazon 之外使用自己的 HTTP webserver 时,您必须使用由信任的第三方证书颁发机构(CA)(例如,Comodo、DigiCert 或 Symantec)签署的证书。有关要求在 CloudFront 和您自己的 webServer 之间使用 HTTPS 进行通信的更多信息,请参阅 Amazon CloudFront 开发人员指南中的要求在 CloudFront 和自定义源站之间使用 HTTPS 进行通信

要求在查看器和 CloudFront 之间使用 HTTPS

要求在查看器和 CloudFront 之间使用 HTTPS,您可以为 CloudFront 分配中的一个或多个缓存行为更改查看器协议策略。有关在查看器和 CloudFront 之间使用 HTTPS 的更多信息,请参阅Amazon CloudFront 开发人员指南中的要求在查看者和 CloudFront 之间使用 HTTPS 进行通信。您还可以自带 SSL 证书,这样查看器可以使用您自己的域名通过 HTTPS 连接到 CloudFront 分配,例如 https://www.mysite.com。有关更多信息,请参阅Amazon CloudFront 开发人员指南中的配置备用域名和 HTTPS

对于多租户分配,HTTP 方法配置遵循此层次结构:

  • 模板级别的设置定义允许所有租户分配使用的基准 HTTP 方法

  • 租户分配可覆盖这些设置:

    • 允许比多租户分配更少的方法(使用 Amazon WAF 规则阻止其他方法)

    • 如果将多租户分配配置为支持更多方法,则允许使用更多方法

  • 无论 CloudFront 配置如何,多租户分配和租户级别的 Amazon WAF 规则均可进一步限制 HTTP 方法

选择 CloudFront 响应的 HTTP 方法

您在创建 Amazon CloudFront web 分配时,会选择希望 CloudFront 处理并转发给源的 HTTP 方法。可从以下选项中进行选择:

  • GETHEAD:只能使用 CloudFront 获取源中的对象或获取对象标头。

  • GETHEADOPTIONS:只能使用 CloudFront 从源获取对象、获取对象标头或检索原始服务器支持的选项列表。

  • GETHEADOPTIONSPUTPOSTPATCHDELETE:可以使用 CloudFront 获取、添加、更新和删除对象,并获取对象标头。此外,您可以执行其他 POST 操作,例如从 web 表格提交数据。

您还可以使用 Amazon WAF 字节匹配规则语句来允许或阻止基于 HTTP 方法的请求,如 字符串匹配规则语句 中所述。如果要使用 CloudFront 支持的方法组合(如 GETHEAD),则不必将 Amazon WAF 配置为阻止使用其他方法的请求。如果希望允许 CloudFront 不支持的方法组合(例如,GETHEADPOST),则可将 CloudFront 配置为响应所有方法,然后使用 Amazon WAF 阻止使用其他方法的请求。

有关选择 CloudFront 响应的方法的更多信息,请参阅 Amazon CloudFront 开发人员指南主题您在创建或更新 Web 分配时指定的值中的允许的 HTTP 方法

多租户分配中允许的 HTTP 方法配置

对于多租户分配,默认情况下,在多租户分配级别设置的 HTTP 方法配置适用于所有租户分配。如有需要,租户分配可覆盖这些设置。

  • 如果要使用 CloudFront 支持的方法组合(如 GETHEAD),则无需将 Amazon WAF 配置为阻止使用其他方法的请求。

  • 如果希望默认允许 CloudFront 不支持的方法组合(例如,GETHEADPOST),则可将 CloudFront 配置为响应所有方法,然后使用 Amazon WAF 阻止使用其他方法的请求。

在多租户分配中实施安全标头时,请考虑以下几点:

  • 模板级别的安全标头为所有租户分配提供基准保护

  • 租户分配可以:

    • 添加未在多租户分配中定义的新安全标头

    • 修改租户专用标头的值

    • 无法移除或覆盖在多租户分配级别设置的安全标头

  • 考虑使用多租户分配级别的标头实现应适用于所有租户的关键安全控制

日志记录注意事项

标准分配和多租户分配均支持 Amazon WAF 日志记录,但在日志的结构和管理方式上存在重大区别:

日志记录比较
标准分配 多租户分配
每个分配一个日志配置 模板级别和租户级别的日志记录选项
标准日志字段 其他租户标识符字段
每个分配单个目标 可用于多租户分配和租户日志的单独目标

其他资源

  • 如需了解有关多租户分配的更多信息,请参阅《Amazon CloudFront 开发人员指南》中的配置分配

  • 如需了解有关 Amazon WAF 与 CloudFront 配合使用的更多信息,请参阅《Amazon CloudFront 开发人员指南》中的使用 Amazon WAF 保护

  • 如需了解有关 Amazon WAF 日志的更多信息,请参阅 保护包(web ACL)流量的日志字段