问题
某个接口触发了AWS自带的托管规则(例如:SizeRestrictions_Body),现在需要放行这个接口。
解决思路
由于AWS自带的托管规则,会对接口流量打标签,所以,我们先将触发的托管规则Count,然后,在已有规则顺序最后面添加2条自定义规则:
- 放行规则:一条自定义规则是针对某个接口,并且拥有对应规则标签的接口,进行放行,这个规则顺序相比下一条托底规则优先级高一点(规则名例如:SizeRestrictions_Body_Allow);
- 托底规则:第二条自定义规则,则是对某个Count规则的托底规则,直接对所有带有对应规则标签的流量进行拦截,这个规则优先级比上一条自定义放行规则低一些(规则名例如:SizeRestrictions_Body_Block)。
解决
正则表达式模式接口集合
先创建一个接口白名单RE表达式规则集合,如下图:

这里面主要是放行的接口,如下图:

这里放行接口,主要是判断是以什么开头的URL,内容类似如下:
bash
^/api/upload1
^/api/upload2
^/api/upload3
修改指定规则为Count模式

添加自定义放行规则

这里主要就是两个匹配条件,第一个检查接口流量是否带有awswaf:managed:aws:core-rule-set:SizeRestrictions_Body,另外一个检查条件是否为正则表达式集合里面的放行接口。如果这个两个条件满足就放行当前接口流量。
添加自定义托底规则

这个托底规则设置的匹配条件,相对来说就简单多了,只要发现有对应规则标签的流量就拦截了。
设置自定义规则优先级顺序
- 放行规则
- 托底规则
一般这两个规则设置在已有规则最末尾就行了。注意放行规则一定是在托底规则前面。
总结
AWS WAF针对某个托管规则某个接口放行,基本上就是1个托管规则对应2个自定义规则(放行规则与托底规则)。