পরিবর্তন শনাক্তকরণ টুল
একটি পরিবর্তন শনাক্তকরণ টুল তৈরি করা হয়েছে যা Apigee প্রক্সি, নীতি, শেয়ার করা ফ্লো এবং রিসোর্স JAR (প্রক্সি, পরিবেশ বা প্রতিষ্ঠান লেভেলে) শনাক্ত করে। এগুলি Edge for Private Cloud 4.54.00-এ ট্রানজিশনের সময় এবং পরে প্রভাবিত হতে পারে। এই টুলটি ডিপ্লয় করা প্রক্সি, শেয়ার করা ফ্লো এবং রিসোর্স JAR-এর বিবরণ সহ একটি রিপোর্ট তৈরি করে এবং শনাক্ত করা প্রক্সি বা শেয়ার করা ফ্লোয়ের সাথে প্রাসঙ্গিক নির্দিষ্ট গাইড ও কৌশল সম্পর্কে নির্দেশাবলী প্রদান করে।
পূর্বশর্ত
- এই টুল রান করার জন্য RHEL-ভিত্তিক বা Rocky Linux মেশিন প্রয়োজন (Edge ইনস্টলেশন সংক্রান্ত প্রয়োজনীয়তা দেখুন)।
- টুলের স্ক্রিপ্ট রান করার অনুমতি দিতে, হোস্ট মেশিনে JRE 8 বা তার পরবর্তী ভার্সন ইনস্টল ও সঠিকভাবে কনফিগার করা থাকতে হবে।
- এই টুলটির জন্য ম্যানেজমেন্ট সার্ভারের এন্ডপয়েন্ট (URL)-এ নেটওয়ার্ক অ্যাক্সেস এবং যাচাইকরণ ও ডেটা ফিরিয়ে আনার জন্য সঠিক অ্যাডমিনিস্ট্রেটিভ ক্রেডেনশিয়াল প্রয়োজন।
- টুলটির জন্য পর্যাপ্ত ডিস্ক স্পেস এবং বান্ডিল ডাউনলোড, লগ তৈরি এবং আউটপুট স্টোর করার জন্য উপযুক্ত রিড/রাইট পার্মিশন সহ একটি নির্দিষ্ট ওয়ার্কিং ডিরেক্টরিতে (যেমন,
/tmp) অ্যাক্সেস প্রয়োজন। - (ঐচ্ছিক) 4.53.00 ভার্সন থেকে আপগ্রেড করার সময়, টুলটিকে OpenLDAP পরিবর্তন - LDAP ডেটা এক্সট্র্যাক্ট করুন বিভাগে
ldapsearchকমান্ড ব্যবহার করে তৈরি করা LDIF ফাইল প্রয়োজন হয়, যাতে ২৪১টি অক্ষর/বাইটের বেশি দীর্ঘ 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
Java 21-এ হওয়া পরিবর্তন স্ক্যান করার জন্য Edge for Private Cloud 4.53.01 থেকে সরাসরি আপগ্রেড করার সময় --source-version 4.53.01 উল্লেখ করুন। ভার্সন ৪.৫৩.০০ থেকে আপগ্রেড করলে, ভার্সন ৪.৫৩.০১-এর নীতি বাতিলকরণ এবং Java ২১-এর পরিবর্তন, উভয়কেই কভার করে এমন একটি কিউমুলেটিভ স্ক্যান পারফর্ম করার জন্য --source-version 4.53.00 উল্লেখ করুন।
টুলটি CSV বা JSON ফর্ম্যাটে আউটপুট তৈরি করে যা সরাসরি পর্যালোচনা করা বা Google Sheets-এর মতো স্প্রেডশিট অ্যাপ্লিকেশনে ইমপোর্ট করা যেতে পারে।
টুল আউটপুট বোঝা
রিপোর্টে নিম্নলিখিত কলামগুলি রয়েছে:
সংগঠন
যে সংস্থার কাছে আর্টিফ্যাক্ট আছে তার নাম। OpenLDAP পরিবর্তনের জন্য, এটি হল None।
পরিবেশ
সংস্থার মধ্যে নির্দিষ্ট এনভায়রনমেন্ট (যেমন, dev, test, prod)। সংস্থা-লেভেল JAR-এর জন্য, এই ফিল্ডটি হল N/A। OpenLDAP-এর পরিবর্তনের জন্য, এটি হল None।
প্রক্সির নাম
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-এর জন্য: নির্দিষ্ট LDAP এন্টিটির RDN যা ২৪১ বাইট বা অক্ষর অতিক্রম করেছে।
প্রভাবের নিশ্চয়তা
এই ফিল্ড থেকে বোঝা যায় যে টুলটি কতখানি আত্মবিশ্বাসের সাথে কোনও আপগ্রেড ব্লকার শনাক্ত করেছে। ভ্যালুগুলি বড় হাতের অক্ষরে স্ট্যান্ডার্ডাইজ করা হয়েছে:
HIGH: টুলটি একটি বেমানান পরিবর্তন শনাক্ত করেছে (যেমনjavax.xml.bind.JAXBContextবাsun.misc.BASE64Encoder-এর মতো স্থায়ীভাবে সরানো ক্লাসে কল করা, বা ২৪১ বাইটের বেশি OpenLDAP RDN)। সমাধান না করা হলে রানটাইম ব্যর্থতার (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 |
শনাক্ত করা সমস্যা সমাধানের ব্যাপারে নির্দেশিকা পেতে, সমাধানের কৌশল দেখুন।