बदलाव का पता लगाने वाला टूल
बदलाव का पता लगाने वाला एक टूल बनाया गया है. इससे Apigee प्रॉक्सी, नीतियों, शेयर किए गए फ़्लो, और रिसोर्स JAR (प्रॉक्सी, एनवायरमेंट या संगठन के लेवल पर) की पहचान की जा सकती है. इन पर, Edge for Private Cloud 4.54.00 पर ट्रांज़िशन के दौरान और उसके बाद असर पड़ सकता है. यह टूल एक रिपोर्ट जनरेट करता है. इसमें, डिप्लॉय किए गए प्रॉक्सी, शेयर किए गए फ़्लो, और रिसॉर्स JAR की जानकारी होती है जिन पर बदलावों का असर पड़ा है. साथ ही, यह टूल उन प्रॉक्सी या शेयर किए गए फ़्लो के लिए, खास गाइड और रणनीतियों के बारे में जानकारी देता है.
ज़रूरी शर्तें
- इस टूल को चलाने के लिए, आरएचईएल पर आधारित या Rocky Linux मशीन की ज़रूरत होती है. Edge को इंस्टॉल करने से जुड़ी ज़रूरी शर्तें देखें.
- होस्ट मशीन पर JRE 8 या इसके बाद का वर्शन इंस्टॉल होना चाहिए. साथ ही, इसे सही तरीके से कॉन्फ़िगर किया जाना चाहिए, ताकि टूल की स्क्रिप्ट चल सकें.
- इस टूल को मैनेजमेंट सर्वर के एंडपॉइंट (यूआरएल) के नेटवर्क ऐक्सेस की ज़रूरत होती है. साथ ही, पुष्टि करने और डेटा वापस पाने के लिए, मान्य एडमिन क्रेडेंशियल की ज़रूरत होती है.
- इस टूल को किसी खास वर्किंग डायरेक्ट्री (उदाहरण के लिए,
/tmp) के ऐक्सेस की ज़रूरत होती है. साथ ही, इस डायरेक्ट्री में डिस्क में बचा स्टोरेज ज़रूरत के मुताबिक होना चाहिए. इसके अलावा, बंडल डाउनलोड करने, लॉग जनरेट करने, और आउटपुट सेव करने के लिए, फ़ाइल या एंट्री में बदलाव करने की अनुमति होनी चाहिए. - (ज़रूरी नहीं) वर्शन 4.53.00 से अपग्रेड करते समय, टूल को एक एलडीआईएफ़ फ़ाइल की ज़रूरत होती है. इसे OpenLDAP change - Extract LDAP data सेक्शन में
ldapsearchकमांड का इस्तेमाल करके जनरेट किया जाता है. इससे 241 वर्णों/बाइट से ज़्यादा लंबे आरडीएन का पता लगाया जाता है.
टूल का इस्तेमाल करना
सभी ज़रूरी शर्तें पूरी होने के बाद, अपने 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 Sheets जैसे स्प्रेडशीट ऐप्लिकेशन में इंपोर्ट किया जा सकता है.
टूल के आउटपुट को समझना
रिपोर्ट में ये कॉलम शामिल होते हैं:
संगठन
उस संगठन का नाम जहां आर्टफ़ैक्ट मौजूद है. OpenLDAP में बदलाव करने के लिए, यह None है.
परिवेश
संगठन के अंदर मौजूद कोई खास एनवायरमेंट. उदाहरण के लिए, dev, test, prod. संगठन-लेवल के JAR के लिए, यह फ़ील्ड N/A होता है. OpenLDAP में बदलाव करने के लिए, यह None है.
प्रॉक्सी का नाम
एपीआई प्रॉक्सी या शेयर किए गए फ़्लो का नाम. संगठन के लेवल पर JAR संसाधनों के लिए, इसमें संगठन का नाम दिखता है. एनवायरमेंट-लेवल के JAR संसाधनों के लिए, यह एनवायरमेंट का नाम दिखाता है. OpenLDAP में किए गए बदलावों के लिए, इस फ़ील्ड में आरडीएन की एलडीएपी इकाई दिखती है.
दायरा
इससे स्कैन किए गए आर्टफ़ैक्ट के स्कोप और लेवल के बारे में पता चलता है:
proxy-level-jar: प्रॉक्सी लेवल पर अपलोड की गई JAR रिसॉर्स फ़ाइल (/resources/javaमें).env-level-jar: एनवायरमेंट लेवल पर अपलोड की गई JAR रिसॉर्स फ़ाइल (रिसॉर्स फ़ाइलें देखें).org-level-jar: संगठन के लेवल पर अपलोड की गई JAR रिसॉर्स फ़ाइल.proxy: एपीआई प्रॉक्सी के किसी वर्शन में मौजूद नीति या कॉन्फ़िगरेशन.sharedflow: शेयर किए गए फ़्लो के किसी बदलाव में मौजूद नीति या कॉन्फ़िगरेशन.ldif: OpenLDAP LDIF फ़ाइल (OpenLDAP की जांच के लिए).
पुनरीक्षण
एपीआई प्रॉक्सी या शेयर किए गए फ़्लो का खास रिविज़न नंबर. एनवायरमेंट या संगठन के लेवल पर 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. - ओएएस, 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 के लिए: LDAP की उस खास इकाई का RDN जो 241 बाइट या वर्णों से ज़्यादा है.
असर की संभावना
इस फ़ील्ड से पता चलता है कि टूल ने अपग्रेड को ब्लॉक करने वाली समस्या की पहचान कितने भरोसे के साथ की है. वैल्यू को कैपिटल लेटर में स्टैंडर्ड किया जाता है:
HIGH: टूल को एक ऐसा बदलाव मिला है जो काम नहीं करता. जैसे, हमेशा के लिए हटाई गई क्लासjavax.xml.bind.JAXBContextयाsun.misc.BASE64Encoderको कॉल करना या OpenLDAP आरडीएन का 241 बाइट से ज़्यादा होना. अगर इस समस्या को ठीक नहीं किया जाता है, तो रनटाइम के दौरान गड़बड़ी होने की संभावना बहुत ज़्यादा है (ClassNotFoundExceptionयाNoClassDefFoundError).MEDIUM: टूल ने एक ऐसा पैटर्न पता लगाया है जिसकी डेवलपर को जांच करनी होगी और यह पुष्टि करनी होगी कि वह ठीक से काम कर रहा है:- Java कॉलआउट के लिए:
METHOD_SIGNATURE_MODIFICATION(उदाहरण के लिए,org.w3c.dom.Document) के तहत फ़्लैग किया गया है. इसमें क्लास Java 21 में मौजूद है, लेकिन कुछ तरीकों में बदलाव किया गया है या उन्हें बंद कर दिया गया है. - OASValidation नीतियों के लिए: जब
<Source>एलिमेंट में डाइनैमिक रनटाइम वैरिएबल इस्तेमाल किए जाते हैं, तब फ़्लैग किया जाता है. उदाहरण के लिए,Source=response. इसके लिए, प्रॉक्सी के लागू होने के दौरान रिज़ॉल्व किए गए वैरिएबल को देखने के लिए, ट्रेस को कैप्चर करना ज़रूरी है.
- Java कॉलआउट के लिए:
एक जैसा होने की पहचान करने वाली सुविधा की सैंपल रिपोर्ट
Java 21 को टारगेट करने वाले ऐप्लिकेशन की स्कैन रिपोर्ट (--source-version 4.53.01)
यहां दिए गए उदाहरण में, OPDK 4.53.01 से 4.54.00 पर अपग्रेड करने के बाद, रिपोर्ट का आउटपुट दिखाया गया है:
| संगठन | परिवेश | प्रॉक्सी का नाम | दायरा | पुनरीक्षण | नीति का नाम | नीति प्रकार | सोर्स वर्शन | जिस संसाधन पर असर पड़ा है | वीडियो की पहचान करने की वजह | असर की संभावना |
|---|---|---|---|---|---|---|---|---|---|---|
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 पर अपग्रेड करने के लिए, रिपोर्ट का आउटपुट दिखाया गया है:
| संगठन | परिवेश | प्रॉक्सी का नाम | दायरा | पुनरीक्षण | नीति का नाम | नीति प्रकार | सोर्स वर्शन | जिस संसाधन पर असर पड़ा है | वीडियो की पहचान करने की वजह | असर की संभावना |
|---|---|---|---|---|---|---|---|---|---|---|
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 |
पहचानी गई समस्याओं को ठीक करने के बारे में सलाह पाने के लिए, समस्याओं को ठीक करने की रणनीतियां देखें.