应用场景
每次去阿里云控制台 将自己的外网IP添加为白名单操作过于繁琐,一切可以自动化的事情应该要自动化,所以我们需要一个 自动将本机外网IP添加为安全组规则的脚本。
前置条件
- 拥有可以操作
AuthorizeSecurityGroup
API 的AccessKey
前往 AccessKey 管理 添加 accessKey。
添加一个子账号,创建 AccessKey
给该 AccessKey 授权一个最小的权限:AuthorizeSecurityGroup
,只能添加安全组的入方向规则。
准备好了 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-8
import requests
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkecs.request.v20140526.AuthorizeSecurityGroupRequest import AuthorizeSecurityGroupRequest
r = 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 的尾号 -b<