如何在AWS EC2实例上批量配置大量不连续IP访问白名单?
结论
AWS原生支持零散IP的安全组白名单批量配置,不需要额外部署WAF、ALB等组件,也不会影响你现有EC2层级的安全组规则逻辑。
推荐配置方案
方案1:使用自定义前缀列表统一维护白名单(长期维护最优)
- 先在对应区域的VPC控制台创建客户管理型前缀列表,将所有100+零散白名单IP以
/32(单IP)或对应CIDR块的形式录入列表,单自定义前缀列表默认支持最多1000个条目,配额不足可申请提升,完全满足你的规模需求。 - 安全组配置入站、出站规则时,源/目的对象直接选择你创建的前缀列表即可,不需要逐条添加单个IP。
- 后续增删白名单IP时,仅需要修改前缀列表内的条目,所有引用该前缀列表的安全组会自动同步规则,无需逐个修改安全组配置,规则匹配逻辑和单独配置IP CIDR完全一致,不会和现有规则产生冲突。
方案2:通过AWS CLI/API批量导入规则(一次性配置最快)
如果不需要长期动态维护白名单,可以直接将所有IP整理为规则参数,通过AWS命令行或SDK批量提交规则,无需在控制台手动逐条添加:
- 入站规则调用
authorize-security-group-ingress接口,出站规则调用authorize-security-group-egress接口 - 单次接口调用最多支持同时传入100条IP规则,100+IP分2次调用即可完成配置
- 示例命令片段:
aws ec2 authorize-security-group-ingress --group-id <你的安全组ID> --ip-permissions '[{"IpProtocol":"tcp","FromPort":<业务端口起始>,"ToPort":<业务端口结束>,"IpRanges":[{"CidrIp":"1.2.3.4/32","Description":"办公网IP1"},{"CidrIp":"5.6.7.8/32","Description":"分支IP2"}]}]'
将所有待添加的IP按格式补全到IpRanges数组中即可。
关于WAF方案的说明
你之前的判断完全准确:
- WAF工作在OSI模型第七层,必须绑定ALB、CloudFront等接入层资源,无法直接为EC2实例的四层入站、出站流量做访问控制
- WAF的访问控制规则和EC2安全组是独立的两层过滤逻辑,就算WAF放通对应IP,安全组未配置允许规则的话流量依然无法通行,会大幅增加规则维护成本,不适合你当前的使用场景。
控制台操作提示
安全组控制台默认单条规则输入框容易让人误以为只能逐个添加IP,实际上在规则的源/目的下拉选项中选择「前缀列表」,即可直接引用提前维护好的IP集合,实现批量白名单的效果。注意所有单IP必须写成x.x.x.x/32的CIDR格式,直接填写裸IP会触发规则校验失败。
内容的提问来源于stack exchange,提问作者Piyush Khanna
相关产品推荐
相关产品推荐

