當您使用ALB Ingress對外暴露服務時,您可以使用存取控制ACL,設定特定IP地址的用戶端訪問服務要求的允許或拒絕規則。本文介紹如何通過AlbConfig建立、修改存取控制條目以及關聯已有存取控制策略組。
工作原理
ALB Ingress通過將存取控制策略組關聯到監聽,並配置白名單或者黑名單,從而對特定IP地址的用戶端請求進行精細化控制。存取控制策略組包含一組IP位址區段條目。當您為AlbConfig中的監聽關聯策略組後,監聽會使用原則組中的條目對訪問後端服務的請求的源IP進行匹配,使用以下兩種方式進行存取控制:
白名單:只允許匹配策略組的源IP訪問後端服務。
黑名單:拒絕匹配策略組的源IP訪問後端服務。
ACL僅支援使用IPv4地址進行存取控制。
您可參照下圖,理解ACL的工作原理。
配置方式
您可以使用以下兩種方法為監聽關聯策略組:
對比項 | ||
ALB Ingress Controller版本 | 在2.7.0及之後的版本支援該欄位。 | 所有版本都支援。 |
能否關聯已有策略組 | 使用已有策略組的ID進行關聯。 | 2.7.0及之後的版本不支援關聯已有策略組。 |
建立策略組的方式 | 使用前需要在ALB控制台中手動建立策略組。 | 通過AlbConfig直接建立策略組。 |
適用情境 | 適用於有頻繁變更策略組IP條目的需求,希望低成本維護的情境。 | 適用於監聽和策略組條目較少,希望快速實現存取控制的情況。 |
ACL配置中的
aclIds和aclEntries欄位是互斥的,同一個監聽只能選擇一種方式來配置ACL。如果同時使用兩種方式會出現報錯。ALB Ingress Controller在2.7.0及之後的版本中,只支援監聽使用
aclIds欄位複用已存在的策略組。
前提條件
已建立AlbConfig,並完成AlbConfig中的監聽配置。aclConfig作為監聽的屬性,需要關聯到監聽上使用。
使用aclIds欄位為監聽關聯策略組
步驟一:建立存取控制策略組
在配置存取控制之前,您需要先建立存取控制策略組。
在頂部功能表列,選擇所屬地區。
在左側導覽列,選擇。
在存取控制頁面,單擊建立存取控制策略組。
在建立存取控制原則組對話方塊,完成以下配置,然後單擊確定。
配置
說明
策略組名稱
輸入自訂策略組名稱。
所屬資源群組
選擇一個資源群組。
標籤
設定標籤鍵和標籤值。
設定標籤後,您可以在存取控制頁面使用標籤篩選存取控制策略組。
步驟二:添加IP條目
建立存取控制策略組後,您需要為每個策略組添加IP條目。IP條目是訪問ALB執行個體的源IP。每個策略組可添加多個IP地址條目或IP位址區段條目。
在存取控制頁面,找到目標存取控制策略組,然後單擊存取原則組ID或在操作列單擊管理存取控制原則組。
在存取控制詳情頁的條目頁簽,您可以通過以下兩種方式添加策略組條目。
單個添加策略組條目
單擊添加條目,在添加策略組條目對話方塊,輸入地址/位址區段和備忘,單擊添加。
大量新增策略組條目
單擊大量新增條目,在添加策略組條目對話方塊,按照介面提示大量新增IP地址或IP位址區段、備忘,單擊添加。
說明大量新增IP條目時請注意:
每個條目一行,以斷行符號分隔。
每個條目中IP地址或IP位址區段與備忘之間用豎線(|)分隔,例如192.168.1.0/24|備忘。
單次最多支援添加20個條目。
添加完策略組條目後,您可以根據需要執行以下操作。
添加IP條目或IP位址區段後,您可以在條目列表中查看IP條目資訊。
如果需要刪除條目,在目標條目操作列單擊刪除,或選中目標條目,然後在列表下方單擊刪除。
如果需要匯出條目,在條目列表右上方單擊
匯出全部條目,或選中目標條目後單擊
匯出目標條目。
步驟三:關聯策略組
如下方YAML所示,在已有AlbConfig中添加spec.listeners.aclConfig欄位,將建立的存取控制策略組ID(例如acl-wtg***)添加到aclIds列表中完成關聯。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclType: White # 白名單模式
aclIds:
- acl-wtg*** # 將已有的存取控制策略組ID(acl-wtg***)添加到ACL配置中。
#...aclConfig的參數說明如下。
參數 | 說明 |
| 用於設定監聽的ACL為黑名單或白名單。取值為 |
| 關聯的存取控制策略組的ID。 重要 每個監聽最多可以關聯3個策略組。 |
步驟四:效果驗證
您可以使用一台公網IP不在黑名單內,或在白名單內的用戶端機器嘗試訪問後端服務,驗證ACL配置的效果。
以建立ALB Ingress中建立的資源為例。
當用戶端機器的訪問被允許時,能正常訪問後端服務:

(可選)步驟五:解除關聯策略組
如下方YAML所示,如果您需要解除已經關聯的存取控制策略組,只需將該策略組對應的ID從aclIds列表中移除,或將aclIds修改為null。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclType: White
aclIds: null # 將已有的存取控制策略組ID(acl-wtg***)解除。
#...在AlbConfig中無法刪除策略組,如有需要,您可以登入應用型負載平衡ALB控制台進行刪除。
使用aclEntries欄位建立存取控制條目
ALB Ingress Controller在2.7.0及之後的版本中不再支援使用
aclName欄位關聯已有策略組。每一次對aclName欄位中參數的更新,都會建立並關聯一個新的策略組。ALB Ingress Controller在2.6.0及之前的版本中,預設使用一種稱為“回寫操作”的機制。回寫操作的具體機制如下:
如果AlbConfig中的
aclConfig欄位未填入參數,則會將監聽關聯的策略組條目回寫到AlbConfig。如果
aclConfig欄位中已填入參數(或已被回寫),則不會對AlbConfig做任何修改。
在Ingress資源發生變更時,ALB Ingress Controller會使用AlbConfig中的配置覆蓋控制台側的ACL配置。您需要自我維護配置的一致性。
步驟一:配置存取控制策略條目
如下方YAML所示,在已有AlbConfig中添加或修改spec.listeners.aclConfig欄位,在aclEntries欄位中填入IP位址區段。如果在aclName欄位中填入了參數,則會以這個參數為名建立新的策略組;如果未填入參數,則會使用acl-{albName}-{port}的規則自動產生參數。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclEntries:
- 192.168.XX.XX/16
- 172.10.XX.XX/16
aclType: White # 白名單模式
aclName: "acl-test" # 會建立並關聯名為acl-test的新策略組
#...aclConfig的參數說明如下。
參數 | 說明 |
| 用於設定存取控制條目IP位址區段,且IP位址區段必須是完整的CIDR地址,例如127.0.0.1/32。 |
| 用於設定監聽的ACL為黑名單或白名單。取值為 |
| 用於設定存取控制策略組的名稱。 |
步驟二:效果驗證
您可以使用一台公網IP不在黑名單內,或在白名單內的用戶端機器嘗試訪問後端服務,驗證ACL配置的效果。
以建立ALB Ingress中建立的資源為例。
當用戶端機器的訪問被允許時,能正常訪問後端服務:

(可選)步驟三:移除存取控制策略
如下方YAML所示,存取控制策略條目的移除可以通過變更AlbConfig資源來實現。如下代碼已經移除了172.10.XX.XX/16的白名單策略。在AlbConfig中對aclEntries的更新會同步到關聯的策略組(本樣本為“acl-test”策略組)。aclEntries欄位留空時,策略組中的條目會全部移除。
apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
name: default
spec:
config:
#...
listeners:
- port: #...
protocol: #...
aclConfig:
aclEntries:
- 192.168.XX.XX/16
aclType: White
aclName: "acl-test" # acl-test策略組中的172.10.XX.XX/16條目也會被移除
#...在AlbConfig中無法刪除策略組,如有需要,您可以登入應用型負載平衡ALB控制台進行刪除。
相關文檔
您可以為叢集API Server配置存取控制能力,請參見配置API Server的存取控制策略。
叢集內節點的出入流量受到安全性群組的限制。如需要對安全性群組進行配置,請參見配置叢集安全性群組。