阿里云Python-SDK管理安全组和RDS实例IP白名单

来源:互联网 发布:rabin c语言 编辑:程序博客网 时间:2024/05/16 02:19
  1. 安装SDK
#pip install aliyun-python-sdk-rds #pip install aliyun-python-sdk-ecs

如果安装报错可能需要安装python-dev

#rpm -ivh python-dev
  1. 代码示例:
#!/usr/bin/env python# coding=utf-8from aliyunsdkcore import clientfrom aliyunsdkecs.request.v20140526 import DescribeSecurityGroupAttributeRequestfrom aliyunsdkecs.request.v20140526 import AuthorizeSecurityGroupRequestfrom aliyunsdkecs.request.v20140526 import AuthorizeSecurityGroupEgressRequestfrom aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequestfrom aliyunsdkecs.request.v20140526 import RevokeSecurityGroupEgressRequestfrom aliyunsdkecs.request.v20140526 import DescribeSecurityGroupsRequestfrom aliyunsdkrds.request.v20140815 import ModifySecurityIpsRequestclass Alis():    def __init__(self, AccessKey, AccessSecret, RegionId):       self.AccessKey = AccessKey       self.AccessSecret = AccessSecret       self.RegionId = RegionId    def client(self):       c = client.AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)       return c    def describeSecurityGroupsRequest(self):       request = DescribeSecurityGroupsRequest.DescribeSecurityGroupsRequest()       request.set_accept_format('json')       return request    def describeSecurityGroupAttributeRequest(self,SecurityGroupId,NicType='internet',Direction='ingress'):        """查询安全组规则        """        request = DescribeSecurityGroupAttributeRequest.DescribeSecurityGroupAttributeRequest()        request.set_SecurityGroupId(SecurityGroupId)        request.set_accept_format('json')        request.set_NicType(NicType)        request.set_Direction(Direction)        return request    def authorizeSecurityGroupRequest(self, SecurityGroupId, IpProtocol, Direction, PortRange, SourceCidrIp, DestCidrIp, Priority=1):        """授权安全组规则        """        if Direction == 'ingress':            request = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()        elif Direction == 'egress':            request = AuthorizeSecurityGroupEgressRequest.AuthorizeSecurityGroupEgressRequest()        else:            raise NameError("The specified parameter 'Direction' is not valid.")        request.set_SecurityGroupId(SecurityGroupId)        request.set_IpProtocol(IpProtocol)        request.set_PortRange(PortRange)        if SourceCidrIp:            request.set_SourceCidrIp(SourceCidrIp)        if DestCidrIp:            request.set_DestCidrIp(DestCidrIp)        request.set_Priority(Priority)        request.set_Description("内部IP访问")        request.set_Policy('accept')        request.set_accept_format('json')        return request    def revokeSecurityGroupRequest(self, SecurityGroupId, IpProtocol, Direction, PortRange, SourceCidrIp, DestCidrIp, Priority=1):        """删除安全组规则        """        if Direction == 'ingress':            request = RevokeSecurityGroupRequest.RevokeSecurityGroupRequest()        elif Direction == 'egress':            request = RevokeSecurityGroupEgressRequest.RevokeSecurityGroupEgressRequest()        else:            raise NameError("The specified parameter 'Direction' is not valid.")        request.set_SecurityGroupId(SecurityGroupId)        request.set_IpProtocol(IpProtocol)        request.set_PortRange(PortRange)        if SourceCidrIp:            request.set_SourceCidrIp(SourceCidrIp)        if DestCidrIp:            request.set_DestCidrIp(DestCidrIp)        request.set_Priority(Priority)        request.set_Policy('accept')        request.set_accept_format('json')        return request    def modifySecurityIpsRequest(self, DBInstanceId, SecurityIps, DBInstanceIPArrayName, DBInstanceIPArrayAttribute):        """修改数据库实例白名单        """        request = ModifySecurityIpsRequest.ModifySecurityIpsRequest()        request.set_DBInstanceId(DBInstanceId)        request.set_SecurityIps(SecurityIps)        request.set_DBInstanceIPArrayName(DBInstanceIPArrayName)        request.set_DBInstanceIPArrayAttribute(DBInstanceIPArrayAttribute)        return requestif __name__ == '__main__':     ali = Alis(AccessKey, AccessSecret, RegionId) # 阿里云后台创建     clt = ali.client()     req = ali.revokeSecurityGroupRequest(securityGroupId, ipProtocol, direction,          portRange, sourceCidrIp, destCidrIp, priority)     res = clt.do_action_with_exception(req)     print("删除安全组%s" % res)     req = ali.authorizeSecurityGroupRequest(securityGroupId, ipProtocol, direction,         portRange, sourceCidrIp, destCidrIp, priority)     res = clt.do_action_with_exception(req)     print("新增安全组%s" % res)     req = ali.modifySecurityIpsRequest(dbInstanceId, securityIps,         dbInstanceIPArrayName, dbInstanceIPArrayAttribute)     res = clt.do_action_with_exception(req)     print("修改RDS白名单%s" % res)

参数含义请参照:
https://help.aliyun.com/document_detail/25485.html?spm=5176.doc25471.6.824.Ag5dXd
https://help.aliyun.com/document_detail/25485.html?spm=5176.doc25699.6.824.Skx9SD

阅读全文
0 0
原创粉丝点击