全部產品
Search
文件中心

API Gateway:IP存取控制外掛程式

更新時間:Jul 13, 2024

IP存取控制外掛程式API Gateway提供的 API 安全防護組件之一,負責控制 API 的調用來源 IP (支援IP段)。您可以通過配置某個 API 的 IP 白名單/黑名單來允許/拒絕某個來源的API請求。

1. 概述

支援白名單或黑名單方式:

  • 白名單:支援配置 IP 或者 APPID + IP 的白名單訪問,不在白名單列表的請求將會被拒絕。 

    • IP 白名單,只允許設定的調用來源 IP 的請求被允許。

    • APPID + IP 此APPID只能在設定的 IP 下訪問,其他 IP 來源將被拒絕。

  • 黑名單:您可以配置 IP 黑名單,黑名單中 IP 的訪問將被 API 網關拒絕。

重要

IP存取控制外掛程式僅支援Ipv4地址,不支援Ipv6地址。

2. 外掛程式配置

可以選擇JSON或者YAML格式的來配置您的外掛程式,兩種格式的schema相同,可以搜尋yaml to json轉換工具來進行配置格式的轉換,yaml格式的模板見下表。

---
type: ALLOW           # 控制模式,支援白名單模式'ALLOW'和黑名單模式'REFUSE'
resource: "XFF:-1"   # 可選欄位,如果設定本欄位,取X-Forwarded-For頭中的IP作為判斷依據,本樣本取XFF頭的倒數第一個IP作為用戶端源IP判斷,
items: 
- blocks:         # IP位址區段
  - 61.3.XX.XX/24   # 使用CIDR方式配置
  appId: 219810   # (可選) 如果配置了appId則該條目僅對該AppId生效
- blocks:         # IP地址
  - 79.11.XX.XX    # 使用IP地址方式配置
- blocks:         # 使用者VPC
  - 192.168.XX.XX/32    # 專享執行個體情境,從使用者VPC內訪問API Gateway的請求,API Gateway看到的來源地址處於這個位址區段

需要特別注意最後一點,專享執行個體情境,API Gateway允許從使用者VPC內發送請求到API Gateway,此時API Gateway可以直接讀取來源VPC內的地址,比如192.168.XX.XX,使用者佈建黑白名單時可以直接使用VPC內地址作為配置值。

3. 穿透WAF配置

如果API Gateway前面有WAF等中介軟體,業務需要實現API層級IP黑白名單能力時,就需要用到resource欄位,resource欄位為可選欄位,如果不填寫,取和網關直接連接前一跳的IP作為判斷依據。如果填寫本欄位,允許設定X-Forwarded-For頭中的值作為IP判斷依據。

說明

WAF會將他收到的請求的源IP加入到X-Forwarded-For頭的最後發送給API Gateway,API Gateway去判斷X-Forwarded-For頭中的這個值就可以。這種情況建議使用者使用"XFF:-1"來判斷WAF前一跳的IP地址。

resource欄位填寫格式為“XFF:index”,index的值為X-Forwarded-For頭中IP排序序號,從0開始算,允許負數,比如X-Forwarded-For的值為IP1,IP2,IP3,那麼如果index值為0,取IP1,如果index的值為-1,取IP3,也就是倒數第一個IP。

4. 跨VPC訪問

在跨VPC訪問的情況,API Gateway可以直接從請求中讀取來源VPC內的IP地址,您可以放心編寫針對VPC內IP的IP存取控制外掛程式。API Gateway還可以讀取到來源VPC的VPCID,您可以通過設定參數存取控制外掛程式來設定只允許某些指定的VPC訪問您的API。

5. 接入WAF的同時跨VPC訪問

有一種情境,使用者的API需要同時對公網和內網提供服務,而在公網提供服務的時候,在API Gateway前接入了WAF中介軟體,需要API Gateway對WAF前的用戶端做IP存取控制,同時需要對內網來源做IP存取控制。網關為了這種情境做了適配,使用者可以用resource欄位和allowResourceMissing欄位配合使用來實現同時控制內網和使用WAF等中介軟體的公網的來源IP。使用者通過設定resource欄位來指定API Gateway從X-Forwarded-For頭中擷取透過WAF中介軟體過來的用戶端的IP,通過allowResourceMissing欄位來配置API Gateway遇到用戶端沒有傳X-Forwarded-For頭時的內網訪問情境,從前一跳擷取用戶端的IP作為判斷依據。下面是例子:

---
type: ALLOW           # 控制模式,支援白名單模式'ALLOW'和黑名單模式'REFUSE'
resource: "XFF:-1"   # 可選欄位,如果設定本欄位,取X-Forwarded-For頭中的IP作為判斷依據,本樣本取XFF頭的倒數第一個IP作為用戶端源IP判斷
allowResourceMissing: "true"  #允許Resource缺失,缺失時取API Gateway的前一跳的IP作為判斷條件
items: 
- blocks:         # IP位址區段
  - 61.3.XX.XX/24   # 使用CIDR方式配置
  appId: 219810   # (可選) 如果配置了appId則該條目僅對該AppId生效
- blocks:         # IP地址
  - 79.11.XX.XX    # 使用IP地址方式配置
- blocks:         # 使用者VPC
  - 192.168.XX.XX/32    # 專享執行個體情境,從使用者VPC內訪問API Gateway的請求,API Gateway看到的來源地址處於這個位址區段

6. IP存取控制外掛程式支援外掛程式資料集

IP存取控制外掛程式的配置和詳細說明參考IP存取控制外掛程式

6.1. 建立外掛程式資料集

登入【API Gateway控制台】-【外掛程式管理】-【自訂資料集】建立資料集,並在資料集類型上選擇IP_WHITELIST_CIDR

image..png

然後可以通過點擊資料集ID查看資料集中資料條目,點擊建立資料集條目可以添加IP資料條目,資料值為IP地址或IP位址區段,並且可以給該資料條目設定到期時間。資料集中的資料條目在到達其到期時間後將自動失效。

image..png

重要

外掛程式資料集只在專享執行個體生效,如果您配置了資料集的外掛程式所綁定的API不是配置在專享執行個體上,那麼外掛程式中配置的資料集將不生效。

6.2. IP存取控制外掛程式配置外掛程式資料集

IP存取控制外掛程式中配置外掛程式資料集是在IP存取控制外掛程式中配置的基礎上,在items集合元素中增加blocksDatasetId欄位,該欄位的值就是上述建立的IP_WHITELIST_CIDR類型的資料集ID。blocksDatasetIdblocks是相互相容的,每個item中可以同時配置blocksDatasetIdblocks,也可以單獨配置其中一個。

---
type: ALLOW 
items: 
- blocksDatasetId: 87b65008e92541938537b1a4a236eda5
  appId: 219810
- blocksDatasetId: 87b65008e92541938537b1a4a236eda3
  blocks:
  - 127.0.XX.XX
  - 192.168.XX.XX/24