用戶端 IP 解析

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

對於 Apigee 中的部分功能,例如 AnalyticsAdvanced API Security 功能 (例如濫用偵測和安全性動作),正確識別 API 要求中的用戶端 IP 位址非常重要。

在採用 Proxy 和負載平衡器的現代網路架構中,用戶端 IP 識別程序相當困難,因為這些中介服務可能會隱藏真正的來源 IP 位址。

為克服這項挑戰,Apigee 支援環境層級設定,可指定如何從 X-Forwarded-For (XFF) 標頭解析用戶端 IP 位址,並找出標頭中與網路拓撲和安全性需求相符的 IP 位址索引。使用這項設定可讓您瞭解、控管及保持一致性,以便在環境中為所有要求決定用戶端 IP 位址,並在環境中的進階 API 安全性、流程變數和分析變數中,一致地識別用戶端 IP 位址。

如果未依照本頁所述設定環境層級用戶端 IP 解析,系統會使用預設用戶端 IP 解析行為填入用戶端 IP 位址變數。

預設用戶端 IP 位址解析

如果未在環境層級設定用戶端 IP 解析度,系統會按照「Analytics 維度」一文所述計算 ax_resolved_client_ip 維度的預設值。

如果為環境設定用戶端 IP 解析功能,系統會根據用戶端 IP 解析設定設定流程和 Analytics 變數。請參閱「為環境設定用戶端 IP 解析」一文。

設定環境用戶端 IP 解析度的時機

雖然不需要設定用戶端 IP 位址解析,但如果預設用戶端 IP 位址解析無法滿足您的需求,您可能會想要覆寫預設值,為 Analytics、進階 API 安全性或任何需要一致且可靠的用戶端 IP 位址資訊的其他功能提供指定的用戶端 IP 位址解析。

瞭解用戶端 IP 解析設定語法

用戶端 IP 解析設定的格式如下:

"clientIpResolutionConfig": {
  "headerIndexAlgorithm": {
     "ipHeaderName" : "X-Forwarded-For",
     "ipHeaderIndex": 2
  }
}
where
  • ipHeaderName 是用於用戶端 IP 的標頭。目前支援的標頭值為 X-Forwarded-For
  • ipHeaderIndexipHeaderName 中的索引值。

    正數會選取從左側開始的地址 (新增至標頭的第一個地址),其中左側的第一個位置為 0,後續每個地址的編號都會增加 1 (例如 0, 1, 2)。舉例來說,如果清單為 192.0.2.1, 192.0.2.2, 192.0.2.31 的索引會解析為 192.0.2.2

    負數會從右側選取地址 (新增至標頭的最後一個地址),其中右側的第一個位置為 -1,且每個後續地址都會遞減 1 (例如 -3, -2, -1)。舉例來說,如果清單為 192.0.2.1, 192.0.2.2, 192.0.2.3, 192.0.2.4-1 的索引會解析為 192.0.2.4,而索引 -2 會解析為 192.0.2.3

如要進一步瞭解這項設定,請參閱 organizations.environment API

查看用戶端 IP 解析度設定

您可以使用 Apigee UI 或 Management API,查看環境目前的用戶端 IP 解析設定。

使用 UI 查看用戶端 IP 解析設定

如要使用 Cloud 控制台中的 Apigee UI查看用戶端 IP 解析設定,請依序選取「Management」>「Environments」,選取環境,然後在「About」分頁中查看「Client IP configuration」

Apigee UI 中的用戶端 IP 解析

使用 API 查看用戶端 IP 解析設定

如要使用 Apigee Management API 查看用戶端 IP 解析設定,請向 organizations.environments.get API 傳送要求。

為環境設定用戶端 IP 解析度

為環境設定用戶端 IP 解析設定後,系統會使用指定的演算法填入 client.resolved.ip 資料流變數。Resolved Client IP Analytics 維度也是如此。

設定環境的用戶端 IP 解析設定後,變更可能會影響現有的 Advanced API Security 安全性動作規則設定。檢查現有規則,並視需要重新產生規則,以便使用新的變數和設定。

選擇用於用戶端 IP 解析的索引時,請注意下列事項:

  • Apigee 到 Apigee 的呼叫不會視為特殊情況。請留意並相應略過 IP 數量。
  • 由於 X-Forwarded-For 標頭可能遭到冒用,建議您根據用戶端和 Apigee 負載平衡器之間的預期躍點數,使用正確的索引。惡意使用者可以傳送預先填入的 X-Forwarded-For 標頭。 雖然 XFF 中的第一個 IP 最接近實際的用戶端 IP,但 XFF 中最後一個 IP 最值得信賴,因為負載平衡器知道連線至該 IP 的 TCP 用戶端。

如要在環境中設定用戶端 IP 解析,請使用其中一個 Apigee API 管理 API,在 client_ip_resolution_config 中設定環境的用戶端 IP 解析。如要建立新環境,請使用 organizations.environments.create。針對現有環境使用 updateEnvironmentmodifyEnvironment

測試用戶端 IP 位址解析

儲存新的用戶端 IP 設定後,您可以按照下列操作說明進行測試:

  1. 儲存新的設定後,請等待至少 5 分鐘。
  2. 開始偵錯工作階段。啟用「顯示所有 FlowInfo」設定。
  3. 在「Proxy Request Flow Started」之前,檢查「FlowInfo」。您應該會在該部分看到已設定的用戶端 IP 位址。

請在 FlowInfo 中尋找這些變數:

  • client_ip_resolution.resolved.ip:解析的用戶端 IP 位址。
  • client_ip_resolution.used.fallback:布林值。除非 Apigee 無法使用已設定的用戶端 IP 解析,否則這個值為 false。舉例來說,如果所設定的解析度指定的索引在標頭中不存在。
  • client_ip_resolution.algorithm:用來判斷用戶端 IP 位址的演算法。如果已設定,則為 "HeaderIndexAlgorithm{IpHeaderName:header_name, IpHeaderIndex: $header_index}"。否則會顯示 default

限制

以下限制適用於環境層級的用戶端 IP 解析:

  • 用戶端 IP 解析設定的更新作業最多可能需要 5 分鐘才會生效。
  • 請避免頻繁 (例如每 5 分鐘) 變更用戶端 IP 解析設定,因為這可能會導致效能降低。
  • 在 Apigee hybrid 中為環境設定用戶端 IP 解析設定,適用於 hybrid 1.14.0 以上版本。
  • 您可以透過 Apigee 主控台或 API 查看設定,但只能透過 API 進行設定。
  • 即使沒有惡意使用者,X-Forwarded-For 清單仍需要每個 Proxy 將正確資訊加入清單。完整清單不在 Apigee 的監督和控管範圍內,因此設定用戶端 IP 解析設定,並不能保證可辨識正確的要求 IP 位址。