프라이빗 클라우드용 Edge 4.54.00 변경 감지 도구

변경사항 감지 도구

프라이빗 클라우드용 Edge 4.54.00으로 전환하는 동안 및 전환 후에 영향을 받을 수 있는 Apigee 프록시, 정책, 공유 흐름, 리소스 JAR (프록시, 환경 또는 조직 수준)를 식별하기 위해 변경사항 감지 도구가 빌드되었습니다. 이 도구는 변경사항의 영향을 받는 배포된 프록시, 공유 흐름, 리소스 JAR을 자세히 설명하는 보고서를 생성하고 식별된 프록시 또는 공유 흐름과 관련된 특정 가이드 및 전략을 안내합니다.

기본 요건

  1. 이 도구를 실행하려면 RHEL 기반 또는 Rocky Linux 머신이 필요합니다 (Edge 설치 요구사항 참고).
  2. 도구 스크립트를 실행하려면 호스트 머신에 JRE 8 이상이 설치되고 올바르게 구성되어 있어야 합니다.
  3. 이 도구에는 인증 및 데이터 검색을 위한 관리 서버의 엔드포인트 (URL)에 대한 네트워크 액세스 권한과 유효한 관리 사용자 인증 정보가 필요합니다.
  4. 이 도구에는 번들 다운로드, 로그 생성, 출력 저장을 위한 충분한 디스크 공간과 적절한 읽기/쓰기 권한이 있는 지정된 작업 디렉터리 (예: /tmp)에 대한 액세스 권한이 필요합니다.
  5. (선택사항) 버전 4.53.00에서 업그레이드할 때 이 도구는 ldapsearch 명령어를 사용하여 생성된 LDIF 파일이 필요합니다. 이 파일은 OpenLDAP 변경사항 - LDAP 데이터 추출 섹션에서 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 4.53.01에서 직접 업그레이드할 때 Java 21 변경사항을 검사하려면 --source-version 4.53.01을 지정합니다. 버전 4.53.00에서 업그레이드하는 경우 버전 4.53.01 정책 지원 중단 및 Java 21 변경사항을 모두 포함하는 누적 검사를 실행하려면 --source-version 4.53.00을 지정합니다.

이 도구는 직접 검토하거나 Google Sheets와 같은 스프레드시트 애플리케이션으로 가져올 수 있는 CSV 또는 JSON 형식으로 출력을 생성합니다.

도구 출력 이해

보고서에는 다음 열이 포함됩니다.

조직

아티팩트가 있는 조직의 이름입니다. OpenLDAP 변경사항의 경우 None입니다.

환경

조직 내의 특정 환경 (예: dev, test, prod)입니다. 조직 수준 JAR의 경우 이 필드는 N/A입니다. OpenLDAP 변경사항의 경우 None입니다.

프록시 이름

API 프록시 또는 공유 흐름의 이름입니다. 조직 수준 JAR 리소스의 경우 조직 이름이 표시됩니다. 환경 수준 JAR 리소스의 경우 환경 이름이 표시됩니다. OpenLDAP 변경사항의 경우 이 필드에는 RDN의 LDAP 항목이 표시됩니다.

범위

검사된 아티팩트의 범위와 수준을 지정합니다.

  • proxy-level-jar: 프록시 수준에서 업로드된 JAR 리소스 파일 (/resources/java 아래)
  • 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 콜아웃의 경우: Java 21에 클래스가 있지만 특정 메서드가 변경되거나 지원 중단되었을 수 있는 METHOD_SIGNATURE_MODIFICATION (예: org.w3c.dom.Document) 아래에 플래그가 지정됩니다.
    • OASValidation 정책의 경우: 프록시 실행 중에 확인된 변수를 관찰하기 위해 추적을 캡처해야 하는 <Source> 요소 (예: Source=response)에서 동적 런타임 변수가 사용될 때 플래그가 지정됩니다.

샘플 감지 보고서

타겟팅된 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

식별된 문제를 해결하는 방법에 관한 안내는 수정 전략을 참고하세요.