變更偵測工具
我們建構了異動偵測工具,可找出在轉換至 Edge for Private Cloud 4.54.00 期間和之後,可能受到影響的 Apigee Proxy、政策、共用流程和資源 JAR (在 Proxy、環境或組織層級)。這項工具會產生報表,詳細列出受變更影響的已部署 Proxy、共用流程和資源 JAR,並提供與這些 Proxy 或共用流程相關的特定指南和策略。
必要條件
- 您必須使用 RHEL 或 Rocky Linux 機器,才能執行這項工具 (請參閱 Edge 安裝需求)。
- 主機必須安裝 JRE 8 以上版本並正確設定,才能執行工具的指令碼。
- 這項工具需要網路存取權,才能連線至管理伺服器的端點 (網址),並需要有效的管理員憑證,才能進行驗證及擷取資料。
- 這項工具需要存取指定的目前使用的目錄 (例如
/tmp),且該目錄必須有足夠的磁碟空間,以及下載套件、產生記錄和儲存輸出內容的適當讀取/寫入權限。 - (選用) 從 4.53.00 版升級時,工具需要使用「OpenLDAP 變更 - 擷取 LDAP 資料」一節中的
ldapsearch指令產生的 LDIF 檔案,偵測超過 241 個字元/位元組的長 RDN。
執行工具
符合所有必要條件後,請使用 Apigee 憑證從 Apigee 存放區下載工具,並解壓縮下載的封存檔:
curl -u uName:pWord https://software.apigee.com/apigee/change-detector/change-detector-for-4.54.00_1.0.0.zip -o /tmp/change-detector-for-4.54.00_1.0.0.zip
unzip /tmp/change-detector-for-4.54.00_1.0.0.zip
下載完成後,您可以執行下列指令,查看工具的所有可用選項:
./change-detector --help
如要執行工具,請使用下列指令,並將預留位置替換為您的資訊:
export APIGEE_PASSWORD=YOUR_PASSWORD ./change-detector --username YOUR_USERNAME --mgmt-url MGMT_URL --source-version SOURCE_VERSION
直接從 Edge for Private Cloud 4.53.01 升級時,請指定 --source-version 4.53.01,掃描 Java 21 變更。如果從 4.53.00 版升級,請指定 --source-version 4.53.00 執行累計掃描,涵蓋 4.53.01 版政策淘汰項目和 Java 21 變更。
這項工具會以 CSV 或 JSON 格式產生輸出內容,可直接查看或匯入 Google 試算表等試算表應用程式。
瞭解工具輸出內容
報表包含下列資料欄:
組織
構件所在組織的名稱。如果是 OpenLDAP 變更,請參閱None。
環境
機構內的特定環境 (例如 dev、test、prod)。如果是組織層級的 JAR,這個欄位為 N/A。如果是 OpenLDAP 變更,則為 None。
Proxy 名稱
API Proxy 或共用流程的名稱。如果是機構層級的 JAR 資源,則會顯示機構名稱。如果是環境層級的 JAR 資源,則會顯示環境名稱。如果是 OpenLDAP 變更,這個欄位會顯示 RDN 的 LDAP 實體。
範圍
指定掃描構件的範圍和層級:
proxy-level-jar:在 Proxy 層級上傳的 JAR 資源檔案 (位於/resources/java下方)。env-level-jar:在環境層級上傳的 JAR 資源檔案 (請參閱「資源檔案」)。org-level-jar:在組織層級上傳的 JAR 資源檔案。proxy:API Proxy 修訂版本中的政策或設定。sharedflow:共用流程修訂版本中的政策或設定。ldif:OpenLDAP LDIF 檔案 (用於 OpenLDAP 檢查)。
修訂版本
API Proxy 或共用流程的特定修訂版本號碼。如果是環境或組織層級的 JAR,這個欄位為 N/A。如果是 OpenLDAP 變更,則為 None。
政策名稱
已識別為潛在問題的特定政策名稱 (例如 JavaCallout-ValidateAccount 或 OASValidation-1)。如果是機構層級資源,這個欄位會顯示 N/A (Organization Resource)。如果是環境層級資源,這個欄位會顯示 N/A (Environment Resource)。如果是 OpenLDAP 變更,則為 None。
政策類型
政策類型 (例如 java-callout 或 OASValidation)。如果是 OpenLDAP 變更,則為 None。
來源版本
掃描設定的來源 OPDK 版本 (4.53.00 或 4.53.01)。
受影響的資源
說明偵測到的特定資源或程式庫:
- Java 21 摘要偵測:受影響 JAR 檔案的確切名稱 (例如
order-transform.jar或corba-callout.jar)。 - 如要瞭解舊版 4.53 淘汰項目,請參閱
deprecated library detected for NAME_OF_THE_AFFECTED_JAVA_CALLOUT_JAR。 - 如果是 OAS、JSONPath 或 OpenLDAP 偵測:特定政策元素或資源 (例如
oas content type handling、wildcard expression或LDAP RDN exceeds 241 characters)。
偵測原因
提供詳細診斷資訊,說明商品遭標記的原因:
- Java 21 摘要偵測:特定類別、目標替代程式庫 (如適用) 和根本原因 (例如
Class: javax.xml.bind.JAXBContext | Target Library: jakarta.xml.bind-api-2.3.3.jar | Root Cause: ClassNotFoundException: JAXB API was removed from Java SE in Java 11 (JEP 320))。如果在同一個 JAR 中偵測到多個問題,系統會以;分隔並整合。 - 舊版 4.53 淘汰項目:已淘汰程式庫中參照的類別清單 (例如
['Detected use of class CLASS_NAME from JAR_NAME'])。 - OAS 驗證:
Source標記中指定的變數 (例如Source=response)。 - JSONPath:標記的確切運算式。
- OpenLDAP:超過 241 個位元組或字元的特定 LDAP 實體 RDN。
影響確定度
這個欄位會指出工具識別出升級阻礙因素的可信度。值會標準化為大寫:
HIGH:工具偵測到不相容的變更 (例如呼叫已永久移除的類別,如javax.xml.bind.JAXBContext或sun.misc.BASE64Encoder,或 OpenLDAP RDN 超過 241 個位元組)。除非經過修復,否則幾乎可以確定會發生執行階段失敗 (ClassNotFoundException或NoClassDefFoundError)。MEDIUM:這項工具偵測到需要開發人員檢查和功能驗證的模式:- Java 呼叫:標記為
METHOD_SIGNATURE_MODIFICATION(例如org.w3c.dom.Document),其中類別存在於 Java 21,但特定方法可能已變更或淘汰。 - OASValidation 政策:在
<Source>元素中使用動態執行階段變數 (例如Source=response) 時會標示為違規,這需要擷取追蹤記錄,才能在 Proxy 執行期間觀察已解析的變數。
- Java 呼叫:標記為
範例偵測報告
Java 21 掃描目標報告 (--source-version 4.53.01)
以下範例說明從 OPDK 4.53.01 升級至 4.54.00 時的報表輸出內容:
| 組織 | 環境 | Proxy 名稱 | 範圍 | 修訂版本 | 政策名稱 | 政策類型 | 來源版本 | 受影響的資源 | 偵測原因 | 影響確定度 |
|---|---|---|---|---|---|---|---|---|---|---|
my-org |
prod |
order-processing |
proxy-level-jar |
12 |
JavaCallout-ParseXml |
java-callout |
4.53.01 |
jaxb-callout.jar |
Class: javax.xml.bind.JAXBContext | Cause: ClassNotFoundException..... |
HIGH |
my-org |
stage |
legacy-corba-bridge |
proxy-level-jar |
1 |
JavaCallout-CorbaClient |
java-callout |
4.53.01 |
corba-callout.jar |
Class: org.omg.CORBA.ORB | Cause: ClassNotFoundException..... |
HIGH |
my-org |
prod |
prod |
env-level-jar |
N/A |
N/A (Environment Resource) |
java-callout |
4.53.01 |
env-security-utils.jar |
Class: sun.misc.BASE64Encoder | Cause: ClassNotFoundException..... |
HIGH |
my-org |
N/A |
my-org |
org-level-jar |
N/A |
N/A (Organization Resource) |
java-callout |
4.53.01 |
cglib-nodep-2.2.jar |
Class: net.sf.cglib.proxy.Enhancer | Cause: IllegalArgumentException..... |
HIGH |
my-org |
prod |
invoice-parser |
proxy-level-jar |
5 |
JavaCallout-ParseInvoice |
java-callout |
4.53.01 |
invoice-dom.jar |
Class: org.w3c.dom.Document | Cause: Modified methods in Java 21..... |
MEDIUM |
my-org |
prod |
payment-gateway |
proxy-level-jar |
3 |
JavaCallout-SignToken |
java-callout |
4.53.01 |
payment-lib.jar |
Class: com.mycompany.crypto.OldProvider | Target: custom-crypto-3.0.jar..... |
HIGH |
累計掃描報表 (--source-version 4.53.00)
以下範例說明從 OPDK 4.53.00 升級至 4.54.00 的報表輸出內容:
| 組織 | 環境 | Proxy 名稱 | 範圍 | 修訂版本 | 政策名稱 | 政策類型 | 來源版本 | 受影響的資源 | 偵測原因 | 影響確定度 |
|---|---|---|---|---|---|---|---|---|---|---|
my-org |
prod |
customer-portal |
proxy |
3 |
ValidateOpenAPISpec |
OASValidation |
4.53.00 |
oas content type handling |
Source=response |
MEDIUM |
my-org |
prod |
accounts-api |
proxy-level-jar |
4 |
JavaCallout-ValidateAccount |
java-callout |
4.53.00 |
deprecated: custom-validator.jar..... |
['Detected use of class org.apache.commons.beanutils.....'] |
HIGH |
my-org |
prod |
order-processing |
proxy-level-jar |
12 |
JavaCallout-ParseXml |
java-callout |
4.53.00 |
jaxb-callout.jar |
Class: javax.xml.bind.JAXBContext | Cause: ClassNotFoundException..... |
HIGH |
my-org |
None |
None |
ldif |
None |
None |
None |
4.53.00 |
LDAP RDN exceeds 241 characters |
cn=very-long-rdn-name-exceeding-limit..... |
HIGH |
如需有關修正已識別問題的指引,請參閱「改善策略」。