我想要限制对应用程序负载均衡器的直接访问,并仅允许通过 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 以添加自定义 HTTP 标头。然后,在与应用程序负载均衡器关联的 AWS WAF Web ACL 中创建一条规则。使用此规则来阻止不包含自定义 HTTP 标头密钥值的请求。
配置 CloudFront 以添加自定义 HTTP 标头
完成以下步骤:
- 打开 CloudFront 控制台。
- 在导航窗格中,选择 Distributions(分配),然后选择您的 distribution ID(分配 ID)。
- 选择 Origins(源)选项卡。
- 选择您的应用程序负载均衡器,然后选择 Edit(编辑)。
**注意:**如果您的应用程序负载均衡器不是源,请更新分配,然后将应用程序负载均衡器设置为源。
- 对于添加自定义标头,输入标头名称和值。
重要事项:****标头名称和值用作安全凭证,例如用户名和密码。记下这些值,以供此过程后期使用。
- 选择 Save changes(保存更改)。
在 Web ACL 中创建规则以阻止没有标头的请求
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 Resources & protection packs(资源和保护包)。
- 选择 Create protection pack(创建保护包)。
- 在 Tell us about your app(向我们介绍您的应用程序)下,对于 App category(应用程序类别),选择一个或多个应用程序类别。
- 对于 Traffic source(流量来源),选择应用程序使用的流量类型,例如 API、Web 或 Both API and Web(API 和 Web)。
- 在 Resources to protect(要保护的资源)下,选择 Add resources(添加资源)。
- 在 Global(全局)下,选择 Add Cloud front or Amplify resources(添加 CloudFront 或 Amplify 资源)。
- 从列表中选择您的分配。
- 在 Choose protection pack(选择保护包)下,选择 Build your own pack from all of the protections AWS WAF offers(从 AWS WAF 提供的所有保护中创建自己的保护包)。
- 在右侧窗格中,选择 Custom rule(自定义规则),然后选择 Next(下一步)。
再次选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 将规则 Action(操作)设置为 BLOCK(阻止)。
- 输入您的 Rule name(规则名称)。
- 对于 If a request(如果请求),展开下拉列表并选择 does not match the statement (NOT)(与语句不匹配 (NOT))。
- 对于 Inspect(检查),选择 Single header(单个标头)。
- 在 Statement(语句)下,完成以下步骤:
在标头字段名称中,输入您在 CloudFront 中创建的标头名称。
对于匹配类型 (Match type),选择完全匹配字符串 (Exactly matches string)。
对于要匹配的字符串,输入您在 CloudFront 中创建的值。
(可选)对于 Text transformation(文本转换),选择 None(无)。
- 选择 Create rule(创建规则)。
- (可选)要设置多规则优先级,请在右侧窗格中选择 Edit Rule Order(编辑规则顺序),然后将此规则设置为最高优先级。
- 选择 Save Rule Order(保存规则顺序)。
- 在 Name and description(名称和描述)下,输入保护包的名称。
- 单击 Create protection pack(创建保护包)。
配置安全组
要进一步限制流向应用程序负载均衡器的流量,请对应用程序负载均衡器中的安全组使用 AWS 托管的前缀列表。
要更新现有的安全组,请参阅 Update the associated security groups。要将您的应用程序负载均衡器与安全组关联,请完成下面的步骤:
- 打开 Amazon Elastic Compute Cloud (Amazon EC2) 控制台。
- 在导航窗格中的 Load Balancing(负载均衡)下,选择 Load Balancers(负载均衡器)。
- 选择您的应用程序负载均衡器,然后选择 Security(安全)。
- 选择要与应用程序负载均衡器关联的安全组。
- 要修改入站规则,请选择 Edit inbound rules(编辑入站规则),然后根据使用案例更新配置。
**注意:**如果有规则允许 0.0.0.0/0,则必须在删除现有规则之前添加新规则。
- 要允许特定协议,请选择该协议,然后选择 Custom(自定义)。
- 对于 Source type(源类型),选择 CloudFront,然后从 AWS 托管前缀列表中选择前缀。
- 选择 Save(保存)。
**注意:**最佳做法是允许只有您的应用程序负载均衡器使用的端口。
由于前缀列表权重,在默认设置下,每个安全组只能添加一次 CloudFront 托管前缀列表。要在同一安全组中添加另一条以 CloudFront 作为源类型的规则,请申请增加配额。或者,使用两个都引用 CloudFront 托管前缀列表的安全组。
相关信息
Limit access to your origins using the AWS managed prefix list for Amazon CloudFront(使用 Amazon CloudFront 的 AWS 托管前缀列表限制对源的访问权限)
我如何限制对我的 CloudFront 分配提供的 Web 内容的位置访问?