700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 使用阿里云Python SDK管理ECS安全组

使用阿里云Python SDK管理ECS安全组

时间:2022-05-25 14:15:55

相关推荐

使用阿里云Python SDK管理ECS安全组

准备工作

本机操作系统:CentOS7python版本:python2.7.5还需要准备如下信息:一个云账号、Access Key ID、Access Key Secret、安全组ID、Region ID(如cn-shanghai)

1 安装阿里云python SDK

学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895 817 687有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家一起学习交流!

1 pip install aliyun-python-sdk-ecs

2 需求分析

我们供应商的开发人员经常需要访问我们的阿里云ECS资源,我们要根据供应商的ip添加相应的入方向安全组策略。

但是供应商的外网ip经常变化,几乎每天都要添加新的安全组策略并删掉旧的策略,在阿里云平台上执行此类操作很繁琐、低效。

所以需要使用python来简化操作,运行脚本就可以实现添加和删除安全组规则的操作。

3 脚本说明

3.1 增加规则的脚本

#!/usr/bin/python# -*- coding: utf-8 -*-from aliyunsdkcore.client import AcsClientfrom aliyunsdkecs.request.v0526 import AuthorizeSecurityGroupRequestimport sysimport jsonclass AliGroup:def __init__(self, AccessKey, AccessSecret, RegionId):self.AccessKey = AccessKeyself.AccessSecret = AccessSecretself.RegionId = RegionIddef client(self):"""用于创建AcsClient实例"""client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)return clientdef authorizeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):"""用于添加安全组规则"""#创建AuthorizeSecurityGroupRequest实例request = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()#设置安全组IDrequest.set_SecurityGroupId(SecurityGroupId)#设置协议,比如TCP或者UDPrequest.set_IpProtocol(IpProtocol)#设置端口范围request.set_PortRange(PortRange)#如果存在源ip,则设置源ipif SourceCidrIp:request.set_SourceCidrIp(SourceCidrIp)#设置优先级request.set_Priority(Priority)#设置规则的动作为接受request.set_Policy('accept')#设置接收数据格式为jsonrequest.set_accept_format('json')return requestif __name__ == '__main__':#AliGroup类实例化ali = AliGroup("your-access-key-id", "your-access-key-secret", "your-region-id")#创建AcsClient实例clt = ali.client()#添加安全组规则,由于优先级、协议和安全组ID已经设置默认参数,所以只需要在运行脚本时输入端口范围和源ip两个参数add = ali.authorizeSecurityGroupRequest(sys.argv[1], sys.argv[2])#打印输出res = clt.do_action(add)print res

3.2 删除规则的脚本

#!/usr/bin/python# -*- coding: utf-8 -*-from aliyunsdkcore.client import AcsClientfrom aliyunsdkecs.request.v0526 import RevokeSecurityGroupRequestimport sysimport jsonclass AliGroup:def __init__(self, AccessKey, AccessSecret, RegionId):self.AccessKey = AccessKeyself.AccessSecret = AccessSecretself.RegionId = RegionIddef client(self):"""用于创建AcsClient的实例"""client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)return clientdef revokeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):"""删除安全组规则"""request = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()request.set_SecurityGroupId(SecurityGroupId)request.set_IpProtocol(IpProtocol)request.set_PortRange(PortRange)if SourceCidrIp:request.set_SourceCidrIp(SourceCidrIp)request.set_Policy('accept')request.set_accept_format('json')return requestif __name__ == '__main__':ali = AliGroup("your-access-key-id", "your-access-key-secret", "your-region-id")clt = ali.client()rem = ali.revokeSecurityGroupRequest(sys.argv[1], sys.argv[2])res = clt.do_action(rem)print res

4 运行结果

4.1 增加规则

参数说明:

python后面第一个参数是脚本名称;

第二个参数是端口范围,一定要以"source-port/end-port"这种形式来写,这里以8282/8282为例;

第三个参数是源ip,这里以112.115.115.58为例。

运行结果如下:

云平台上查看结果,也可以看到增加的规则:

4.2 删除规则

运行结果如下:

云平台上查看结果,也可以看到删除的规则消失了,这里就不展示了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。