我想要限制对应用程序负载均衡器的直接访问,并仅允许通过 Amazon CloudFront 进行访问。
简短描述
要限制流向应用程序负载均衡器的直接流量,并仅允许通过 CloudFront 访问,请使用应用程序负载均衡器侦听器规则。如果已有 AWS WAF Web 访问控制列表(ACL),则可以使用 Web ACL 规则。要进一步限制对应用程序负载均衡器的访问,请配置安全组以限制对源的访问。为此,请使用 AWS 托管的前缀列表。最佳做法是使用其中一种解决方案并配置安全组。
解决方法
应用程序负载均衡器
要使用应用程序负载均衡器侦听器规则来限制流量,请参阅限制访问应用程序负载均衡器。
AWS WAF
**注意:**AWS WAF 费用基于以下因素:
- 创建的 Web ACL 数量
- 为每个 Web ACL 添加的规则数量
- 收到的 Web 请求数量
有关详细信息,请参阅 AWS WAF 定价。
要使用 AWS WAF 自定义 Web ACL 规则来限制流量,请完成下面的步骤:
- 配置 CloudFront,以在 CloudFront 发送给应用程序负载均衡器的请求中添加带有密钥值的自定义 HTTP 标头。
- 在与应用程序负载均衡器关联的 AWS WAF Web ACL 中创建一条规则。使用此规则来阻止不包含自定义 HTTP 标头密钥值的请求。
配置 CloudFront 以添加自定义 HTTP 标头
完成下面的步骤:
- 打开 CloudFront 控制台。
- 在导航窗格中,选择分配。
- 选择您的分配 ID。
- 选择源。
- 选择您的应用程序负载均衡器,然后选择编辑。
**注意:**如果您的应用程序负载均衡器不是源,请更新分配,然后将应用程序负载均衡器设置为源。
- 对于添加自定义标头,输入标头名称和值。
重要事项:****标头名称和值用作安全凭证,例如用户名和密码。将这些值复制到一个文本文件中,以便在此过程的后面使用。
- 选择保存更改。
在 Web ACL 中创建规则以阻止没有标头的请求
完成下面的步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于区域,选择您的应用程序负载均衡器所在的 AWS 区域。
**注意:**如果有一个与您的应用程序负载均衡器关联的现有 Web ACL,请跳至步骤 9。
- 选择创建 Web ACL,然后输入名称。
- 对于关联的 AWS 资源,选择您的应用程序负载均衡器,然后选择下一步。
- 对于不符合任何规则的请求的默认 Web ACL 操作,选择允许,然后选择下一步。
- 对于请求采样选项,选择启用采样请求,然后选择下一步。
- 选择创建 Web ACL。
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于区域,选择您的应用程序负载均衡器所在的区域。
- 选择与您的应用程序负载均衡器关联的 Web ACL。
- 在规则下,选择添加规则,然后选择添加我自己的规则和规则组。
- 对于名称,输入您的规则名称。
- 对于类型,选择常规规则。
- 对于如果请求,选择与语句不匹配(NOT)。
- 在语句 1 下配置下面的设置:
对于检查 (Inspect),选择单个标头 (Single Header)。
在标头字段名称中,输入您在 CloudFront 中创建的标头名称。
对于匹配类型 (Match type),选择完全匹配字符串 (Exactly matches string)。
对于要匹配的字符串,输入您在 CloudFront 中创建的值。
对于文本转换,选择无。
- 对于操作,选择阻止。
- 选择保存规则。
- 对于设置规则优先级,如果有多个规则,请将此规则设置为最高优先级。
- 选择保存。
安全组
要进一步限制流向应用程序负载均衡器的流量,请对应用程序负载均衡器中的安全组使用 AWS 托管的前缀列表。
要更新现有的安全组,请参阅 Update the associated security groups。要将您的应用程序负载均衡器与安全组关联,请完成下面的步骤:
- 打开 Amazon Elastic Compute Cloud(Amazon EC2)控制台。
- 选择负载均衡器,然后选择您的应用程序负载均衡器。
- 选择安全性。
- 选择要与应用程序负载均衡器关联的安全组。
- 要修改入站规则,请选择编辑入站规则,然后根据使用场景更新配置。
**注意:**如果有规则允许 0.0.0.0/0,则必须在删除现有规则之前添加新规则。
- 要允许特定协议,请选择该协议,然后选择自定义。
- 对于源类型,选择 CloudFront,然后从 AWS 托管前缀列表中选择前缀。
- 选择保存。
**注意:**最佳做法是仅允许您的应用程序负载均衡器使用的端口。
由于前缀列表权重,在默认设置下,每个安全组只能添加一次 CloudFront 托管前缀列表。要在同一安全组中添加另一条以 CloudFront 为源类型的规则,请申请增加配额。或者,使用两个都引用 CloudFront 托管前缀列表的安全组。
相关信息
安全组