如何配置Elastic Beanstalk的ELB允许其他子网EC2实例入站并移除0.0.0.0/0规则?
Got it, let's walk through how to update your ELB security group rules properly to lock down access while still allowing your other subnet EC2 instances to connect. Here's what you need to do, whether you prefer using the AWS Management Console or AWS CLI:
通过AWS管理控制台操作
定位Elastic Beanstalk ELB关联的安全组
- 登录AWS管理控制台,进入Elastic Beanstalk服务
- 选择你的目标环境,点击左侧导航栏的Configuration
- 在Load balancer配置块中,找到关联的安全组(名称通常类似
awseb-e-xxxxxx-stack-AWSEBSecurityGroup-xxxxxx),点击该安全组名称跳转到EC2安全组页面
修改入站规则
- 在安全组详情页,切换到Inbound rules标签
- 找到允许
0.0.0.0/0访问的规则,点击顶部的Edit inbound rules按钮,或者规则右侧的编辑图标 - 先删除
0.0.0.0/0规则:点击该规则行末尾的垃圾桶图标 - 添加允许目标子网EC2实例访问的规则:
- 选择对应的协议和端口(比如HTTP用80,HTTPS用443,或你的自定义端口)
- 在Source下拉框选择Custom,然后:
- 输入目标EC2实例所在子网的CIDR范围(例如
10.0.1.0/24),或者 - 选择目标EC2实例所属的安全组ID(这种方式更灵活,只要实例在该安全组内就能访问)
- 输入目标EC2实例所在子网的CIDR范围(例如
- 点击Save rules完成修改
通过AWS CLI操作
如果你习惯用命令行工具,可以按以下步骤操作:
获取EB环境ELB的安全组ID
将YOUR_ENV_NAME替换为你的Elastic Beanstalk环境名称:aws elasticbeanstalk describe-environment-resources --environment-name YOUR_ENV_NAME --query "EnvironmentResources.LoadBalancers[0].SecurityGroups[0]" --output text执行后会输出所需的安全组ID
移除
0.0.0.0/0的入站规则
可选:先验证当前规则,确保目标正确:aws ec2 describe-security-groups --group-ids YOUR_SG_ID --query "SecurityGroups[0].IpPermissions"然后撤销开放访问规则,替换
YOUR_SG_ID为步骤1得到的ID,根据你的需求调整端口和协议(示例为HTTP 80端口):aws ec2 revoke-security-group-ingress --group-id YOUR_SG_ID --protocol tcp --port 80 --cidr 0.0.0.0/0如果是HTTPS,将端口改为443;自定义端口则修改
--port的值即可添加受限访问规则
- 允许特定子网CIDR访问(示例:
10.0.1.0/24子网访问80端口):aws ec2 authorize-security-group-ingress --group-id YOUR_SG_ID --protocol tcp --port 80 --cidr 10.0.1.0/24 - 允许特定安全组内的所有实例访问(替换
sg-xxxxxx为目标EC2的安全组ID):aws ec2 authorize-security-group-ingress --group-id YOUR_SG_ID --protocol tcp --port 80 --source-group sg-xxxxxx
- 允许特定子网CIDR访问(示例:
注意事项
- 修改前请确认新规则覆盖了所有需要访问ELB的EC2实例,避免意外中断连接
- 如果你的EB环境使用多个负载均衡器(比如同时有应用负载均衡和网络负载均衡),要确保每个对应的安全组都完成修改
- 修改后建议从目标EC2实例测试访问ELB端点,验证连接是否正常
内容的提问来源于stack exchange,提问作者Jin Kwon
相关产品推荐
相关产品推荐

