用戶端 IP 解析

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

準確識別 API 要求中的用戶端 IP 位址,對於 Apigee 中的某些功能 (包括數據分析進階 API 安全防護) 十分重要,例如濫用行為偵測和安全防護措施。

在採用 Proxy 和負載平衡器的現代網路架構中,用戶端 IP 識別程序相當具有挑戰性,因為這些中介裝置可能會遮蔽真正的來源 IP 位址。

為克服這項挑戰,Apigee 支援環境層級設定,可指定如何從 X-Forwarded-For (XFF) 標頭解析用戶端 IP 位址,並識別標頭中符合網路拓撲和安全需求 IP 位址的索引。使用這項設定可讓您掌握環境中所有要求的用戶端 IP 位址判斷方式,並確保環境中的進階 API 安全性、流程變數和 Analytics 變數,都能一致地識別用戶端 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,後續每個地址會遞增一 (例如 0, 1, 2)。 舉例來說,如果清單為 192.0.2.1, 192.0.2.2, 192.0.2.31 的索引會解析為 192.0.2.2

    負數會從右側 (新增至標頭的最後一個地址) 開始選取地址,右側第一個位置是 -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 解析度設定

如要查看環境目前的用戶端 IP 解析設定,可以使用 Apigee 使用者介面或 Management API。

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

如要查看用戶端 IP 位址解析設定:

  1. 在 Google Cloud 控制台中,前往「管理」>「環境」頁面。

    前往「環境」

  2. 選取環境,並在「簡介」分頁中查看「用戶端 IP 設定」

    在 Apigee UI 中解析用戶端 IP

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

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

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

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

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

選擇用戶端 IP 位址解析的索引時,請注意下列影響:

  • 系統不會特別處理 Apigee 對 Apigee 的呼叫。請務必記下 IP 數量,並視情況略過。
  • 由於 X-Forwarded-For 標頭可能會遭到偽造,因此最好根據用戶端與 Apigee 負載平衡器之間的預期躍點數,使用正確的索引。惡意使用者可以傳送預先填入的 X-Forwarded-For 標頭。 雖然 XFF 中的第一個 IP 最接近實際的用戶端 IP,但 XFF 中的最後一個 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 解析,而改用預設的用戶端 IP 解析,否則這個值為 false。舉例來說,如果設定的解析度指定了標題中不存在的索引。
  • client_ip_resolution.algorithm:用於判斷用戶端 IP 位址的演算法。如果已設定,則為 "HeaderIndexAlgorithm{IpHeaderName:header_name, IpHeaderIndex: $header_index}"。 否則會顯示 default

限制

環境層級的用戶端 IP 位址解析功能有以下限制:

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