阿里云自动化添加安全组

简介: 每次去阿里云控制台 将自己的外网IP添加为白名单操作过于繁琐,一切可以自动化的事情应该要自动化,所以我们需要一个 自动将本机外网IP添加为安全组规则的脚本。

前置条件

  • 拥有可以操作 AuthorizeSecurityGroup API 的 AccessKey

前往 AccessKey 管理 添加 accessKey。

添加一个子账号,创建 AccessKey

ram.png

给该 AccessKey 授权一个最小的权限:AuthorizeSecurityGroup,只能添加安全组的入方向规则。

ram_add_authority.png

addCustomRAM-1.png


准备好了 AccessKey,就可以开始准备脚本了。

以下提供两种方式, Python 、Golang(推荐,因为编译后看不到密码)。

代码实现:添加一条安全组入规则,支持本机IP访问 22 端口,如果希望放开所有端口,可以将 request.PortRange 的值修改为 1/65535

1. Python

1.1 安装依赖包

pip3 install aliyun-python-sdk-ecs==4.24.3


1.2 编写脚本

请替换代码中的 <accessKeyId>, <accessSecret>, <YourSecurityGroupId>, <RegionId> .

#!/usr/bin/env python#coding=utf-8importrequestsfromaliyunsdkcore.clientimportAcsClientfromaliyunsdkcore.acs_exception.exceptionsimportClientExceptionfromaliyunsdkcore.acs_exception.exceptionsimportServerExceptionfromaliyunsdkecs.request.v20140526.AuthorizeSecurityGroupRequestimportAuthorizeSecurityGroupRequestr=requests.get('https://ipw.cn/api/ip/myip')
clientIP=r.text# <accessKeyId>, <accessSecret>: 前往 https://ram.console.aliyun.com/manage/ak 添加 accessKey# RegionId:安全组所属地域ID ,比如 `cn-guangzhou`# 访问 [DescribeRegions:查询可以使用的阿里云地域](https://next.api.aliyun.com/api/Ecs/2014-05-26/DescribeRegions) 查阅# 国内一般是去掉 ECS 所在可用区的后缀,比如去掉 cn-guangzhou-b 的尾号 -bclient=AcsClient('<accessKeyId>', '<accessSecret>', '<RegionId>') 
request=AuthorizeSecurityGroupRequest()
request.set_accept_format('json')
request.set_SecurityGroupId("<YourSecurityGroupId>") # 安全组IDrequest.set_IpProtocol("tcp") # 协议,可选 tcp,udp, icmp, gre, all:支持所有协议request.set_PortRange("22/22") # 端口范围,使用斜线(/)隔开起始端口和终止端口,如果信任所有端口为 1/65535request.set_Priority("1") # 安全组规则优先级,数字越小,代表优先级越高。取值范围:1~100request.set_Policy("accept") # accept:接受访问, drop: 拒绝访问request.set_NicType("internet") # internet:公网网卡, intranet:内网网卡。request.set_SourceCidrIp(clientIP) # 源端IPv4 CIDR地址段。支持CIDR格式和IPv4格式的IP地址范围。response=client.do_action_with_exception(request)
# python2:  print(response) print(str(response, encoding='utf-8'))
print("Client IP: %s  was successfully added to the Security Group."%clientIP)


1.3 执行代码

$ python3 addSecurityGroupRule.py
{"RequestId":"1657CAC5-8B1F-4EB8-A947-DC76F44B27C8"}
Client IP: 119.xx.xx.xx  was successfully added to the Security Group.


2. Golang

2.1 安装依赖包

$ goget github.com/aliyun/alibaba-cloud-sdk-go/services/ecs


2.2 编写脚本

请替换代码中的 <accessKeyId>, <accessSecret>, <YourSecurityGroupId>, <RegionId> .

packagemainimport (
"fmt""io/ioutil""net/http""github.com/aliyun/alibaba-cloud-sdk-go/services/ecs")
funcmain() {
responseClient, errClient :=http.Get("https://ipw.cn/api/ip/myip") // 获取外网 IPiferrClient!=nil {
fmt.Printf("获取外网 IP 失败,请检查网络\n")
panic(errClient)
    }
// 程序在使用完 response 后必须关闭 response 的主体。deferresponseClient.Body.Close()
body, _ :=ioutil.ReadAll(responseClient.Body)
clientIP :=string(body)
// <accessKeyId>, <accessSecret>: 前往 https://ram.console.aliyun.com/manage/ak 添加 accessKey// RegionId:安全组所属地域ID ,比如 `cn-guangzhou`// 访问 [DescribeRegions:查询可以使用的阿里云地域](https://next.api.aliyun.com/api/Ecs/2014-05-26/DescribeRegions) 查阅// 国内一般是去掉 ECS 所在可用区的后缀,比如去掉 cn-guangzhou-b 的尾号 -bclient, err :=ecs.NewClientWithAccessKey("<RegionId>", "<accessKeyId>", "<accessSecret>")
iferr!=nil {
fmt.Print(err.Error())
    }
request :=ecs.CreateAuthorizeSecurityGroupRequest()
request.Scheme="https"request.SecurityGroupId="<YourSecurityGroupId>"// 安全组IDrequest.IpProtocol="tcp"// 协议,可选 tcp,udp, icmp, gre, all:支持所有协议request.PortRange="22/22"// 端口范围,使用斜线(/)隔开起始端口和终止端口request.Priority="1"// 安全组规则优先级,数字越小,代表优先级越高。取值范围:1~100request.Policy="accept"// accept:接受访问, drop: 拒绝访问request.NicType="internet"// internet:公网网卡, intranet:内网网卡。request.SourceCidrIp=clientIP// 源端IPv4 CIDR地址段。支持CIDR格式和IPv4格式的IP地址范围。response, err :=client.AuthorizeSecurityGroup(request)
iferr!=nil {
fmt.Print(err.Error())
    }
fmt.Printf("Response: %#v\nClient IP: %s  was successfully added to the Security Group.\n", response, clientIP)
}


2.3 执行代码

$ go run addSecurityGroupRule.go 
Response: &ecs.AuthorizeSecurityGroupResponse{BaseResponse:(*responses.BaseResponse)(0xc00014c080), RequestId:"53C16A7C-91DC-48E6-B6BA-B0830A00C7C1"}
Client IP: 119.xx.xx.xx  was successfully added to the Security Group.


无误后,编译程序

$ go build addSecurityGroupRule.go 
$ ./addSecurityGroupRule 
Response: &ecs.AuthorizeSecurityGroupResponse{BaseResponse:(*responses.BaseResponse)(0xc0002c0080), RequestId:"BEAC369E-2267-4EEF-9463-26A1DEA3ED9B"}
Client IP: 119.xx.xx.xx  was successfully added to the Security Group.


自动化可以解放我们,一起加油吧。

Reference


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
|
弹性计算 Devops Shell
用阿里云 DevOps Flow 实现 ECS 部署自动化:从准备到落地的完整指南
阿里云 DevOps Flow 是一款助力开发者实现自动化部署的高效工具,支持代码流水线构建、测试与部署至ECS实例,显著提升交付效率与稳定性。本文详解如何通过 Flow 自动部署 Bash 脚本至 ECS,涵盖环境准备、流水线搭建、源码接入、部署流程设计及结果验证,助你快速上手云上自动化运维。
709 0
|
弹性计算 安全 API
长桥科技:通过Terraform自动化为客户提供安全、高效的产品服务体验
长桥科技通过采用Terraform加速业务上线,实现云资源的高效管理。作为一家金融科技公司,长桥为证券、资管等机构提供数字化解决方案。其SRE团队利用Terraform构建CICD流程,自动化配置云资源及应用配置,简化了基础设施管理,提升了开发效率。通过模块化和自动化部署,新租户的配置从一天缩短至20分钟,显著减少了人力成本和操作复杂度。此外,长桥还遵循编程规范,确保代码的可测试性和复用性,进一步优化了云上基础设施的构建与管理。
|
云安全 安全 API
“安全体检”测评:安全自动化背后的隐忧与突破
本文围绕阿里云安全检查服务展开,从技术深度、场景适配和安全边界三个维度分析其价值与短板。该服务定位为自动化风险治理工具,涵盖漏洞扫描、合规基线和配置修复。体验中发现,其优势在于云原生体系耦合、资源拓扑感知及成本效益;不足则体现在量化指标缺失和攻击面覆盖有限。改进建议包括优化风险排序、引入AI分析及提供场景化助手。文章总结,该产品在基础风险治理和合规提效上表现良好,但需强化自动化修复与业务场景适配能力,以实现从工具到平台的跃迁。
549 65
|
存储 人工智能 运维
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
554 60
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
958 2
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
|
弹性计算 运维 监控
自动化AutoTalk第十一期-应知必会的自动化工具之阿里云配额中心
本次分享主题为“应知必会的自动化工具之阿里云配额中心”,课程围绕三个方面展开:1) 认识配额及其作用;2) 配额管理的意义与方法;3) 阿里云配额中心的功能和使用场景。通过学习,了解如何有效管理和监控配额,避免资源限制影响业务,并实现自动化集成,提升运维效率。
342 10
|
人工智能 自然语言处理 API
阿里云上的IaC和自动化
本文介绍了阿里云上的自动化与基础设施即代码(IaC)的整体情况。阿里云提供了2万多个API,每日调用量达300亿次,同比增长40%。文中探讨了自动化集成的方式,包括通过API、SDK和IaC工具,并分析了不同场景下的选择策略。对于资源管理较少的企业,控制台界面更合适;而对于高频变更和复杂操作,API和IaC是更好的选择。此外,文章还提到了低代码/无代码解决方案及AI在IaC和自动化中的应用前景。
|
存储 缓存 运维
阿里云先知安全沙龙(上海站)——后渗透阶段主机关键信息自动化狩猎的实现与应用
本文介绍了在后渗透测试中使用LSTAR工具和PowerShell脚本进行RDP状态查询、端口获取及凭据收集的过程,强调了高强度实战场景下的OPSEC需求。通过MITRE ATT&CK框架的应用,详细阐述了凭证访问、发现和收集等关键技术,确保攻击者能够隐蔽、持续且高效地渗透目标系统,最终获取核心数据或控制权。文中还展示了SharpHunter等工具的自动化实现,进一步提升了操作的安全性和效率。
|
存储 人工智能 运维
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
超大规模云网络技术新突破!阿里云斩获中国自动化学会科技进步一等奖
279 0

热门文章

最新文章