使用阿里雲Python SDK管理ECS安全組


 

准備工作

本機操作系統:CentOS7

python版本:python2.7.5

還需要准備如下信息:

一個雲賬號、Access Key ID、Access Key Secret、安全組ID、Region ID(如cn-shanghai)

 

1 安裝阿里雲python SDK

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 AcsClient
from aliyunsdkecs.request.v20140526 import AuthorizeSecurityGroupRequest
import sys
import json

class AliGroup:

    def __init__(self, AccessKey, AccessSecret, RegionId):
        self.AccessKey = AccessKey
        self.AccessSecret = AccessSecret
        self.RegionId = RegionId

    def client(self):
        """用於創建AcsClient實例
        """
        client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)
        return client

    def authorizeSecurityGroupRequest(self, PortRange, SourceCidrIp, Priority=1, IpProtocol='tcp', SecurityGroupId='your-securitygroup-id'):
        """用於添加安全組規則
        """
        #創建AuthorizeSecurityGroupRequest實例
        request = AuthorizeSecurityGroupRequest.AuthorizeSecurityGroupRequest()
        #設置安全組ID
        request.set_SecurityGroupId(SecurityGroupId)
        #設置協議,比如TCP或者UDP
        request.set_IpProtocol(IpProtocol)
        #設置端口范圍
        request.set_PortRange(PortRange)
        #如果存在源ip,則設置源ip
        if SourceCidrIp:
            request.set_SourceCidrIp(SourceCidrIp)
        #設置優先級
        request.set_Priority(Priority)
        #設置規則的動作為接受
        request.set_Policy('accept')
        #設置接收數據格式為json
        request.set_accept_format('json')
        return request


if __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 AcsClient
from aliyunsdkecs.request.v20140526 import RevokeSecurityGroupRequest
import sys
import json

class AliGroup:
    def __init__(self, AccessKey, AccessSecret, RegionId):
        self.AccessKey = AccessKey
        self.AccessSecret = AccessSecret
        self.RegionId = RegionId

    def client(self):
        """用於創建AcsClient的實例
        """
        client = AcsClient(self.AccessKey, self.AccessSecret, self.RegionId)
        return client

    def 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 request


if __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 刪除規則

 運行結果如下:

雲平台上查看結果,也可以看到刪除的規則消失了,這里就不展示了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM