我想使用 AWS WAF 来限制对应用程序负载均衡器的直接访问。我还想使用 AWS WAF 来仅允许通过 Amazon API Gateway 直接访问。
解决方法
要使用 AWS WAF 限制,使流量不直接流向应用程序负载均衡器,而是通过 API Gateway,请按照以下步骤操作。
添加自定义 HTTP 标头
配置 API Gateway,在其发送给应用程序负载均衡器的请求中,添加带有机密值的自定义 HTTP 标头。
完成以下步骤:
- 打开 API Gateway 控制台。
- 在导航窗格中,选择 APIs。
- 选择您的 REST API。
- 在 Resources(资源)中,选择您的 HTTP 方法。例如,GET。
- 选择 Integration Request(集成请求)选项卡,然后选择 Edit(编辑)。
- 展开 URL request headers parameters(URL 请求标头参数)部分,然后选择 Add request headers parameter(添加请求标头参数)。
对于 Name(名称),输入标头的名称。例如,custom-header。
对于 Mapped from(映射自),输入机密标头值。
**注意:**确保将机密标头值用单引号括起来。例如,'secret-value'。
- 选择 Save(保存)。
创建保护包和规则
创建与应用程序负载均衡器关联的空 AWS WAF 保护包。然后,创建一条规则来阻止没有机密值自定义 HTTP 标头的请求。
注意:如果您已经有与应用程序负载均衡器关联的现有保护包,请继续创建规则。
创建保护包
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF。
- 选择 Resources & protection packs(资源和保护包)。
- 在 Protection packs(保护包)下,选择 Create protection pack(创建保护包)。
- 在 Tell us about your app(向我们介绍您的应用程序)下,选择一个或多个 App categories(应用程序类别)。
- 选择您的 App Focus(应用程序焦点)。
- 在 Select resources to protect(选择要保护的资源)下,选择 Add resources(添加资源)。
- 选择 Add regional resources(添加区域资源)。从列表中选择您的应用程序负载均衡器。
- 在 Choose protection pack(选择保护包)下,选择 **Build your own pack from all of the protections AWS WAF offers(从 AWS WAF 提供的所有保护中自建保护包)。**忽略右侧窗格。
- 在 Name and describe(名称和描述)下,输入保护包的名称。
- 选择 Create protection pack(创建保护包)。
创建规则
完成以下步骤:
- 打开 AWS WAF 控制台。
- 在导航窗格中,选择 AWS WAF。
- 选择 Resources & protection packs(资源和保护包)。
- 在 Protection packs(保护包)下,选择关联的保护包,然后选择 **Rules(规则)旁边的 View and edit(查看和编辑)。**这将打开右侧窗格。
- 在右侧窗格中,选择 Add rule(添加规则)。
选择 Custom rule(自定义规则),然后选择 Next(下一步)。
再次选择 Custom rule(自定义规则),然后选择 Next(下一步)。
- 要设置规则,请配置以下值:
对于 Action(操作),请选择 Block(阻止)。
对于 Rule Name(规则名称),输入规则名称。
对于 If a request(如果请求),选择 doesn't match the statement (NOT)(与语句不匹配 (NOT))。
对于检查 (Inspect),选择单个标头 (Single Header)。
对于 Header field name(标头字段名称),输入自定义标头名称。例如,custom-header。
对于匹配类型 (Match type),选择完全匹配字符串 (Exactly matches string)。
对于 String to match(要匹配的字符串),请输入机密标头值。
**注意:**确保将机密标头值用单引号括起来。例如,'secret-value'。
- 选择 Create rule(创建规则)。
- 如果保护包中有多个规则,请在右侧窗格中选择 Edit rule order(编辑规则顺序)。
通过将最近创建的规则置于最上面,将其移至最高优先级。
- 选择 Save rule order(保存规则顺序)。
相关信息
如何将 API Gateway REST API 与应用程序负载均衡器进行集成?