全部產品
Search
文件中心

Container Service for Kubernetes:通過AlbConfig配置ACL實現存取控制

更新時間:Jun 21, 2025

當您使用ALB Ingress對外暴露服務時,您可以使用存取控制ACL,設定特定IP地址的用戶端訪問服務要求的允許或拒絕規則。本文介紹如何通過AlbConfig建立、修改存取控制條目以及關聯已有存取控制策略組。

工作原理

ALB Ingress通過將存取控制策略組關聯到監聽,並配置白名單或者黑名單,從而對特定IP地址的用戶端請求進行精細化控制。存取控制策略組包含一組IP位址區段條目。當您為AlbConfig中的監聽關聯策略組後,監聽會使用原則組中的條目對訪問後端服務的請求的源IP進行匹配,使用以下兩種方式進行存取控制:

  • 白名單:只允許匹配策略組的源IP訪問後端服務。

  • 黑名單:拒絕匹配策略組的源IP訪問後端服務。

重要

ACL僅支援使用IPv4地址進行存取控制。

您可參照下圖,理解ACL的工作原理。

配置方式

您可以使用以下兩種方法為監聽關聯策略組:

對比項

使用aclIds欄位(推薦)

使用aclEntries欄位

ALB Ingress Controller版本

在2.7.0及之後的版本支援該欄位。

所有版本都支援。

能否關聯已有策略組

使用已有策略組的ID進行關聯。

2.7.0及之後的版本不支援關聯已有策略組。

建立策略組的方式

使用前需要在ALB控制台中手動建立策略組。

通過AlbConfig直接建立策略組。

適用情境

適用於有頻繁變更策略組IP條目的需求,希望低成本維護的情境。

適用於監聽和策略組條目較少,希望快速實現存取控制的情況。

重要
  • ACL配置中的aclIdsaclEntries欄位是互斥的,同一個監聽只能選擇一種方式來配置ACL。如果同時使用兩種方式會出現報錯。

  • ALB Ingress Controller在2.7.0及之後的版本中,只支援監聽使用aclIds欄位複用已存在的策略組。

前提條件

已建立AlbConfig,並完成AlbConfig中的監聽配置。aclConfig作為監聽的屬性,需要關聯到監聽上使用。

使用aclIds欄位為監聽關聯策略組

步驟一:建立存取控制策略組

在配置存取控制之前,您需要先建立存取控制策略組。

  1. 登入應用型負載平衡ALB控制台

  2. 在頂部功能表列,選擇所屬地區。

  3. 在左側導覽列,選擇应用型负载均衡ALB > 存取控制

  4. 存取控制頁面,單擊建立存取控制策略組

  5. 建立存取控制原則組對話方塊,完成以下配置,然後單擊確定

    配置

    說明

    策略組名稱

    輸入自訂策略組名稱。

    所屬資源群組

    選擇一個資源群組。

    標籤

    設定標籤鍵標籤值

    設定標籤後,您可以在存取控制頁面使用標籤篩選存取控制策略組。

步驟二:添加IP條目

建立存取控制策略組後,您需要為每個策略組添加IP條目。IP條目是訪問ALB執行個體的源IP。每個策略組可添加多個IP地址條目或IP位址區段條目。

  1. 存取控制頁面,找到目標存取控制策略組,然後單擊存取原則組ID或在操作列單擊管理存取控制原則組

  2. 在存取控制詳情頁的條目頁簽,您可以通過以下兩種方式添加策略組條目。

    • 單個添加策略組條目

      單擊添加條目,在添加策略組條目對話方塊,輸入地址/位址區段備忘,單擊添加

    • 大量新增策略組條目

      單擊大量新增條目,在添加策略組條目對話方塊,按照介面提示大量新增IP地址或IP位址區段、備忘,單擊添加

      說明

      大量新增IP條目時請注意:

      • 每個條目一行,以斷行符號分隔。

      • 每個條目中IP地址或IP位址區段與備忘之間用豎線(|)分隔,例如192.168.1.0/24|備忘

      • 單次最多支援添加20個條目。

  3. 添加完策略組條目後,您可以根據需要執行以下操作。

    • 添加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的參數說明如下。

參數

說明

aclType

用於設定監聽的ACL為黑名單或白名單。取值為BlackWhite

aclIds

關聯的存取控制策略組的ID。

重要

每個監聽最多可以關聯3個策略組。

步驟四:效果驗證

您可以使用一台公網IP不在黑名單內,或在白名單內的用戶端機器嘗試訪問後端服務,驗證ACL配置的效果。

建立ALB Ingress中建立的資源為例。

當用戶端機器的訪問被允許時,能正常訪問後端服務:

image

(可選)步驟五:解除關聯策略組

如下方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的參數說明如下。

參數

說明

aclEntries

用於設定存取控制條目IP位址區段,且IP位址區段必須是完整的CIDR地址,例如127.0.0.1/32。

aclType

用於設定監聽的ACL為黑名單或白名單。取值為BlackWhite

aclName

用於設定存取控制策略組的名稱。

步驟二:效果驗證

您可以使用一台公網IP不在黑名單內,或在白名單內的用戶端機器嘗試訪問後端服務,驗證ACL配置的效果。

建立ALB Ingress中建立的資源為例。

當用戶端機器的訪問被允許時,能正常訪問後端服務:

image

(可選)步驟三:移除存取控制策略

如下方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控制台進行刪除。

相關文檔