安全組
安全組是一個邏輯上的分組,為具有相同安全保護需求并相互信任的云主機、云容器、云數據庫等實例提供訪問策略。安全組創建后,用戶可以在安全組中定義各種訪問規則,當實例加入該安全組后,即受到這些訪問規則的保護。
您在創建實例時(比如云主機),必須將實例加入一個安全組,如果此前您還未創建任何安全組,那么系統會自動為您創建默認安全組并關聯至該實例。除了默認安全組,您還可以根據業務需求創建自定義安全組并關聯至實例。一個實例可以關聯多個安全組,多個安全組按照優先級順序依次匹配流量。
安全組中包括入方向規則和出方向規則,您可以針對每條入方向規則指定來源、端口和協議,針對出方向規則指定目的地、端口和協議,用來控制安全組內實例入方向和出方向的網絡流量。
以下圖為例,在區域A內,某客戶有一個虛擬私有云VPC-A和子網Subnet-A,在子網Subnet-A中創建一個云主機ECS-A,并為ECS-A關聯一個安全組Sg-A來保護ECS-A的網絡安全。
- 安全組Sg-A的入方向存在一條放通ICMP端口的自定義規則,因此可以通過個人PC (計算機)ping通ECS-A。但是安全組內未包含允許SSH流量進入實例的規則,因此您無法通過個人PC遠程登錄ECS-A。
- 當ECS-A需要通過EIP訪問公網時,由于安全組Sg-A的出方向規則允許所有流量從實例流出,因此ECS-A可以訪問公網。
說明您可以免費使用安全組資源,當前不收取任何費用。
安全組規則
安全組中包括入方向規則和出方向規則,用來控制安全組內實例的入方向和出方向的網絡流量。
- 入方向規則:控制外部請求訪問安全組內的實例,即流量流入實例。
- 出方向規則:控制安全組內實例訪問外部的請求,即流量從實例流出。
安全組規則由協議端口、源地址/目的地址等組成,關鍵信息說明如下:
- 策略:支持允許或拒絕。當流量的協議、端口、源地址/目的地址成功匹配某個安全組規則后,會對流量執行規則對應的策略,允許或拒絕流量。
- 優先級:優先級可選范圍為1-100,數字越小,規則優先級級別越高。安全組規則匹配流量時,首先按照優先級進行排序,其次按照策略排序,拒絕策略高于允許策略。
- 類型:支持設置IPv4和IPv6協議的規則。
- 協議端口:包括網絡協議類型和端口范圍。網絡協議:匹配流量的協議類型,支持TCP、UDP、ICMP和GRE協議。端口范圍:匹配流量的目的端口,取值范圍為:1~65535。
- 源地址或目的地址:在入方向中,匹配流量的源地址。在出方向中,匹配流量的目的地址。您可以使用IP地址、安全組、IP地址組作為源地址或者目的地址。
安全組及規則的工作原理
安全組是有狀態的。如果您從實例發送一個出站請求,且該安全組的出方向規則是放通的話,那么無論其入方向規則如何,都將允許該出站請求的響應流量流入。同理,如果該安全組的入方向規則是放通的,那無論出方向規則如何,都將允許入站請求的響應流量可以流出。
安全組使用連接跟蹤來標識進出實例的流量信息,入方向安全組的規則變更,對原有流量立即生效。出方向安全組規則的變更,不影響已建立的長連接,只對新建立的連接生效。
當您在安全組內增加、刪除、更新規則,或者在安全組內添加、移出實例時,系統會自動清除該安全組內所有實例入方向的連接,詳細說明如下:
- 由入方向流量建立的連接,已建立的長連接將會斷開。所有入方向流量立即重新建立連接,并匹配新的安全組入方向規則。
- 由出方向流量建立的連接,已建立的長連接不會斷開,依舊遵循原有安全組規則。出方向流量新建立的連接,將會匹配新的安全組出方向規則。
注意對于已建立的長連接,流量斷開后,不會立即建立新的連接,需要超過連接跟蹤的老化時間后,才會新建立連接并匹配新的規則。比如,對于已建立的ICMP協議長連接,當流量中斷后,需要超過老化時間30s后,將會新建立連接并匹配新的規則,詳細說明如下:
不同協議的連接跟蹤老化時間不同,比如已建立連接狀態的TCP協議連接老化時間是600s,ICMP協議老化時間是30s。對于除TCP和ICMP的其他協議,如果兩個方向都收到了報文,連接老化時間是180s,如果只是單方向收到了報文,另一個方向沒有收到報文,則連接老化時間是30s。
TCP協議處于不同狀態下的連接老化時間也不相同,比如TCP連接處于ESTABLISHED(連接已建立)狀態時,老化時間是600s,處于FIN-WAIT(連接即將關閉)狀態時,老化時間是30s。
安全組規則遵循白名單原理,當在規則中沒有明確定義允許或拒絕某條流量時,安全組一律拒絕該流量流入或者流出實例。
在入方向中,當請求匹配上安全組中入方向規則的源地址,并且策略為“允許”時,允許該請求進入,其他請求一律攔截。因此,默認情況下您一般不用在入方向配置策略為“拒絕”的規則。下表中的入方向規則,確保安全組內實例內網網絡互通,不建議您刪除或者修改該安全組規則。
在出方向中,下表中的出方向規則允許所有流量從安全組內實例流出,即實例可訪問外部任意IP和端口。如果您刪除了該規則,則安全組內的實例無法訪問外部,請您謹慎操作。
| 方向 | 策略 | 類型 | 協議端口 | 源地址/目的地址 |
|---|---|---|---|---|
| 入方向 | 允許 | IPv4 | 全部 | 源地址:當前安全組 |
| 入方向 | 允許 | IPv6 | 全部 | 源地址:當前安全組 |
| 出方向 | 允許 | IPv4 | 全部 | 目的地址:0.0.0.0/0 |
| 出方向 | 允許 | IPv6 | 全部 | 目的地址:::/0 |
流量匹配安全組規則的順序
一個實例可以關聯多個安全組,并且一個安全組內可以包含多個安全組規則。安全組規則匹配流量時,首先按照優先級進行排序,其次按照策略匹配,拒絕策略高于允許策略。
如下圖所示,以入方向的流量為例,實例的網絡流量將按照以下原則匹配安全組規則,入方向和出方向的流量匹配順序相同。
首先,流量按照安全組的順序進行匹配。您可以自行調整安全組順序,安全組序號越小,表示優先級越高。比如,安全組A的序號為1,安全組B的序號為2,安全組A的優先級高于安全組B,流量優先匹配安全組A內的入方向規則。
其次,流量按照安全組規則的優先級和策略進行匹配。
- 先按照安全組規則優先級匹配,優先級的數字越小,優先級越高。比如安全組規則A的優先級為1,安全組規則B的優先級為2,安全組規則A的優先級高于安全組規則B,流量優先匹配安全組規則A。
- 安全組規則優先級相同的情況下,再按照策略匹配,拒絕策略高于允許策略。
流量按照協議端口和源地址,遍歷了所有安全組內的入方向規則。
如果成功匹配某個規則,則執行以下操作:
- 如果規則的策略是允許,則允許該流量訪問安全組內實例。
- 如果規則的策略是拒絕,則拒絕該流量訪問安全組內實例。
如果未匹配上任何規則,則拒絕該流量訪問安全組內的實例。