ALB+Fargate架构下如何按URL路径配置访问来源限制
答案
这个需求完全可以实现,但单独靠ALB Resource Policy或者SecurityGroup都没法直接达成效果,需要结合ALB的7层路径转发能力做配置,具体说明如下:
为什么单独用ALB Resource Policy不行
ALB的Resource Policy是资源级别的权限控制,生效维度是整个ALB实例,不支持和7层路径转发规则做联动,你没法给同个ALB下的不同路径配置差异化的访问权限:如果配了只允许EventBridge访问的Resource Policy,整个ALB的所有路径都会对公网拦截,满足不了其他路径公网开放的要求。
为什么单独用SecurityGroup不行
SecurityGroup工作在传输层,只能基于源IP、端口、协议做流量拦截,根本识别不了HTTP请求的路径信息,没法区分流量是访问/api/还是其他路径。另外EventBridge公网调用的出口IP是动态变化的AWS服务地址段,既没法维护准确的白名单,直接放通整个段也会导致同区域其他AWS用户的EventBridge也能访问你的接口,安全风险很高。
可落地的实现方案
你可以根据自己的安全要求二选一:
方案1:ALB路径规则+自定义鉴权头(最快落地,无额外成本)
配置步骤非常简单:
- 生成一个足够长的随机字符串作为专属鉴权密钥,比如32位以上的大小写字母+数字组合。
- 在EventBridge的API Destination配置里,给所有发往
/api/的请求加自定义请求头,比如X-Internal-Call: 你生成的密钥。 - 到公网ALB的对应监听器(80/443)上配置转发规则,优先级设为最高:
- 匹配路径
/api/* - 增加HTTP头匹配条件,只有
X-Internal-Call头的值和你预设的密钥完全一致时,才把请求转发到后端Fargate目标组 - 不满足头匹配条件的
/api/*请求,直接返回403状态码
- 匹配路径
- 配置默认转发规则:所有不匹配
/api/*的路径,正常转发到后端目标组,不做额外限制,对公网全开放。
这个方案不需要新增任何云资源,配置10分钟内就能搞定,只要密钥不泄露就能满足访问控制要求,适合快速上线的场景。
方案2:私网ALB+Resource Policy(最高安全等级,成本极低)
如果不想维护自定义密钥,要走AWS原生的身份鉴权,可以用这个方案:
- 新建一个内部(私网)ALB,和你现有Fargate服务的目标组关联,这个私网ALB不需要绑定公网IP,只在VPC内部可达。
- 给这个私网ALB配置Resource Policy,只允许
events.amazonaws.com的服务主体调用,拒绝其他所有来源的访问。 - 配置EventBridge走VPC端点访问这个私网ALB的
/api/路径,完全不走公网。 - 在原来的公网ALB上新增最高优先级转发规则:所有匹配
/api/*的请求直接返回403,其他路径保持原有公网开放配置不变。
这个方案下/api/路径完全不暴露在公网,鉴权走AWS原生的IAM体系,不需要维护自定义密钥,安全性最高,额外的私网ALB成本每个月只有几美元,几乎可以忽略。
内容的提问来源于stack exchange,提问作者whitebear
相关产品推荐
相关产品推荐

