我想使用 AWS WAF 来限制对应用程序负载均衡器的直接访问。我还想使用 AWS WAF 来仅允许通过 Amazon API Gateway 直接访问。
解决方法
要使用 AWS WAF 限制,使流量不直接流向应用程序负载均衡器,而是通过 API Gateway,请按照以下步骤操作。
添加自定义 HTTP 标头
配置 API Gateway,在其发送给应用程序负载均衡器的请求中,添加带有机密值的自定义 HTTP 标头。
完成以下步骤:
- 打开 API Gateway 控制台。
- 在导航窗格中选择 API,然后选择您的 REST API。
- 在资源 (Resources) 中,选择您的 HTTP 方法,例如: GET。
- 选择集成请求 (Integration Request) 选项卡,然后选择编辑 (Edit)。
- 展开 URL 请求标头参数 (URL request headers parameters) 部分,然后选择添加请求标头参数 (Add request headers parameter)。
- 对于名称 (Name),输入表头的名称,例如:custom-header。
- 对于映射自 (Mapped from),输入机密标头值,例如:'secret-value'。
**注意:**必须用单引号将该值括起来。
- 选择保存 (Save)。
创建 Web ACL 和规则
创建与应用程序负载均衡器关联的空 AWS WAF Web ACL。然后,创建一条规则来阻止没有机密值自定义 HTTP 标头的请求。
注意:如果您已经有与应用程序负载均衡器关联的现有 Web ACL,请继续创建规则 (Create a rule)。
完成以下步骤以创建 AWS WAF Web ACL:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACLs,然后选择创建 Web ACL (Create web ACL)。
- 对于区域 (Region),选择您的应用程序负载均衡器所在的 AWS 区域。
- 对于名称 (Name),输入一个名称。
- 对于关联的 AWS 资源 (Associated AWS resources),选择您的应用程序负载均衡器,然后选择下一步 (Next)。
- 对于添加规则和规则组 (Add rules and rule groups),接受默认值。
- 选择下一步 (Next),然后再次选择下一步 (Next)。
- 对于请求采样选项 (Request sampling options),选择启用采样请求 (Enable sampled requests),然后选择下一步 (Next)。
- 查看 Web ACL 配置。如果它符合您的规范,则选择创建 Web ACL (Create web ACL)。
完成以下步骤以创建规则:
- 打开 AWS WAF 控制台。
- 在导航窗格中的 AWS WAF 下,选择 Web ACL。
- 对于区域 (Region),选择您的应用程序负载均衡器所在的 AWS 区域。
- 选择关联的 Web ACL。
- 选择规则 (Rules),然后选择添加规则、添加我自己的规则和规则组 (Add Rules, Add my own rules and rule groups)。
- 对于名称 (Name),输入规则名称,然后选择常规规则 (Regular Rule)。
- 对于如果请求 (If a request),选择与语句不匹配 (NOT) (doesn't match the statement (NOT))。
- 在语句 1 中,执行以下操作:
对于检查 (Inspect),选择单个标头 (Single Header)。
在标头字段名称 (Header field name) 中,输入自定义标头名称,例如:custom-header。
对于匹配类型 (Match type),选择完全匹配字符串 (Exactly matches string)。
对于要匹配的字符串 (String to match),请输入机密标头值,例如: 'secret-value'。
**注意:**务必将值括在单引号中。
- 对于操作 (Action),选择阻止 (Block)。
- 选择保存规则 (Save rule)。
- 对于设置规则优先级 (Set rule priority),将规则设置为最高优先级。
- 选择保存 (Save)。
相关信息
如何将 API Gateway REST API 与应用程序负载均衡器进行集成?