為了提高云上流量入口安全性,如果您需要對ALB進行基于協議/端口/IP的訪問控制,可以通過為ALB實例配置安全組來實現。相較于ACL,ALB通過安全組能實現更全面的訪問控制,不僅能配置基于協議/端口的訪問控制,而且支持IPv6地址類型的訪問控制策略。
場景說明
ALB實例未加入安全組時,ALB監聽端口默認對所有請求放行。
當ALB實例加入安全組且未設置任何拒絕策略時,ALB監聽端口默認對所有請求放通。如果您需要只允許特定IP訪問ALB,請注意添加一條拒絕策略進行兜底。
如果您需要拒絕或允許特定IP訪問ALB實例,請參見ALB配置安全組實現黑白名單訪問策略。
如果您需要對ALB實現基于協議/端口的訪問控制,請參見ALB配置安全組實現基于監聽/端口粒度的訪問控制。
當您的ALB實例有訪問控制的訴求,希望控制ALB實例的入流量時,您可以選擇為ALB實例添加安全組,同時可基于業務設置相應的安全組規則。
負載均衡的出方向流量為用戶請求的回包。為了保證您的業務正常運行,ALB的安全組對出流量不做限制,您無需額外配置安全組出方向規則。
新增安全組規則時,建議您避免對ALB的Local IP添加優先級為1的拒絕策略,以確保新增的安全組規則不會與ALB托管安全組策略沖突,因為這可能會影響ALB與您的后端服務之間的正常通信。您可以登錄應用型負載均衡ALB控制臺,在實例詳情頁面查看Local IP。
當您希望ALB實例中某些端口的監聽被禁止訪問,其他端口的監聽可以正常訪問時,您可以使用安全組功能實現對端口的嚴格訪問控制。本文從以下三種場景來說明ALB實例加入安全組對端口的訪問控制,以ALB實例配置HTTP 80監聽和HTTP 81監聽為例說明。
場景 | 安全組規則 | 預期效果 | 相關鏈接 |
ALB實例未加入安全組 | ALB監聽端口默認對所有請求放行 |
| |
ALB實例加入安全組 | 拒絕訪問HTTP協議的81端口 說明 此處僅列出與本文強相關的安全組規則,其余默認規則未列出。 |
| |
修改ALB實例加入的安全組 |
說明 此處僅列出與本文強相關的安全組規則,其余默認規則未列出。 |
|
使用限制
安全組功能默認不開放,如需使用,請向商務經理申請。
分類 | 安全組類型 | 說明 |
ALB支持加入的安全組 |
|
關于普通安全組和企業安全組的介紹,請參見普通安全組與企業級安全組。 |
ALB不支持加入的安全組 | 托管安全組 | 關于托管安全組的介紹,請參見托管安全組。 |
前提條件
您已創建了專有網絡VPC1。具體操作,請參見創建和管理專有網絡。
您已在VPC1中創建ECS01和ECS02實例,ECS01和ECS02實例作為ALB實例的后端服務器,且ECS01和ECS02實例中部署了2個不同的應用服務。
關于如何創建ECS實例,請參見自定義購買實例。
本文ECS01和ECS02部署測試應用服務示例如下:
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! This is ECS01." > index.html
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! This is ECS02." > index.html
操作步驟
步驟一:創建服務器組
- 登錄應用型負載均衡ALB控制臺。
在頂部菜單欄,選擇服務器組所屬的地域。本文選擇華東1(杭州)。
在左側導航欄,選擇
。在服務器組頁面,單擊創建服務器組。
在創建服務器組對話框中,完成以下配置,然后單擊創建。
此處僅列出與本文強相關的配置項,其余部分參數可保持默認值。更多信息,請參見創建和管理服務器組。
配置
說明
服務器組類型
選擇一種服務器組類型。本文選擇服務器類型。
服務器組名稱
輸入服務器組名稱。
VPC
從VPC下拉列表中選擇一個VPC。本文選擇已創建的VPC1。
選擇后端協議
選擇一種后端協議。本文選擇HTTP。
選擇調度算法
選擇一種調度算法。本文選擇加權輪詢。
在服務器組創建成功對話框中單擊添加后端服務器。
在后端服務器頁簽單擊添加后端服務器。
在添加后端服務器面板,選擇已創建的ECS01和ECS02實例,然后單擊下一步。
為已添加的服務器設置端口和權重,然后單擊確定。
步驟二:創建ALB實例并配置監聽
- 登錄應用型負載均衡ALB控制臺。
在實例頁面,單擊創建應用型負載均衡。
在購買頁面,完成以下配置。
此處僅列出和本文強相關的配置項,其他未列出的配置項使用默認值。關于參數的更多信息,請參見創建應用型負載均衡。
地域:本文選擇華東1(杭州)。
實例網絡類型:本文選擇公網。
VPC:本文選擇已創建的VPC1。
單擊立即購買,然后根據控制臺提示完成實例開通。
返回實例頁面,找到已創建的ALB實例,單擊該ALB實例ID。
單擊監聽頁簽,然后單擊快速創建監聽。
在快速創建監聽對話框中,配置以下參數,完成HTTP 80監聽的創建,然后單擊確定。
配置
說明
選擇監聽協議
選擇監聽的協議類型。本文選擇HTTP。
監聽端口
輸入監聽端口。本文輸入80。
轉發的后端服務器組
選擇服務器類型及服務器類型下的服務器組。本文選擇已創建好的服務器組。
在監聽頁簽,單擊快速創建監聽。
在快速創建監聽對話框中,配置以下參數,完成HTTP 81監聽的創建,然后單擊確定。
配置
說明
選擇監聽協議
選擇監聽的協議類型。本文選擇HTTP。
監聽端口
輸入監聽端口。本文輸入81。
轉發的后端服務器組
選擇服務器類型及服務器類型下的服務器組。本文選擇已創建好的服務器組。
步驟三:設置域名解析
實際業務場景中,建議您使用自有域名,通過CNAME解析的方式將自有域名指向ALB實例域名。
在左側導航欄,選擇
在實例頁面,復制已創建的ALB實例的DNS名稱。
執行以下步驟添加CNAME解析記錄。
說明對于非阿里云注冊域名,需先將域名添加到云解析控制臺,才可以進行域名解析設置。具體操作,請參見域名管理。如果您是阿里云注冊的域名,請直接執行以下步驟。
登錄域名解析控制臺。
在權威域名解析頁面,找到目標域名,在操作列單擊解析設置。
在解析設置頁面,單擊添加記錄。
在添加記錄面板,配置以下信息完成CNAME解析配置,然后單擊確定。
配置
說明
記錄類型
在下拉列表中選擇CNAME。
主機記錄
您的域名的前綴。本文輸入@。
說明創建域名為根域名時,主機記錄為
@
。解析請求來源
選擇默認。
記錄值
輸入域名對應的CNAME地址,即您復制的ALB實例的DNS名稱。
TTL
全稱Time To Live,表示DNS記錄在DNS服務器上的緩存時間,本文使用默認值。
步驟四:創建安全組
在ALB實例加入安全組前,您需要先至ECS管理控制臺創建安全組。
登錄ECS管理控制臺。
在左側導航欄,選擇
。在頂部菜單欄,選擇安全組所屬的地域。本文選擇華東1(杭州)。
在安全組頁面,單擊創建安全組。
在創建安全組頁面,設置安全組的基本信息參數。
此處僅列出和本文強相關的配置項,其余參數的配置請參見創建安全組。
網絡:本文選擇已創建的專有網絡VPC。
安全組類型:本文選擇普通安全組。
在默認的安全組規則上,配置新增的安全組的訪問規則參數。
在入方向單擊手動添加。
配置新增的安全組規則,按照以下規則分別進行添加。然后單擊創建安全組。
名稱
描述
授權策略
選擇拒絕。
優先級
優先級保持默認值1。
協議類型
協議類型選擇自定義TCP。
說明在設置QUIC監聽的安全組規則時,協議類型選擇自定義UDP。
端口范圍
輸入端口號81。
授權對象
選擇
所有IPv4(0.0.0.0/0)
和所有IPv6(::/0)
。描述
輸入安全組規則描述信息。
步驟五:ALB未加入安全組并驗證結果
測試客戶端與ECS實例ECS01和ECS02之間的連通性。本文以任意一臺可以訪問公網的客戶端為例。
在瀏覽器輸入訪問地址和端口號,例如
http://域名:80
,可以看到如下圖所示,表示ALB可以訪問HTTP協議的80端口。在瀏覽器輸入訪問地址和端口號,例如
http://域名:81
,可以看到如下圖所示,表示ALB可以訪問HTTP協議的81端口。
步驟六:ALB實例加入安全組并驗證結果
ALB實例加入安全組,并驗證安全組規則是否對ALB實例的端口的訪問控制生效。
- 登錄應用型負載均衡ALB控制臺。
在ALB實例頁面,找到目標ALB實例,單擊實例ID,在實例詳情頁簽,單擊安全組頁簽。
在安全組頁簽,單擊添加安全組,在彈出的ALB實例加入安全組對話框中,選擇步驟四:創建安全組創建的安全組,然后單擊確定。
在左側列表框單擊目標安全組ID,可單擊入方向或出方向頁簽分別查看安全組規則。
此處僅列出與本文強相關的安全組入方向規則。此時ALB實例的安全組規則如下:
授權策略
優先級
協議類型
端口范圍
授權對象
允許
1
自定義TCP
目的:80/80
源:所有IPv4(0.0.0.0/0)
允許
1
自定義TCP
目的:80/80
源:所有IPv6(::/0)
拒絕
1
自定義TCP
目的:81/81
源:所有IPv4(0.0.0.0/0)
拒絕
1
自定義TCP
目的:81/81
源:所有IPv6(::/0)
修改ALB實例加入的安全組規則后,測試訪問結果。
在瀏覽器輸入訪問地址和端口號,例如
http://域名:80
,可以看到類似下圖所示,表示ALB實例可以訪問HTTP協議的80端口。在瀏覽器輸入訪問地址和端口號,例如
http://域名:81
,如果無法訪問應用服務,可以打開命令行窗口,執行curl http://訪問地址:81
,如果出現如下圖所示結果,則表示客戶端無法訪問ALB實例的HTTP監聽的81端口,這表明ALB實例的安全組對81端口的訪問控制已生效。
步驟七:修改安全組并驗證結果
修改安全組規則,并驗證修改后的安全組規則是否對ALB實例的端口訪問控制生效。
返回ALB實例頁面,找到目標ALB實例,單擊實例ID。在實例詳情頁簽,單擊安全組頁簽。
在基本信息區域單擊安全組ID,或在安全組頁簽右上角單擊前往ECS控制臺編輯,進入安全組規則頁面修改安全組規則。
在安全組規則頁面,找到允許訪問TCP協議80端口的規則,在操作列單擊編輯,修改授權策略為拒絕,單擊保存。
此處僅列出與本文強相關的安全組規則。修改后的安全組規則如下:
授權策略
優先級
協議類型
端口范圍
授權對象
拒絕
1
自定義TCP
目的:80/80
源:所有IPv4(0.0.0.0/0)
拒絕
1
自定義TCP
目的:80/80
源:所有IPv6(::/0)
拒絕
1
自定義TCP
目的:81/81
源:所有IPv4(0.0.0.0/0)
拒絕
1
自定義TCP
目的:81/81
源:所有IPv6(::/0)
修改ALB實例加入的安全組規則后,測試訪問結果。
打開命令行窗口,執行
curl http://域名:80
,如果出現如下圖所示,則表示客戶端無法訪問ALB實例HTTP監聽的80端口,這表明ALB實例的安全組對80端口訪問控制已生效。打開命令行窗口,執行
curl http://域名:81
,如果出現如下圖所示,則表示客戶端無法訪問ALB實例HTTP監聽的81端口,這表明ALB實例的安全組對81端口訪問控制已生效。
相關文檔
關于ALB添加安全組和解綁安全組等操作,請參見ALB加入安全組。
關于ALB配置安全組實現黑白名單的訪問策略,請參見 ALB配置安全組實現黑白名單訪問策略。
關于普通安全組和企業安全組的介紹,請參見普通安全組與企業級安全組。
LoadBalancerJoinSecurityGroup:為應用型負載均衡實例綁定已創建的安全組。
LoadBalancerLeaveSecurityGroup:為應用型負載均衡實例解綁安全組。