日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

ECS安全組實踐(安全組授權)

本文從授權和撤銷安全組規則、加入和移出安全組講解云服務器ECS的安全組最佳實踐。

網絡類型

阿里云的網絡類型分為經典網絡和專有網絡VPC,對安全組支持不同的設置規則:

  • 如果是經典網絡,您可以設置內網入方向、內網出方向、公網入方向和公網出方向的安全組規則。

  • 如果是專有網絡VPC,您可以設置內網入方向和內網出方向的安全組規則。

安全組是區分網絡類型的,一臺經典網絡類型的ECS實例只能加入經典網絡的安全組。一臺專有網絡VPC類型的ECS實例只能加入本VPC的安全組。

安全組內網通訊的概念

本文開始之前,您應知道以下幾個安全組內網通訊的概念:

  • 即使是同一個賬戶下的ECS實例,如果分屬不同安全組,內網網絡也是不通的。這個對于經典網絡和專有網絡VPC都適用。所以,經典網絡類型的ECS實例也是內網安全的。

  • 如果您有兩臺ECS實例,不在同一個安全組,您希望它們內網不互通,但實際上它們卻內網互通,那么,您需要檢查您的安全組內網規則設置。如果內網協議存在下面的協議,建議您重新設置。

    • 允許所有端口。

    • 授權對象為CIDR網段(SourceCidrIp):0.0.0.0/0或者10.0.0.0/8的規則。

    說明

    如果是經典網絡,上述協議會造成您的內網暴露給其他的訪問。

  • 如果您想實現在不同安全組的資源之間的網絡互通,您應使用安全組方式授權。對于內網訪問,您應使用源安全組授權,而不是CIDR網段授權。

安全組規則的屬性

安全組規則主要是描述不同的訪問權限,包括如下屬性:

  • Policy:授權策略,參數值可以是Accept(允許)或Drop(拒絕)。

  • Priority:優先級,根據安全組規則的創建時間降序排序匹配。規則優先級可選范圍為1~100,默認值為1,即最高優先級。數字越大,代表優先級越低。

  • NicType:網卡類型。如果只指定了SourceGroupId而沒有指定SourceCidrIp,表示通過安全組方式授權,此時,NicType必須指定為intranet

  • 規則描述:

    • IpProtocol:IP協議,取值:tcpudpicmpgreallall表示所有的協議。

    • PortRange:IP協議相關的端口號范圍:

      • IpProtocol取值為tcpudp時,端口號取值范圍為1~65535,格式必須是“起始端口號/終止端口號”,如“1/200”表示端口號范圍為1~200。如果輸入值為“200/1”,接口調用將報錯。

      • IpProtocol取值為icmpgreall時,端口號范圍值為-1/-1,表示不限制端口。

    • 如果通過安全組授權,應指定SourceGroupId,即源安全組ID。此時,根據是否跨賬號授權,您可以選擇設置源安全組所屬的賬號SourceGroupOwnerAccount。

    • 如果通過CIDR授權,應指定SourceCidrIp,即源IP地址段,必須使用CIDR格式。

授權一條入網請求規則

在控制臺或者通過API創建一個安全組時,入網方向默認deny all,即默認情況下您拒絕所有入網請求。這并不適用于所有的情況,所以您要適度地配置您的入網規則。

例如,如果您需要開啟公網的80端口對外提供HTTP服務,因為是公網訪問,您希望入網盡可能多訪問,所以在IP網段上不應做限制,可以設置為0.0.0.0/0,具體設置可以參見以下描述,其中,括號外為控制臺參數,括號內為OpenAPI參數,兩者相同就不做區分。

  • 網卡類型(NicType):如果是經典網絡,填寫公網(internet)。如果是專有網絡VPC,只需要填寫內網(intranet),通過EIP實現公網訪問。

  • 授權策略(Policy):允許(Accept)。

  • 規則方向:入方向。

  • 協議類型(IpProtocol):自定義TCP(tcp)。

  • 端口范圍(PortRange):80/80。

  • 授權對象(SourceCidrIp):0.0.0.0/0。

  • 優先級(Priority):1。

說明

上面的建議僅對公網有效。內網請求不建議使用CIDR網段,請參見經典網絡的內網安全組規則不要使用CIDR或者IP授權

禁止一個入網請求規則

禁止一條規則時,您只需要配置一條拒絕策略,并設置較低的優先級即可。這樣,當有需要時,您可以配置其他高優先級的規則覆蓋這條規則。例如,您可以采用以下設置拒絕6379端口被訪問。

  • 網卡類型(NicType):內網(intranet)。

  • 授權策略(Policy):拒絕(Drop)。

  • 規則方向:入方向。

  • 協議類型(IpProtocol):自定義TCP(tcp)。

  • 端口范圍(PortRange):6379/6379。

  • 授權對象(SourceCidrIp):0.0.0.0/0。

  • 優先級(Priority):100。

經典網絡的內網安全組規則不要使用CIDR或者IP授權

對于經典網絡類型的ECS實例,阿里云默認不開啟任何內網的入規則。內網的授權一定要謹慎。

說明

為了安全考慮,不建議開啟任何基于CIDR網段的授權。

對于ECS實例來說,內網的IP經常變化,另外,這個IP的網段是沒有規律的,所以,建議您通過安全組授權對經典網絡內網的訪問。

例如,您在安全組sg-redis上構建了一個Redis的集群,為了只允許特定的機器(例如sg-web)訪問這個Redis的服務器編組,您不需要配置任何CIDR,只需要添加一條入規則:指定相關的安全組ID即可。

  • 網卡類型(NicType):內網(intranet)。

  • 授權策略(Policy):允許(Accept)。

  • 規則方向:入方向。

  • 協議類型(IpProtocol):自定義TCP(tcp)。

  • 端口范圍(PortRange):6379/6379。

  • 授權對象(SourceGroupId):sg-web。

  • 優先級(Priority):1。

對于專有網絡VPC類型的實例,如果您已經通過多個vSwitch規劃好自己的IP范圍,您可以使用CIDR設置作為安全組入規則。但是,如果您的專有網絡VPC網段不夠清晰,建議您優先考慮使用安全組作為入規則。

將需要互相通信的ECS實例加入同一個安全組

一個ECS實例最多可以加入5個安全組,而同一安全組內的ECS實例之間是網絡互通的。如果您在規劃時已經有多個安全組,而且,直接設置多個安全組規則過于復雜的話,您可以新建一個安全組,然后將需要內網通訊的ECS實例加入這個新的安全組。

這里也不建議您將所有的ECS實例都加入一個安全組,這將會使得您的安全組規則設置變得復雜。對于一個中大型應用來說,每個服務器編組的角色不同,合理地規劃每個服務器的入方向請求和出方向請求是非常有必要的。

您可以在控制臺上將一臺實例加入安全組,具體操作,請參見安全組與ECS實例關聯的管理

如果您對阿里云的OpenAPI非常熟悉,您可以通過OpenAPI進行批量操作,具體操作,請參見查詢ECS實例。對應的Python代碼片段如下:

def join_sg(sg_id, instance_id):
    request = JoinSecurityGroupRequest()
    request.set_InstanceId(instance_id)
    request.set_SecurityGroupId(sg_id)
    response = _send_request(request)
    return response
# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)

將ECS實例移出安全組

如果ECS實例加入不合適的安全組,將會允許本該拒絕的訪問或者拒絕本該允許的訪問,這時您可以選擇將ECS實例從這個安全組中移出。但是在移出安全組之前必須保證您的ECS實例已經加入其他安全組。

說明

將ECS實例從安全組移出,將會導致這臺ECS實例和當前安全組內的網絡不通,建議您在移出之前做好充分的測試。

對應的Python代碼片段如下:

def leave_sg(sg_id, instance_id):
    request = LeaveSecurityGroupRequest()
    request.set_InstanceId(instance_id)
    request.set_SecurityGroupId(sg_id)
    response = _send_request(request)
    return response
# send open api request
def _send_request(request):
    request.set_accept_format('json')
    try:
        response_str = clt.do_action(request)
        logging.info(response_str)
        response_detail = json.loads(response_str)
        return response_detail
    except Exception as e:
        logging.error(e)

定義合理的安全組名稱和標簽

合理的安全組名稱和描述有助于您快速識別當前復雜的規則組合。您可以通過修改名稱和描述來幫助自己識別安全組。

您也可以通過為安全組設置標簽分組管理自己的安全組。您可以在控制臺直接設置標簽,具體操作請參見設置標簽,也可以通過API設置標簽。

刪除不需要的安全組

安全組中的安全組規則類似于一條條白名單和黑名單。所以,請不要保留不需要的安全組,以免因為錯誤加入某臺ECS實例而造成不必要的麻煩。