阿里云自动化添加安全组

简介: 每次去阿里云控制台 将自己的外网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


相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
3天前
|
存储 缓存 运维
阿里云先知安全沙龙(上海站)——后渗透阶段主机关键信息自动化狩猎的实现与应用
本文介绍了在后渗透测试中使用LSTAR工具和PowerShell脚本进行RDP状态查询、端口获取及凭据收集的过程,强调了高强度实战场景下的OPSEC需求。通过MITRE ATT&CK框架的应用,详细阐述了凭证访问、发现和收集等关键技术,确保攻击者能够隐蔽、持续且高效地渗透目标系统,最终获取核心数据或控制权。文中还展示了SharpHunter等工具的自动化实现,进一步提升了操作的安全性和效率。
|
1天前
|
人工智能 自然语言处理 API
阿里云上的IaC和自动化
本文介绍了阿里云上的自动化与基础设施即代码(IaC)的整体情况。阿里云提供了2万多个API,每日调用量达300亿次,同比增长40%。文中探讨了自动化集成的方式,包括通过API、SDK和IaC工具,并分析了不同场景下的选择策略。对于资源管理较少的企业,控制台界面更合适;而对于高频变更和复杂操作,API和IaC是更好的选择。此外,文章还提到了低代码/无代码解决方案及AI在IaC和自动化中的应用前景。
|
1天前
|
弹性计算 安全 API
长桥科技:通过Terraform自动化为客户提供安全、高效的产品服务体验
长桥科技通过采用Terraform加速业务上线,实现云资源的高效管理。作为一家金融科技公司,长桥为证券、资管等机构提供数字化解决方案。其SRE团队利用Terraform构建CICD流程,自动化配置云资源及应用配置,简化了基础设施管理,提升了开发效率。通过模块化和自动化部署,新租户的配置从一天缩短至20分钟,显著减少了人力成本和操作复杂度。此外,长桥还遵循编程规范,确保代码的可测试性和复用性,进一步优化了云上基础设施的构建与管理。
|
21天前
|
网络协议 网络安全 Docker
将Certbot/ACME.sh自动化申请的证书自动部署到阿里云CDN
本文介绍了阿里云 CDN SSL 证书自动更新工具,定期检查证书有效期,使用Let's Encrypt 等工具签发的证书自动更新至阿里云 CDN,支持 Docker 及 .NET 8 部署,简化证书管理流程。
|
4月前
|
弹性计算 测试技术 持续交付
阿里云云效产品使用合集之如何进行自动化测试
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
数据采集 SQL 运维
企业出海WAS安全自动化解决方案
企业出海WAS安全自动化解决方案
|
4月前
|
弹性计算 JSON 开发工具
"一键玩转阿里云ECS!Python大神揭秘:如何自动化创建镜像并跨地域复制,让你的云资源部署秒变高效达人!"
【8月更文挑战第14天】本文介绍如何使用Python与阿里云SDK自动化管理ECS镜像,包括创建镜像及跨地域复制,以优化云资源部署。首先安装`aliyun-python-sdk-ecs`并配置阿里云凭证。接着,通过Python脚本实现镜像创建与复制功能,简化日常运维工作并增强灾难恢复能力。注意权限及费用问题。
105 2
|
5月前
|
存储 人工智能 运维
阿里云获中国自动化学会科技进步奖一等奖
阿里云获中国自动化学会科技进步奖一等奖
72 2
|
4月前
|
运维 安全 网络安全
云端安全之盾:云计算与网络安全的协同演进运维自动化之路:从传统到现代化的转变
【8月更文挑战第23天】在数字化浪潮下,云计算以其灵活性和可扩展性成为企业数字化转型的重要推手。然而,随着云服务的快速发展,网络安全威胁也日益增多。本文将探讨云计算与网络安全如何相互促进,共同成长,以确保信息安全,并分析云服务提供商采取的安全策略以及企业在采用云服务时应注意的安全实践。
|
4月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之是否可以进行跨项目自动化同步
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。