缘起
前段时间升级了一下公司的 SonarQube,版本升到了 2026 年 7 月版。
这个 SonarQube 是通过 AWS 的公网 ALB 对外提供服务的。既然放在公网,虽然不是谁都能登录,但让它就这么裸奔着总觉得不太合适,于是我在 ALB 前面加了一层 AWS WAF。
WAF 里启用了几组 AWS Managed Rules,包括:
AWSManagedRulesCommonRuleSet
AWSManagedRulesKnownBadInputsRuleSet
AWSManagedRulesSQLiRuleSet
AWSManagedRulesAmazonIpReputationList
另外还加了一个按 IP 限速的规则。
SonarScanner 上传的数据比较大,所以当时还专门对 SizeRestrictions_BODY、CrossSiteScripting_BODY 和 SQLi_BODY 做了放行或者只计数处理。
过了几天,我又给 SonarQube 加了一层 IP 白名单:只有办公室出口 IP 和 GitHub Actions 的公网 IP 才能访问。
为了不影响同一个 ALB 后面将来可能挂的其他服务,这个白名单不是直接加在 ALB 的 Security Group 上,而是在 WAF 里根据 HTTP Host 匹配,只限制 SonarQube 的域名。
看起来考虑得还挺周全。
然后,坑就挖好了。