เครื่องมือตรวจจับการเปลี่ยนแปลง
เราได้สร้างเครื่องมือตรวจจับการเปลี่ยนแปลงเพื่อระบุพร็อกซี นโยบาย โฟลว์ที่ใช้ร่วมกัน และ JAR ของทรัพยากร Apigee (ที่ระดับพร็อกซี สภาพแวดล้อม หรือองค์กร) ที่อาจได้รับผลกระทบระหว่างและหลังการเปลี่ยนไปใช้ Edge for Private Cloud 4.54.00 เครื่องมือนี้จะสร้างรายงานที่แสดงรายละเอียดพร็อกซี โฟลว์ที่ใช้ร่วมกัน และ JAR ของทรัพยากรที่ใช้งานจริงซึ่งได้รับผลกระทบจากการเปลี่ยนแปลง รวมถึงให้คำแนะนำไปยังคำแนะนำและกลยุทธ์เฉพาะที่เกี่ยวข้องกับพร็อกซีหรือโฟลว์ที่ใช้ร่วมกันที่ระบุ
ข้อกำหนดเบื้องต้น
- คุณต้องมีเครื่องที่ใช้ RHEL หรือ Rocky Linux เพื่อเรียกใช้เครื่องมือนี้ (ดู ข้อกำหนดในการติดตั้ง Edge)
- คุณต้องติดตั้งและกำหนดค่า JRE 8 ขึ้นไปอย่างถูกต้องในเครื่องโฮสต์เพื่อให้สคริปต์ของเครื่องมือทำงานได้
- เครื่องมือนี้ต้องมีการเข้าถึงเครือข่ายไปยังปลายทาง (URL) ของเซิร์ฟเวอร์การจัดการและข้อมูลเข้าสู่ระบบของผู้ดูแลระบบที่ถูกต้องสำหรับการตรวจสอบสิทธิ์และการดึงข้อมูล
- เครื่องมือนี้ต้องเข้าถึงไดเรกทอรีการทำงานที่กำหนด (เช่น
/tmp) ที่มีพื้นที่ในดิสก์เพียงพอและสิทธิ์อ่าน/สิทธิ์เขียนที่เหมาะสมสำหรับการดาวน์โหลดบันเดิล การสร้างบันทึก และการจัดเก็บเอาต์พุต - (ไม่บังคับ) เมื่ออัปเกรดจากเวอร์ชัน 4.53.00 เครื่องมือนี้ต้องใช้ไฟล์ LDIF ที่สร้างขึ้นโดยใช้คำสั่ง
ldapsearchในส่วน การเปลี่ยนแปลง OpenLDAP - แยกข้อมูล LDAP เพื่อตรวจหา RDN แบบยาวที่เกิน 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
ระบุ --source-version 4.53.01 เมื่ออัปเกรดจาก Edge for Private Cloud 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
ชื่อพร็อกซี
ชื่อพร็อกซี API หรือโฟลว์ที่ใช้ร่วมกัน สำหรับทรัพยากร JAR ระดับองค์กร ช่องนี้จะแสดงชื่อองค์กร สำหรับทรัพยากร JAR ระดับสภาพแวดล้อม ช่องนี้จะแสดงชื่อสภาพแวดล้อม สำหรับการเปลี่ยนแปลง OpenLDAP ช่องนี้จะแสดงเอนทิตี LDAP ของ RDN
ขอบเขต
ระบุขอบเขตและระดับของอาร์ติแฟกต์ที่สแกน
proxy-level-jar: ไฟล์ทรัพยากร JAR ที่อัปโหลดที่ระดับพร็อกซี (ใต้/resources/java)env-level-jar: ไฟล์ทรัพยากร JAR ที่อัปโหลดที่ระดับสภาพแวดล้อม (ดูไฟล์ทรัพยากร)org-level-jar: ไฟล์ทรัพยากร JAR ที่อัปโหลดที่ระดับองค์กรproxy: นโยบายหรือการกำหนดค่าภายในเวอร์ชันพร็อกซี APIsharedflow: นโยบายหรือการกำหนดค่าภายในเวอร์ชันโฟลว์ที่ใช้ร่วมกันldif: ไฟล์ LDIF ของ OpenLDAP (สำหรับการตรวจสอบ 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 Callout: ชื่อที่แน่นอนของไฟล์ 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 Callout: คลาสที่เฉพาะเจาะจง ไลบรารีการแทนที่เป้าหมาย (หากมี) และสาเหตุของปัญหา (เช่น
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: RDN ของเอนทิตี LDAP ที่เฉพาะเจาะจงซึ่งเกิน 241 ไบต์หรืออักขระ
ความแน่นอนของผลกระทบ
ช่องนี้จะระบุระดับความมั่นใจที่เครื่องมือนี้ระบุว่ามีสิ่งกีดขวางการอัปเกรด ค่าจะเป็นตัวพิมพ์ใหญ่มาตรฐาน ดังนี้
HIGH: เครื่องมือนี้ตรวจพบการเปลี่ยนแปลงที่ไม่เข้ากัน (เช่น การเรียกคลาสที่นำออกอย่างถาวร เช่นjavax.xml.bind.JAXBContextหรือsun.misc.BASE64Encoderหรือ RDN ของ OpenLDAP ที่เกิน 241 ไบต์) มีความเป็นไปได้สูงที่จะเกิดข้อผิดพลาดขณะรันไทม์ (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
| องค์กร | สภาพแวดล้อม | ชื่อพร็อกซี | ขอบเขต | การแก้ไข | ชื่อนโยบาย | ประเภทนโยบาย | เวอร์ชันต้นทาง | ทรัพยากรที่ได้รับผลกระทบ | เหตุผลที่ตรวจพบ | ความแน่นอนของผลกระทบ |
|---|---|---|---|---|---|---|---|---|---|---|
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 |
ดูคำแนะนำในการแก้ไขปัญหาที่ระบุได้ที่ กลยุทธ์การแก้ไข