ALB存取控制通過在監聽上配置IP黑白名單,實現對用戶端請求的精細化過濾。使用者可以建立存取控制策略組,添加IP條目,並將策略組關聯到監聽來限制或允許存取特定來源的訪問。
存取控制(ACL)與安全性群組如何選擇
ALB提供兩種存取控制機制:存取控制ACL和安全性群組。
|
對比項 |
存取控制ACL(本文) |
ALB安全性群組 |
|
控制粒度 |
基於源IP,作用於單個監聽。 |
基於源IP + 協議 + 連接埠,作用於整個ALB執行個體。 |
|
IPv6支援 |
不支援,僅可添加IPv4條目。 |
支援IPv4和IPv6地址。 |
|
預設行為 |
白名單模式自動拒絕未列入的IP;黑名單模式自動允許存取未列入的IP。 |
預設放通所有流量,必須顯式添加拒絕規則(0.0.0.0/0)才能限制訪問。 |
|
適用情境 |
簡單IP黑白名單。配置簡便,無需理解優先順序規則。 |
需連接埠粒度控制、IPv6控制、或ICMP協議控制的情境。 |
前提條件
建立存取控制策略組
存取控制策略組是IP條目的集合。建立策略組並添加IP條目後,可將其關聯到監聽以實現黑名單或白名單存取控制。
控制台
-
前往ALB控制台的存取控制頁面,在頂部功能表列選擇目標執行個體所屬地區,然後單擊建立存取控制策略組。
-
在建立存取控制原則組對話方塊,輸入策略組名稱,單擊確定。
-
策略組建立完成後,在存取控制頁面,單擊目標策略組ID進入詳情頁。在條目頁簽,通過以下方式添加IP條目:
-
單個添加:單擊添加條目,在對話方塊輸入地址/位址區段和備忘,單擊添加。
-
大量新增:單擊大量新增條目,按以下格式批量輸入:
-
每個條目一行,以斷行符號分隔。
-
IP地址或IP位址區段與備忘之間用豎線(|)分隔,例如192.168.1.0/24|備忘。
-
單次最多支援添加20個條目。
-
如果大量新增的條目中包含策略組內已存在的條目,大量新增將失敗,需移除重複條目後重新提交。
-
-
添加完成後,可在條目列表中刪除或匯出條目。
API
-
調用CreateAcl建立存取控制策略組。
-
調用AddEntriesToAcl添加IP條目。
-
調用RemoveEntriesFromAcl刪除IP條目。
開啟/關閉存取控制
使用者可以為監聽設定訪問白名單或黑名單:
-
白名單:僅允許策略組內的IP訪問監聽,拒絕其他所有請求。
-
黑名單:拒絕策略組內的IP訪問監聽,允許存取其他所有請求。
無論設定白名單還是黑名單,如果關聯的策略組中沒有任何IP條目,存取控制不會生效,監聽將轉寄全部請求。設定白名單前請確認策略組內已包含需要允許存取的IP,避免阻斷正常業務流量。
控制台
-
前往ALB控制台的執行個體頁面,在頂部功能表列選擇目標執行個體所屬地區,單擊目標執行個體ID。
-
在監聽頁簽,找到目標監聽,在存取控制列單擊啟用或關閉。
-
啟用:在對話方塊選擇存取控制方式(白名單或黑名單)和存取控制策略組,單擊儲存。
-
關閉:在確認對話方塊單擊確定。
-
也可以在監聽詳情頁的存取控制地區開啟或關閉存取控制。
API
-
調用AssociateAclsWithListener將存取控制策略組關聯到監聽。
-
調用DissociateAclsFromListener解除存取控制策略組與監聽的關聯。
常見問題
配了白名單,任意IP仍能訪問
原因:策略組未關聯到監聽;或策略組中沒有添加任何IP條目(空策略組等同於全部放通)。
解決方案:進入ALB執行個體的監聽頁簽,確認目標監聽的存取控制列顯示已開啟,並確認關聯的策略組中包含IP條目。
想臨時全放通,添加0.0.0.0/0到白名單不生效
原因:存取控制策略組不支援添加0.0.0.0/0,控制台會提示格式錯誤。
解決方案:正確做法是直接關閉存取控制,需要時再開啟。
配了黑名單,目標IP仍能訪問
原因:請求經CDN/WAF轉寄到ALB,ALB看到的源IP是CDN/WAF的回源IP,而非用戶端真實IP。
解決方案:ALB存取控制在四層生效,匹配的是請求報文的源IP地址。當請求經CDN/WAF轉寄時,源IP是CDN/WAF的回源IP,因此ALB層的黑名單無法攔截用戶端IP。需要在WAF或CDN層配置黑名單。
黑名單無法攔截X-Forwarded-For中的IP
原因:ALB存取控制在四層生效,僅匹配請求報文的源IP地址,不解析七層HTTP頭部中的X-Forwarded-For欄位。
解決方案:可在 WAF 中通過自訂規則實現:將匹配欄位設為 X-Forwarded-For、邏輯符設為包含、匹配內容填寫目標IP,規則動作設為攔截。參考配置自訂規則中的匹配條件說明。
在後端Nginx配了allow/deny不生效
原因:經過ALB代理後,後端伺服器收到的請求來源IP是ALB的Local IP(從ALB執行個體所在交換器分配的私網地址),Nginx的allow/deny基於來源IP判斷,因此無法匹配用戶端IP。
解決方案:
-
(推薦)改用ALB存取控制功能,在ALB層直接配置IP黑白名單。
-
在Nginx中通過
X-Forwarded-For要求標頭擷取用戶端真實IP,再基於真實IP配置allow/deny規則。
想對單個網域名稱或URL路徑做訪問限制
說明:存取控制ACL作用於監聽層級,無法按網域名稱或路徑區分。開啟後該監聽下所有網域名稱均受影響。
替代方案:標準版或WAF增強版ALB可通過轉寄規則實現——在轉寄條件中同時配置網域名稱/路徑和SourceIp條件,對匹配的請求返回固定響應(如403)。單條轉寄規則的SourceIp條件最多支援5個IP/CIDR段,且不支援0.0.0.0/x格式。如IP數量較多或使用基礎版ALB,建議接入WAF,通過自訂規則實現網域名稱/路徑與IP組合的存取控制。
想封鎖國外IP
說明:ALB存取控制不提供地區封鎖功能,無法自動識別IP所屬國家。
替代方案:可以手動將已知國外IP段加入黑名單,但無法自動更新且條目數有上限。建議使用WAF的地區封鎖功能實現。
多層代理情境的存取控制
當ALB前存在七層代理時,ALB存取控制(四層生效)只能看到上一跳代理的回源IP,無法識別用戶端真實IP,需在正確的層級配置存取控制。以CNAME接入WAF的情境為例(用戶端 → CDN → WAF → ALB → ECS),各層的源IP和存取控制建議如下。
WAF增強版ALB通過SDK整合實現防護,WAF不參與流量轉寄,因此不存在WAF回源環節。如果ALB前無CDN等七層代理,則不存在本節描述的問題。
|
層級 |
看到的源IP |
存取控制建議 |
|
WAF |
|
推薦在此層做IP黑白名單。WAF正確配置後可基於用戶端真實IP進行攔截,同時支援地區封鎖功能。 |
|
ALB |
WAF的回源IP。 |
在ALB配置白名單,僅允許WAF的回源IP段訪問,防止攻擊者繞過WAF直接存取ALB公網IP。WAF回源IP段可在WAF控制台的接入管理頁面查看。 |
|
後端ECS |
ALB的Local IP(從ALB執行個體所在交換器分配的私網地址)。 |
請確保後端 ECS 的 iptables 或其他第三方安全軟體未屏蔽 ALB 的 Local IP 網段,否則健全狀態檢查和請求轉寄會失敗。 |
計費
存取控制功能本身不產生額外費用。ALB執行個體的計費規則請參見ALB計費說明。
配額
|
限制項 |
功能版本 |
上限 |
|
一個存取控制策略組可關聯的監聽數 |
基礎版/標準版/WAF增強版 |
50 |
|
一個監聽可關聯的存取控制策略組數 |
基礎版/標準版/WAF增強版 |
3 |
|
一個地區可支援的存取控制策略組數 |
基礎版/標準版/WAF增強版 |
1000 |
|
一個存取控制策略組可添加的條目數 |
基礎版/標準版/WAF增強版 |
500 |
|
一個ALB執行個體可關聯的存取控制條目數 |
基礎版/標準版/WAF增強版 |
800 |
|
一個監聽可關聯的存取控制條目數 |
基礎版 |
300 |
|
標準版/WAF增強版 |
500 |
上述指標為硬限制,無法提升,詳見ALB配額與限制。