変更検出ツール
Edge for Private Cloud 4.54.00 への移行中および移行後に影響を受ける可能性のある Apigee プロキシ、ポリシー、共有フロー、リソース JAR(プロキシ、環境、組織レベル)を特定するために、変更検出ツールが構築されました。このツールは、変更の影響を受けるデプロイ済みのプロキシ、共有フロー、リソース JAR の詳細を示すレポートを生成し、特定されたプロキシまたは共有フローに関連する特定のガイドと戦略への方向性を示します。
前提条件
- このツールを実行するには、RHEL ベースまたは Rocky Linux マシンが必要です(Edge のインストール要件をご覧ください)。
- ツールのスクリプトを実行できるように、JRE 8 以降をホストマシンにインストールして正しく構成する必要があります。
- このツールでは、管理サーバーのエンドポイント(URL)へのネットワーク アクセスと、認証とデータ取得のための有効な管理者認証情報が必要です。
- このツールでは、バンドルのダウンロード、ログの生成、出力の保存を行うために、十分なディスク容量と適切な読み取り/書き込み権限を持つ指定された作業ディレクトリ(
/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 Name
API プロキシまたは共有フローの名前。組織レベルの JAR リソースの場合、組織名が表示されます。環境レベルの JAR リソースの場合、環境名が表示されます。OpenLDAP の変更の場合、このフィールドには RDN の LDAP エンティティが表示されます。
スコープ
スキャンされたアーティファクトのスコープとレベルを指定します。
proxy-level-jar: プロキシレベル(/resources/javaの下)でアップロードされた JAR リソース ファイル。env-level-jar: 環境レベルでアップロードされた JAR リソース ファイル(リソース ファイルを参照)。org-level-jar: 組織レベルでアップロードされた JAR リソース ファイル。proxy: API プロキシ リビジョン内のポリシーまたは構成。sharedflow: 共有フロー リビジョン内のポリシーまたは構成。ldif: OpenLDAP LDIF ファイル(OpenLDAP チェック用)。
リビジョン
API プロキシまたは共有フローの特定のリビジョン番号。環境レベルまたは組織レベルの 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などの完全に削除されたクラスの呼び出し、241 バイトを超える OpenLDAP RDN など)が検出されました。修正しない限り、ランタイム障害(ClassNotFoundExceptionまたはNoClassDefFoundError)が発生する可能性がほぼ確実です。MEDIUM: デベロッパーによる検査と機能検証が必要なパターンが検出されました。- Java Callout の場合:
METHOD_SIGNATURE_MODIFICATION(org.w3c.dom.Documentなど)でフラグが設定されます。このクラスは Java 21 に存在しますが、特定のメソッドが変更または非推奨になっている可能性があります。 - OASValidation ポリシーの場合:
<Source>要素(Source=responseなど)で動的ランタイム変数が使用されている場合にフラグが設定されます。この場合、プロキシ実行中に解決された変数を観察するためにトレースをキャプチャする必要があります。
- Java Callout の場合:
検出レポートのサンプル
ターゲットを絞った Java 21 スキャン レポート(--source-version 4.53.01)
次のサンプルは、OPDK 4.53.01 から 4.54.00 へのアップグレードのレポート出力の例を示しています。
| 組織 | 環境 | Proxy Name | スコープ | リビジョン | ポリシー名 | ポリシーの種類 | ソース バージョン | 影響を受けるリソース | 検出の理由 | 影響の確実性 |
|---|---|---|---|---|---|---|---|---|---|---|
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 Name | スコープ | リビジョン | ポリシー名 | ポリシーの種類 | ソース バージョン | 影響を受けるリソース | 検出の理由 | 影響の確実性 |
|---|---|---|---|---|---|---|---|---|---|---|
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 |
特定された問題の修正に関するガイダンスについては、修正戦略をご覧ください。