您可以建立網路ACL並與交換器綁定,通過配置網路ACL規則,精確控制出入交換器的流量。
工作原理
作用範圍
網路ACL僅對綁定交換器內的彈性網卡生效。
網路ACL會控制依賴彈性網卡實現網路通訊的雲資源的流量,例如ECS、ECI、NLB等執行個體。
由於RDS、CLB等執行個體不依賴彈性網卡,流量不會被網路ACL控制。RDS執行個體的存取控制由其白名單實現,CLB執行個體通過存取控制策略實現。
網路ACL不會控制綁定了網卡可見度模式EIP的輔助彈性網卡的流量。
通過私網串連PrivateLink的方式訪問雲端服務時,流量經過終端節點網卡,會受網路ACL規則管控。
規則生效機制
每條規則有生效順序,系統將從生效順序為1的規則開始,根據IP版本、協議類型、源/目的地址及連接埠範圍,依次判斷與流量是否匹配。流量匹配到首條規則後,執行指定的允許/拒絕策略。
針對入方向規則和出方向規則,連接埠範圍始終匹配流量的目的連接埠。
網路ACL在拒絕流量時採用drop操作,發起端不會收到任何響應,表現為請求逾時或者無法建立串連。
網路ACL規則是無狀態的。當配置入方向規則來允許特定流量進入交換器時,響應流量不會被自動允許,您必須建立允許響應流量返回用戶端臨時連接埠的出方向規則。當用戶端向伺服器發起請求時,會從臨時連接埠範圍中隨機播放一個連接埠,接收伺服器的響應。
為了保證各種類型的用戶端都能正常訪問您的服務,您可以設定1024-65535的臨時連接埠範圍。
樣本配置中,存在兩條源/目的位址範圍有重疊的自訂規則。當IP為192.168.0.1的用戶端通過HTTPS協議訪問子網內的服務時,流量會首先匹配到生效順序為1的規則,因此被拒絕;而當IP為192.168.1.1的用戶端訪問時,流量按順序匹配到生效順序為2的規則,因此被允許,且響應流量按照生效順序為1的出方向規則發送回用戶端的臨時連接埠。
當服務需開放大量連接埠,但部分連接埠需要拒絕訪問時,您需要確保拒絕規則的優先順序高於允許規則。
與安全性群組的區別
對比項 | 網路ACL | 安全性群組 |
作用範圍 | 根據網路ACL規則控制出入交換器的流量。 | ECS執行個體層級的存取控制方式。ECS 執行個體關聯的多個安全性群組的規則將按固定的策略排序,共同決定是否允許存取執行個體出入站的流量。 |
返回資料流狀態 | 無狀態:返回資料流必須被規則明確允許。 | 有狀態:返回資料流會被自動允許,不受任何規則的影響。 |
規則匹配順序 | 按照規則生效順序,依次判斷與流量是否匹配。 | 先按照優先順序排序:優先順序相同時,授權策略為拒絕的規則排在授權策略為允許的規則之前。 排序完成後,依次匹配已排序好的規則。 |
與ECS執行個體的關聯關係 | 每個交換器僅允許綁定一個網路ACL。 | 一個ECS執行個體可加入多個安全性群組。 |
建立/刪除網路ACL
您可以建立網路ACL,並將其與交換器關聯,來控制出入交換器的流量。
當您為僅有IPv4網段的VPC建立網路ACL時,系統預設在入方向和出方向添加以下規則:
雲端服務規則:允許使用阿里雲的私網網域名稱解析服務與ECS中繼資料服務。優先順序固定最高,無法修改和刪除。
1、阿里雲預設DNS伺服器IP為100.100.2.136、100.100.2.138,用於解析內網網域名稱。
2、MetaServer的IP為100.100.100.200,提供了ECS執行個體必需的中繼資料服務,確保執行個體正常運行。
自訂規則:允許所有IPv4流量,以確保建立網路ACL後不會影響同一VPC內不同交換器之間的私網互連。您可以配置自訂規則,精確控制進出交換器的流量。
系統規則:用於拒絕未匹配其他規則的IPv4流量。優先順序固定最低,無法修改和刪除。
如果ACL所屬的VPC開啟了IPv6,入方向和出方向將再添加允許所有IPv6流量的自訂規則、拒絕所有IPv6流量的系統規則。
網路ACL僅允許綁定所屬VPC內的交換器,每個交換器僅允許綁定一個網路ACL。
控制台
建立網路ACL
前往專用網路控制台-網路ACL,在頁面上方選擇目標地區後,單擊建立網路ACL。
配置所屬專用網路,需選擇計劃與網路ACL關聯的交換器所屬的VPC。
關聯交換器
單擊執行個體ID或操作列的管理,進入已綁定資源頁簽,單擊關聯交換器,選擇一個或多個目標交換器並確認關聯。關聯的交換器將按照網路ACL規則控制出入交換器的流量。如需解除控制,您可以在該頁簽下,單擊目標交換器操作列的解除綁定。
您也可以在目標交換器詳情頁的網路ACL參數項,綁定、更換或解除綁定網路ACL。
刪除網路ACL
需先確保已解除與交換器的關聯。在目標網路ACL的操作列,單擊刪除。
API
調用CreateNetworkAcl建立網路ACL。
調用AssociateNetworkAcl綁定網路ACL與交換器。
調用UnassociateNetworkAcl解除網路ACL與交換器的綁定。
調用DeleteNetworkAcl刪除網路ACL。
Terraform
與控制台邏輯不同,Terraform僅支援將網路ACL與一個交換器關聯。
Resources:alicloud_network_acl
# 指定網路ACL的地區
provider "alicloud" {
region = "cn-hangzhou"
}
# 指定VPC ID
variable "vpc_id" {
default = "vpc-bp1k******" # 修改為VPC的實際ID
}
# 指定交換器ID
variable "vswitch_id" {
default = "vsw-bp1y******" # 修改為交換器的實際ID
}
# 建立網路ACL並關聯交換器
resource "alicloud_network_acl" "example_network_acl" {
vpc_id = var.vpc_id # 指定網路ACL所屬VPC
network_acl_name = "example_network_acl_name"
resources {
resource_id = var.vswitch_id # 指定網路ACL關聯的交換器
resource_type = "VSwitch"
}
}配置網路ACL規則
建立網路ACL後,系統將預設添加允許/拒絕所有流量的網路ACL規則,您可以配置自訂規則,精確控制特定流量進出交換器。
基於協議類型、IP版本、源地址/目的地址、連接埠範圍匹配到網路ACL規則後,系統將對流量執行指定策略,允許/拒絕對應的流量。
其中,協議類型為TCP(6)/UDP(17)時,可以調整連接埠範圍。取值範圍為0~65535,設定格式為開始端點口/終止連接埠,但不能設定為-1/-1(表示不限制連接埠)。選擇其他協議類型時,連接埠範圍無法設定,預設為-1/-1。
1、添加/修改/刪除網路ACL規則後,會自動應用到與網路ACL綁定的交換器。
2、僅網路ACL所屬VPC開啟IPv6時,您可以添加IPv6類型的出入方向規則。
3、配置DHCP選項集後,您需要添加允許存取指定DNS伺服器的出入方向規則。未添加規則,可能會造成網域名稱解析異常。
4、使用負載平衡時,您需要在出入方向規則中添加允許監聽連接埠接收到的請求轉寄至後端伺服器、健全狀態檢查連接埠的請求發送至後端伺服器的規則。
控制台
在目標網路ACL的入方向規則/出方向規則頁簽,您可參考以下步驟,來配置自訂規則。
由於網路ACL規則是無狀態的,當您設定入方向規則來允許特定流量進入交換器時,需要設定相應的出方向規則。
添加規則
在目標網路ACL的入方向規則/出方向規則頁簽,單擊管理入方向規則/管理出方向規則。您可以單擊添加IPv4規則/添加IPv6規則,逐條配置。
如果您需要對多個IP位址區段進行統一的存取控制,您可以選擇快速添加規則,通過優先順序來設定插入規則的位置。
如需大量新增不同策略的規則,您可以使用提供的模板,批量匯入規則。模板中列出的所有配置項均需填寫,缺少配置項的規則將無法匯入。成功匯入的規則將在原有規則的基礎上順序添加,不會覆蓋原有規則。
調整規則順序
單擊管理入方向規則/管理出方向規則,上下拖動規則來調整生效順序。
刪除規則
在目標網路ACL規則的操作列單擊刪除。
API
調用UpdateNetworkAclEntries更新網路ACL規則。與控制台邏輯不同的是,該API將對ACL規則進行全量更新。如果只傳入新增規則,將會刪除原有規則,僅保留新傳入的規則。因此,增加規則時必須傳入所有需要保留的規則。
調用CopyNetworkAclEntries將網路ACL的規則完整複製到另一個網路ACL。為保證所有規則都能被目標網路ACL正確地識別和接收,您需確保兩個網路ACL所屬的VPC均只有IPv4網段或均開啟了IPv6。未開啟IPv6的VPC中的網路ACL無法配置IPv6類型的規則,若將規則完整複製到已開啟IPv6的VPC的網路ACL時,系統不會自動添加允許所有IPv6流量的自訂規則,可能影響IPv6通訊。
Terraform
本樣本分別在出入方向添加了拒絕規則,您應根據實際的存取控制策略調整規則配置。
Resources:alicloud_network_acl
# 指定網路ACL的地區
provider "alicloud" {
region = "cn-hangzhou"
}
# 指定VPC ID
variable "vpc_id" {
default = "vpc-bp1k******" # 修改為VPC的實際ID
}
# 指定交換器ID
variable "vswitch_id" {
default = "vsw-bp1y******" # 修改為交換器的實際ID
}
# 建立網路ACL並綁定交換器
resource "alicloud_network_acl" "example_network_acl" {
vpc_id = var.vpc_id # 指定網路ACL所屬VPC
network_acl_name = "example_network_acl_name"
resources {
resource_id = var.vswitch_id # 指定網路ACL關聯的交換器
resource_type = "VSwitch"
}
ingress_acl_entries { # 指定入方向規則
network_acl_entry_name = "example-ingress"
protocol = "tcp" # 協議類型
source_cidr_ip = "10.0.0.0/24" # 源地址
port = "20/80" # 連接埠範圍
policy = "drop" # 策略
}
egress_acl_entries { # 指定出方向規則
network_acl_entry_name = "example-egress"
protocol = "tcp"
destination_cidr_ip = "10.0.0.0/24" # 目的地址
port = "20/80" # 連接埠範圍
policy = "drop" # 策略
}
}網路ACL規則配置樣本
限制不同交換器下ECS的互連
同一VPC內的不同交換器之間預設私網互連,如需限制不同交換器下的資源互連,您可以使用網路ACL拒絕特定IP的訪問。
如圖,您可以為交換器1綁定的網路ACL配置出入方向規則,禁止交換器1中的執行個體與ECS06互連。
僅允許特定IP訪問雲上服務
使用Express Connect實現線下IDC與VPC互連後,線下IDC中的所有資源都可以訪問雲上服務。您可以使用網路ACL僅允許特定IP訪問,拒絕其他訪問。
如圖,您可以為交換器綁定的網路ACL配置出入方向規則,僅允許雲下伺服器1和雲下伺服器2訪問交換器內的執行個體。
更多資訊
計費說明
網路ACL功能不收費。
支援的地區
地區 | 支援網路ACL的地區 |
亞太地區-中國 | 華東1(杭州)、華東2(上海)、華東5 (南京-本地地區)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、華南1(深圳)、華南2(河源)、華南3(廣州)、西南1(成都)、中國香港、華中1(武漢-本地地區)、華東6(福州-本地地區) |
亞太地區-其他 | 日本(東京)、韓國(首爾)、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、菲律賓(馬尼拉)、泰國(曼穀) |
歐美地區 | 德國(法蘭克福)、英國(倫敦)、美國(矽谷)、美國(維吉尼亞)、墨西哥 |
中東 | 阿聯酋(杜拜)、沙特(利雅得) 重要 沙特(利雅得)地區由夥伴營運。 |
配額
配額名稱 | 描述 | 預設限制 | 提升配額 |
vpc_quota_nacl_ingress_entry | 單個網路ACL支援建立的入方向規則數量 網路ACL所屬VPC開啟了IPv6時,支援建立的IPv4/IPv6入方向規則,預設均為20條。 | 20條 | |
vpc_quota_nacl_egress_entry | 單個網路ACL支援建立的出方向規則數量 網路ACL所屬VPC開啟了IPv6時,支援建立的IPv4/IPv6入方向規則,預設均為20條。 | 20條 | |
nacl_quota_vpc_create_count | 單個VPC支援建立的網路ACL數量 | 20個 |