如何批量添加IP列表为Security Group源IP以放行tcp/22访问
AWS安全组批量放行指定IP段SSH访问配置方案
操作需求
现有50-60个IP地址的列表,需要仅允许这些IP的TCP/22(SSH)流量访问目标资源,拦截其余所有IP的访问请求,无需手动逐个添加规则,实现批量配置安全组。
方案一:通过AWS CLI批量配置
你可以通过Shell循环调用AWS CLI命令批量添加入站规则,通用脚本如下:
for ip in {csv_list_of_cidrs} do aws ec2 authorize-security-group-ingress --group-id <sg_id_here> --protocol tcp --port 22 --cidr $ip done
参数说明
<sg_id_here>:替换为你要操作的目标安全组的实际ID{csv_list_of_cidrs}:替换为你的IP/CIDR地址列表,多个地址用英文逗号分隔
配置示例
for ip in {1.1.1.1/8,2.2.2.2/16,3.2.3.12/29} do aws ec2 authorize-security-group-ingress --group-id sg-xxxxxxxxx --protocol tcp --port 22 --cidr $ip done
方案二:通过Python Boto3批量配置
如果你更倾向用Python实现批量操作,可以参考如下示例代码:
import boto3 # 初始化EC2客户端 ec2 = boto3.client('ec2') # 替换为目标安全组ID SECURITY_GROUP_ID = 'sg-xxxxxxxxx' # 替换为你的允许访问的IP/CIDR列表 ALLOWED_SSH_CIDRS = [ '1.1.1.1/8', '2.2.2.2/16', '3.2.3.12/29' ] for cidr in ALLOWED_SSH_CIDRS: ec2.authorize_security_group_ingress( GroupId=SECURITY_GROUP_ID, IpPermissions=[ { 'IpProtocol': 'tcp', 'FromPort': 22, 'ToPort': 22, 'IpRanges': [{'CidrIp': cidr}] } ] )
注意:AWS安全组默认拒绝所有未显式允许的入站流量,添加完上述允许规则后,其余未在列表内的IP的22端口访问会被自动拦截。
内容的提问来源于stack exchange,提问作者rooni
相关产品推荐
相关产品推荐

