Private Cloud용 Edge 4.53.01의 변경사항

변경사항 개요

프라이빗 클라우드용 Edge 4.53.01에는 플랫폼의 보안 상태를 개선하고 필수 소프트웨어 및 라이브러리의 업데이트된 버전을 통합하는 여러 변경사항이 도입되었습니다. 이러한 변경사항은 다음 정책 유형에 영향을 미칩니다.

변경 감지 도구를 사용하여 이 업그레이드로 인해 중단이 발생할 수 있는 프록시, 공유 흐름 또는 클러스터의 기타 아티팩트의 변경사항을 식별할 수도 있습니다.

변경사항에 대한 자세한 설명

이 섹션에서는 업그레이드 중 또는 업그레이드 후에 워크플로를 중단할 수 있는 버전 4.53.01에 도입된 변경사항을 설명합니다. 잠재적인 문제 영역을 식별하는 방법과 완화 또는 해결 방법의 방법론도 다룹니다.

OAS (OpenAPI 사양) 유효성 검사 정책

컨텍스트

OAS 유효성 검사 정책은 OpenAPI 3.0 사양 (JSON 또는 YAML)에 정의된 규칙에 따라 수신 요청 또는 응답의 유효성을 검사합니다. Edge for Private Cloud 4.53.01에서는 API 응답 본문의 더 엄격하고 정확한 유효성 검사에 중점을 두어 OAS (OpenAPI 사양) 정책이 개선되었습니다.

변경사항

프라이빗 클라우드용 Edge 4.53.01에서는 OAS 정책이 API 응답을 검증하는 방식에 두 가지 중요한 변경사항이 도입되어 OpenAPI 사양과의 정렬이 더 긴밀해집니다.

  • 시나리오 1:
    • 이전 동작: OpenAPI 사양에 응답 본문이 필요했지만 타겟 또는 업스트림 정책의 실제 응답에 응답 본문이 포함되지 않은 경우 정책에서 이를 검증 오류로 표시하지 않았습니다.
    • 현재 동작: 이제 정책은 이 시나리오에서 유효성 검사 오류 (예: defines a response schema but no response body found)를 올바르게 반환하여 예상 응답과 실제 응답 간의 불일치를 나타냅니다.
  • 시나리오 2:
    • 이전 동작: OpenAPI 사양에 예상되는 응답 본문이 없다고 명시되어 있지만 타겟 또는 업스트림 정책의 실제 응답에 본문이 포함된 경우 정책으로 인해 실패가 발생하지 않았습니다.
    • 현재 동작: 이제 이 시나리오에서 정책으로 인해 실패 (예: No response body is expected but one was found)가 발생하여 대답이 지정된 스키마를 엄격하게 준수합니다.

완화

변경사항 감지 도구를 사용하거나 수동 검토를 통해 업그레이드의 영향을 받을 수 있는 프록시 또는 공유 흐름을 식별합니다. 다음 조건 중 하나가 있는 프록시를 찾습니다.

  • OAS 유효성 검사 정책이 response로 설정된 Source 태그로 구성됩니다.
  • OAS 검증 정책은 응답을 생성하는 기타 정책의 응답을 검증합니다.

이 도구를 사용하면 아래 형식으로 출력이 생성됩니다.

조직 환경 아티팩트 이름 아티팩트 유형 버전 정책 이름 정책 유형 영향 유형 영향 관련 필드 광고효과의 확실성 문서
org2 dev proxy2 proxy 4 oas-validateresponse OASValidation oas_content_type_handling Source=calloutresponse 보통 OAS 검증 정책
org1 prod proxy3 sharedflow 1 oas-spec-validation OASValidation oas_content_type_handling Source=response 보통 OAS 검증 정책

출력 테이블의 열에 대한 자세한 설명은 도구 출력 이해하기 섹션을 참고하세요.

프록시 또는 공유 흐름이 식별되면 응답 본문의 존재 여부에 관해 응답과 OAS 사양이 일치하는지 확인합니다. 표준 Apigee 트레이스를 사용하여 트래픽 패턴을 검토할 수 있습니다. 타겟이 간헐적으로 응답을 반환하는 경우 응답이 OAS 유효성 검사 정책에 전달되기 전에 다른 정책을 사용하여 응답을 검증하세요.

  • OAS 사양 파일이 응답 본문을 정의하는 경우 타겟 또는 업스트림 정책의 응답은 항상 응답 본문을 제공해야 합니다.
  • OAS 사양 파일에 응답 본문이 정의되어 있지 않으면 타겟 또는 업스트림 정책에서 응답 본문을 전송해서는 안 됩니다.

Private Cloud 4.53.01로 업그레이드하기 전에 필요에 따라 OAS 검증 정책 또는 타겟 동작을 업데이트하세요. 프로덕션 클러스터 업그레이드 중 서비스 중단 위험을 최소화하려면 먼저 비프로덕션 환경에서 식별된 워크플로를 검증해야 합니다.

JSON 경로

컨텍스트

Edge for Private Cloud 4.53.01에서는 다양한 정책에서 JSON 경로 표현식이 사용되는 방식이 변경되었습니다. JSONPath 표현식은 ExtractVariable 정책, RegularExpressionProtection 정책, 데이터 마스킹과 같은 정책에서 JSON 콘텐츠를 파싱하거나 변수에 값을 저장하는 데 사용할 수 있습니다. JSONPath 표현식은 일반 메시지 템플릿에서도 사용하여 프록시 실행 중에 변수를 값으로 동적으로 바꿀 수 있습니다. 새로운 JSONPath 표현식과 형식은 최신 JSON 표현식 표준을 따릅니다.

변경사항

JSONPath 표현식을 사용하는 정책이 있는지 기존 API 프록시/공유 흐름을 검토하는 것이 중요합니다. 여기에는 변수 추출 정책, 정규 표현식 보호 정책 또는 JSONPath를 사용하는 메시지 템플릿이 있는 정책이 포함되나 이에 국한되지 않습니다.

아래 JSON 입력은 변경사항을 설명하는 데 사용됩니다.

{
  "store": {
    "book": [
      {"category": "reference", "author": "Nigel Rees", "price": 8.95},
      {"category": "fiction", "author": "Evelyn Waugh", "price": 12.99},
      {"category": "fiction", "author": "Herman Melville", "price": 8.99}
    ],
    "bicycle": {
      "color": "red",
      "book": [
        {"author": "Abc"}
      ]
    }
  }
}
  1. 객체 값의 JSONPath 와일드카드 [*] 동작 변경

    JSON 객체의 모든 즉각적인 값에 액세스하는 데 사용되는 경우 [*] 와일드 카드의 동작이 변경되었습니다. 이전에는 $.object[*]가 단일 JSON 객체 내에 래핑된 즉각적인 값을 반환했습니다. 업데이트된 라이브러리를 사용하면 이제 출력이 이러한 값이 포함된 배열이 됩니다.

    예를 들어 $.store[*]는 다음과 같습니다.

    이전 동작:
    {
      "bicycle": {
        "color": "red",
        "book": [{"author": "Abc"}]
      },
      "book": [
        {"price": 8.95, "category": "reference", "author": "Nigel Rees"},
        {"price": 12.99, "category": "fiction", "author": "Evelyn Waugh"},
        {"price": 8.99, "category": "fiction", "author": "Herman Melville"}
      ]
    }
    
    현재 동작:
    [
      [
        {"category": "reference", "author": "Nigel Rees", "price": 8.95},
        {"category": "fiction", "author": "Evelyn Waugh", "price": 12.99},
        {"category": "fiction", "author": "Herman Melville", "price": 8.99}
      ],
      {
        "color": "red",
        "book": [{"author": "Abc"}]
      }
    ]
    
    작업:

    JSONPath 표현식을 변경하여 이전에 가져온 항목을 직접 타겟팅하도록 상위 객체 (예: $.store)를 타겟팅합니다.

  2. 경로의 JSONPath 후행 점 (.)으로 인해 오류가 발생함

    JSONPath 표현식의 유효성 검사가 더 엄격합니다. 이전에는 잘못된 후행 점 (예: $.path.to.element.)으로 끝나는 경로가 자동으로 무시되었으며, 앞의 유효한 경로 세그먼트가 일치하는 경우 쿼리에서 결과가 반환되었습니다. 새 버전에서는 이러한 잘못된 경로가 이제 올바르게 잘못된 것으로 식별되어 오류가 발생합니다.

    예: $.store.book.

    이전 동작:
    [
      {"price":8.95,"category":"reference","author":"Nigel Rees"},
      {"price":12.99,"category":"fiction","author":"Evelyn Waugh"},
      {"price":8.99,"category":"fiction","author":"Herman Melville"}
    ]
    
    현재 동작:
    ERROR: com.jayway.jsonpath.InvalidPathException - Path must not end with a '.' or '..'
    

    의도하지 않은 후행 점이 있는 JSONPath 표현식을 사용하는 기존 정책은 이제 InvalidPathException로 실패합니다.

    작업:

    JSONPath 표현식이 점으로 끝나는 경우 점을 삭제합니다. 예를 들어 $.store.book.$.store.book로 변경합니다.

  3. JSONPath 재귀 하강 (..) 출력 구조 변경

    이름이 지정된 요소의 모든 항목을 찾기 위해 (..) (재귀적 하강) 연산자를 사용할 때 결과가 반환되는 방식이 변경되었습니다. 이전에는 발견된 모든 요소가 단일 목록으로 병합되었습니다. 업데이트된 라이브러리는 이제 단일 플랫 목록이 아닌 요소가 발견된 원래 그룹화 구조를 유지하는 목록의 목록을 반환합니다.

    예: $..book

    이전 동작:
    [
      {"price":8.95,"category":"reference","author":"Nigel Rees"},
      {"price":12.99,"category":"fiction","author":"Evelyn Waugh"},
      {"price":8.99,"category":"fiction","author":"Herman Melville"},
      {"author":"Abc"}
    ]
    
    현재 동작:
    [
      [
        {"category":"reference","author":"Nigel Rees","price":8.95},
        {"category":"fiction","author":"Evelyn Waugh","price":12.99},
        {"category":"fiction","author":"Herman Melville","price":8.99}
      ],
      [
        {"author":"Abc"}
      ]
    ]
    
    작업:

    새로운 중첩 배열 구조를 고려하도록 다운스트림 처리 로직을 업데이트합니다. 개별 요소에 액세스하려면 외부 JSONArray를 반복한 다음 각 내부 JSONArray를 반복해야 할 수 있습니다.

  4. 다중 항목 선택 또는 필터링 후 JSONPath 색인 생성 시 빈 배열이 반환됨

    다중 항목 선택기 (예: [*]) 또는 필터 ([?(condition)]) 직후에 색인 (예: [0])이 적용될 때 동작이 변경됩니다. 이전에는 이러한 표현식이 결합된 결과에서 지정된 색인의 항목을 선택하려고 했습니다. 새 버전에서는 이러한 표현식이 빈 배열 ([])을 반환합니다.

    예: $.store.book[*][0]

    이전 동작:
    {"category": "reference", "price": 8.95, "author": "Nigel Rees"}
    
    현재 동작:
    []
    
    작업:

    필터링한 후 필터링된 집합에서 특정 항목을 가져와야 하는 경우 JSONPath에서 반환된 필터링된 배열(예: $..book[?(@.category == 'fiction')])을 처리한 다음 이전 결과에서 [0]을 가져옵니다.

  5. JSONPath 음수 배열 슬라이싱 출력 변경

    새 버전에서는 음수 배열 슬라이싱 (예: [-2:], [-1:])의 동작이 수정되었습니다. 이전에는 배열에 음수 슬라이스를 적용할 때 (배열 끝의 요소를 나타냄) 이전 버전에서는 해당 슬라이스의 단일 항목만 잘못 반환했습니다. 이제 새 버전에서는 지정된 음수 범위에 속하는 모든 요소를 포함하는 목록 (배열)을 올바르게 반환합니다.

    예를 들면 $.store.book[-2:]입니다.

    이전 동작:
    {"price":12.99,"category":"fiction","author":"Evelyn Waugh"}
    
    현재 동작:
    [
      {"category":"fiction","author":"Evelyn Waugh","price":12.99},
      {"category":"fiction","author":"Herman Melville","price":8.99}
    ]
    
    작업:

    이제 원하는 출력을 얻기 위해 반환된 JSON 배열을 반복하도록 다운스트림 처리 로직을 업데이트해야 합니다.

  6. JSONPath 이전 점 더 엄격하게 적용

    루트에서 직접 액세스하는 요소의 구문이 더 엄격하게 적용됩니다. 이제 요소가 앞에 점 없이 루트에서 직접 액세스되는 경우 (예: $propertyelement) 해당 구문은 오류로 간주되며 프록시 배포가 방지됩니다.

    예를 들어 $store

    {
      "bicycle": {
        "color": "red",
        "book": [{"author": "Abc"}]
      },
      "book": [
        {"price": 8.95, "category": "reference", "author": "Nigel Rees"},
        {"price": 12.99, "category": "fiction", "author": "Evelyn Waugh"},
        {"price": 8.99, "category": "fiction", "author": "Herman Melville"}
      ]
    }
    

    현재 동작:

    Proxy will fail to deploy.

    작업:

    점을 포함하도록 JSONPath를 변경합니다 ($.propertyName, 예: $.store). 이렇게 하면 값을 올바르게 타겟팅하고 가져올 수 있습니다.

  7. 동적 JSONPath 표현식

    JSONPath 표현식 자체가 변수 (예: {myJsonPathVariable} 또는 {dynamicPath})로 제공되는 정책에 특히 주의하세요. 이러한 변수의 값도 위에 설명된 잠재적인 동작 변경사항에 대해 확인해야 합니다.

완화

변경 감지 도구를 사용하거나 API 프록시를 수동으로 검토하여 설명된 패턴을 찾아 업그레이드의 영향을 받을 수 있는 프록시 또는 공유 흐름을 식별합니다. 이 도구를 사용하면 아래 예시 출력과 같이 영향을 받는 프록시 또는 공유 흐름, 관련 정책, 문제가 있는 JSON 경로가 출력에 표시됩니다.

조직 환경 아티팩트 이름 아티팩트 유형 버전 정책 이름 정책 유형 영향 유형 영향 관련 필드 광고효과의 확실성 문서
org1 dev proxy1 proxy 4 EV-ExtractRequestParams ExtractVariables 객체 값의 JSONPath 와일드카드 [*] 동작 변경 $.store[*] 높음 객체 값의 JSONPath 와일드카드 [*] 동작 변경
org2 prod proxy2 sharedflow 1 EV-ExtractResponseParams ExtractVariables 이제 경로의 JSONPath 후행 점 (.)로 인해 오류가 발생함 $.store.book. 높음 경로의 JSONPath 후행 점 (.)으로 인해 오류가 발생함
org3 dev proxy3 proxy 3 SC-FetchUserProfile ServiceCallout JSONPath 재귀 하강 (..) 출력 구조 변경 $..book 높음 JSONPath 재귀 하강 (..) 출력 구조 변경
org4 prod proxy4 sharedflow 2 RF-InvalidAuthToken RaiseFault 이제 다중 항목 선택 또는 필터링 후 JSONPath 색싱이 빈 배열을 반환함 $.store.book[*][0] 높음 다중 항목 선택 또는 필터 후 JSONPath 색인 생성 시 빈 배열이 반환됨
org5 테스트 proxy5 proxy 6 SC-FetchProfileDetails ServiceCallout JSONPath 음수 배열 슬라이싱 출력 변경 $.store.book[-2:] 높음 JSONPath 음수 배열 슬라이싱 출력 변경
org6 prod proxy6 proxy 2 ML-LogRequestDetails MessageLogging JSONPath Stricter Preceding Dot $store 높음 JSONPath 엄격한 선행 점
org7 테스트 proxy7 proxy 5 RF-InvalidTokenDetails RaiseFault 동적 JSONPath 표현식 myJsonPathVariable 보통 동적 JSONPath 표현식

위 출력 표의 열에 대한 자세한 설명은 도구 출력 이해하기 섹션을 참고하세요.

이를 완화하려면 포괄적인 전략이 필요합니다. 이 프로세스에는 적절한 업데이트 경로를 결정하고 감지된 JSONPath 표현식에 필요한 수정사항을 적용하는 작업이 포함됩니다.

가장 적합한 업그레이드 경로 방법을 선택하세요.

  • 다운타임 없는 마이그레이션

    이 전략에서는 별도의 메시지 프로세서 노드를 연결할 수 있도록 하나 이상의 새 환경을 조달합니다. 이러한 메시지 프로세서 노드는 4.53.01을 설치하고 최신 JSONPath 표현식이 있는 프록시를 갖도록 설정할 수 있습니다. 이러한 파일은 업그레이드 중에 사용할 수 있으며 업그레이드가 완료된 후에는 폐기할 수 있습니다. 이 전략은 원활하지만 원활한 업그레이드를 지원하기 위해 추가 메시지 프로세서 노드를 일시적으로 조달해야 합니다. 자세한 내용은 아래를 참고하세요.

    • 새 환경을 만들고 버전 4.53.01의 새 메시지 프로세서 노드를 추가합니다.
    • 영향을 받는 프록시의 프록시 번들을 새 환경에 업로드하고 수정 섹션에 설명된 필요한 수정사항을 적용한 후 업데이트된 프록시 번들을 새 환경에 배포합니다.
    • 트래픽을 새 환경으로 리디렉션하고 이전 환경에서 영향을 받는 프록시를 배포 취소합니다.
    • 원본 메시지 프로세서 노드를 4.53.01로 업그레이드합니다. 원본 환경에 JSONPath 수정사항이 있는 프록시를 배포합니다.
    • 이제 4.53.01의 메시지 프로세서와 새로운 jsonpath 표현식에 맞게 현대화된 프록시가 있는 이전 환경으로 트래픽을 다시 전환합니다.
    • 새 환경과 연결된 노드를 삭제하고 폐기합니다.
  • 다운타임 및 업그레이드

    이 전략에는 잘못된 JSON 경로 표현식을 사용하여 API 프록시의 다운타임을 조달하는 것이 포함됩니다. 추가 메시지 프로세서 노드를 조달할 필요는 없지만 영향을 받는 프록시의 API 트래픽이 중단됩니다.

    • 영향을 받는 정책이 있는 영향을 받는 프록시를 식별하고 영향을 받는 모든 프록시에 대해 새 버전을 생성합니다.
    • 프록시의 새 버전에서 수정 섹션에 설명된 수정사항을 구현하여 필요한 수정사항을 적용합니다. 아직 배포하지 마세요.
    • 영향을 받는 프록시의 다운타임을 확보합니다.
    • 모든 메시지 프로세서를 Edge for Private Cloud 버전 4.53.01로 업그레이드합니다. 새로 업그레이드된 메시지 프로세서에서 기존 프록시가 실패할 수 있습니다.
    • 모든 메시지 프로세서를 Edge for Private Cloud 버전 4.53.01로 업그레이드한 후 수정된 JSONPath 표현식으로 새로 생성된 프록시 수정 버전을 배포합니다.
    • 이러한 프록시에서 트래픽을 재개합니다.
  • 업그레이드 전에 프록시 재설계

    Edge for Private Cloud 4.53.01로 업그레이드하기 전에 프록시 자체를 재설계할 수 있습니다. 특정 JSON 경로 표현식을 사용하는 대신 다른 방법을 사용하여 동일한 결과를 얻을 수 있습니다.

    예를 들어 JSON 경로와 함께 Extract Variable 정책을 사용하는 경우 최신 버전으로 업그레이드하기 전에 유사한 데이터를 추출하는 JavaScript 정책으로 정책을 대체할 수 있습니다. 업그레이드가 완료되면 프록시를 최신 형식의 JSON 경로를 사용하도록 다시 변경할 수 있습니다.

JavaCallout 변경사항

컨텍스트

프라이빗 클라우드용 Edge 4.53.00 이하에는 여러 JAR 라이브러리가 포함된 deprecated ($APIGEE_ROOT/edge-message-processor/lib/deprecated)라는 디렉터리가 포함되어 있었습니다. 이러한 라이브러리는 JavaCallout 정책의 Java 코드에서 사용할 수 있었으며 커스텀 Java 코드에서 직접 또는 간접적으로 사용할 수 있었습니다.

변경사항

이제 프라이빗 클라우드용 Edge 버전 4.53.01에서 지원 중단된 디렉터리가 삭제되었습니다. Java 코드가 이러한 라이브러리를 사용하는 경우 메시지 프로세서가 버전 4.53.01로 업그레이드되면 이러한 Java 콜아웃을 사용하는 프록시가 실패합니다. 이러한 오류를 방지하려면 메시지 프로세서를 버전 4.53.01로 업그레이드하기 전에 아래 완화 단계를 따르세요.

완화

  1. 변경 감지 도구를 사용하거나 수동으로 Java Callout 정책과 연결된 JAR을 검토합니다. 정책이 현재 메시지 프로세서의 'deprecated' 디렉터리에 있는 라이브러리를 참조하는지 확인합니다.

    위의 감지를 위해 Apigee에서 제공하는 도구를 사용하는 경우 도구에서 다음 표와 같은 보고서를 생성합니다 . 특히 이전 버전의 프라이빗 클라우드용 Edge의 $APIGEE_ROOT/edge-message-processor/lib/deprecated 디렉터리에 있는 JAR을 참조하는 정책을 타겟팅합니다.

    이 도구는 아래 형식으로 보고서를 생성합니다.

    조직 환경 아티팩트 이름 아티팩트 유형 버전 정책 이름 정책 유형 영향 유형 영향 관련 필드 광고효과의 확실성 문서
    org1 없음 없음 org-level-jar 없음 없음 java-callout simple-javacallout-o1-jar-1.jar에서 지원 중단된 라이브러리가 감지됨 ['commons-io-2.5.jar에서 org.apache.commons.io.FileUtils 클래스 사용 감지', 'commons-io-2.5.jar에서 org.apache.commons.io.input.XmlStreamReaderException 클래스 사용 감지'] 높음 JavaCallout 변경사항
    org3 env3 없음 env-level-jar 없음 없음 java-callout fat-javacallout-e3-jar-1.jar에서 지원 중단된 라이브러리가 감지됨 ['httpclient-4.5.2.jar에서 org.apache.http.impl.auth.NTLMSchemeFactory 클래스 사용이 감지됨'] 높음 JavaCallout 변경사항
    org1 env1 p1 proxy-level-jar 1 없음 java-callout simple-javacallout-p1-jar-1.jar에서 지원 중단된 라이브러리가 감지됨 ['commons-lang3-3.4.jar에서 org.apache.commons.lang3.builder.ToStringBuilder 클래스 사용이 감지됨', 'commons-lang3-3.4.jar에서 org.apache.commons.lang3.Validate 클래스 사용이 감지됨'] 높음 JavaCallout 변경사항

    위 출력 표의 열에 대한 자세한 설명은 도구 출력 이해 섹션을 참고하세요.

  2. 이러한 지원 중단된 라이브러리를 확인한 후 아래 방법 중 하나를 따라 문제를 완화할 수 있습니다.
    • 리소스 배치 (Java-Callout jar에서 참조하는 지원 중단된 디렉터리의 jar / 라이브러리 수가 적은 경우 권장)
      • 식별된 지원 중단된 JAR를 원하는 수준(API 프록시 버전, 환경 또는 조직)에서 리소스로 업로드합니다.
      • 평소와 같이 Apigee 소프트웨어 업그레이드를 진행합니다.
    • 수동 배치 (Java-Callout jar에서 참조하는 jar / 라이브러리가 많은 경우 권장)
      • 각 메시지 프로세서 노드에서 $APIGEE_ROOT/data/edge-message-processor/ 경로에 external-lib이라는 새 디렉터리를 만듭니다.
      • 확인된 JAR을 지원 중단된 디렉터리에서 이 external-lib 디렉터리로 복사합니다. cp $APIGEE_ROOT/edge-message-processor/lib/deprecated/some.jar $APIGEE_ROOT/data/edge-message-processor/external-lib/some.jar
      • 디렉터리와 기본 jar가 Apigee 사용자(chown -R apigee:apigee $APIGEE_ROOT/data/edge-message-processor/external-lib)에 의해 읽을 수 있는지 확인합니다.
      • 평소와 같이 Apigee 소프트웨어 업그레이드를 진행합니다.

OpenLDAP 변경

컨텍스트

OpenLDAP는 인증과 승인 모두에 Edge Private Cloud에서 사용할 수 있습니다. 프라이빗 클라우드용 Edge 4.53.01에서 Apigee에서 제공하는 OpenLDAP 소프트웨어가 버전 2.4에서 2.6으로 업그레이드되었습니다.

변경사항

OpenLDAP 2.6에서 상대 고유 이름 (RDN)은 약 241바이트/문자로 제한됩니다. 이 제한은 적용되는 엄격한 상한이며 수정할 수 없습니다.

영향
  • RDN이 지나치게 큰 항목의 경우 복제 또는 가져오기 실패가 발생합니다.
  • 조직,환경, 맞춤 역할, 권한 등의 엔티티를 만들려고 하면 "message": "[LDAP: error code 80 - Other]" 오류 메시지가 표시될 수 있습니다.
  • Apigee의 LDAP에서 241바이트보다 긴 DN은 영향을 받습니다. 이러한 DN은 Apigee OpenLDAP 소프트웨어의 업그레이드를 방해하므로 업그레이드를 진행하기 전에 이러한 항목에 대한 완화 전략을 따라야 합니다.

일반적으로 Apigee의 LDAP에서 긴 DN은 여러 항목을 연결하여 생성되므로 권한과 관련이 있습니다. 이러한 권한 항목은 특히 업그레이드 문제가 발생하기 쉽습니다.

예를 들면 다음과 같습니다.

dn: cn=@@@environments@@@*@@@applications@@@*@@@revisions@@@*@@@debugsessions,ou=resources,cn=businessuser,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com

일반적으로 LDAP의 RDN이 241바이트보다 작아지도록 조직, 환경, 역할 이름을 지정합니다.

완화

4.53.01로 업그레이드하기 전:

다음 단계에 따라 기존 LDAP 2.4 클러스터에 긴 RDN이 있는지 확인할 수 있습니다.

#1 - LDAP 데이터 추출

ldapsearch 명령어를 사용하여 고유 이름 (dn)을 찾고 출력을 파일로 리디렉션합니다.

ldapsearch -o ldif-wrap=no -b "dc=apigee,dc=com" -D "cn=manager,dc=apigee,dc=com" -H ldap://:10389 -LLL -x -w LDAP_PASSWORD dn > /tmp/DN.ldif

위의 DN.ldif 파일에 LDAP 항목이 있는지 확인합니다.

#2 - 긴 RDN 식별

변경 감지 도구는 생성된 LDIF 파일을 사용하여 241바이트/문자를 초과하는 LDAP RDN을 식별합니다.

이 도구는 다음 형식으로 보고서를 생성합니다.

조직 환경 아티팩트 이름 아티팩트 유형 버전 정책 이름 정책 유형 영향 유형 영향 관련 필드 광고효과의 확실성 문서
없음 없음 cn=really-long-name,ou=userroles,o=edge-platform,ou=organizations,dc=apigee,dc=com ldif 파일 없음 없음 없음 LDAP RDN이 241자를 초과함 cn=really-long-name 높음 OpenLDAP 변경사항

위 출력 표의 열에 대한 자세한 설명은 도구 출력 이해 섹션을 참고하세요.

위 명령어에서 출력이 생성되지 않으면 기존 LDAP 설정의 RDN이 241바이트/문자를 초과하지 않습니다. 평소와 같이 업그레이드를 진행해도 됩니다.

위 명령어에서 출력이 생성되면 241바이트/문자를 초과하는 RDN이 있음을 나타냅니다. 이러한 항목의 경우 Edge for Private Cloud 4.53.01 업그레이드를 진행하기 전에 3단계에 설명된 완화 단계를 따르세요.

#3 - 긴 RDN 처리

2단계에서 출력이 수신되면 241바이트/문자를 초과하는 RDN이 있음을 나타내므로 아래 완화 단계를 따르세요.

241바이트를 초과하는 LDAP 항목을 검토합니다.

  • RDN이 길어지는 주요 원인이 맞춤 역할 이름, 앱, API 제품 또는 기타 항목인 경우 이름이 더 짧은 대체 항목을 사용하도록 마이그레이션합니다.
  • 긴 RDN의 주요 원인이 조직 이름 또는 환경 이름인 경우 이름이 더 짧은 다른 조직 또는 환경으로 이전해야 합니다.

LDAP에 241바이트보다 긴 RDN이 없을 때까지 위의 단계를 반복합니다. 이 상태에 도달하면 평소와 같이 프라이빗 클라우드 버전 업그레이드를 진행합니다.

암호화 제공자 변경사항

컨텍스트

이 변경사항은 Edge for Private Cloud 4.53.00에서 가져온 것입니다. Edge for Private Cloud 4.53.00에서는 FIPS 지원을 사용 설정하기 위해 내부 암호화 제공자가 Bouncy Castle (BC)에서 Bouncy Castle FIPS (BCFIPS)로 업데이트되었습니다.

변경사항

JavaCallout 정책이 원래 BC 제공업체 사용에 의존하는 경우, 특히 BCFIPS 제공업체에서 강화된 보안 기능을 사용하는 경우 (예: 암호화와 서명 모두에 공통 키 쌍 사용) 이러한 JavaCallout 정책을 현대화해야 합니다. 이름 BC를 사용하여 Bouncy Castle 암호화 제공자를 로드하려고 하는 JavaCallout 정책은 기본 제공자가 변경되었기 때문에 실패할 수 있습니다. BC 제공자를 사용하는 이러한 정책은 이후에 중단될 수 있습니다. 이전 BC 제공자를 사용하는 맞춤 구현은 더 이상 액세스할 수 없으며 검토하고 다시 구현해야 합니다.

완화

권장되는 해결 방법은 BCFIPS 제공자를 사용하는 것입니다. 이전 제공자를 사용한 맞춤 JavaCallout 구현은 문자열 'BCFIPS'를 사용하여 액세스할 수 있는 Bouncy Castle FIPS 제공자를 사용하여 검토하고 다시 구현해야 합니다.

변경 감지 도구

Edge for Private Cloud 4.53.01로 전환하는 동안 및 전환 후에 영향을 받을 수 있는 Apigee 프록시, 정책, 공유 흐름을 식별하기 위해 변경사항 감지 도구가 빌드되었습니다. 이 도구는 변경사항의 영향을 받는 배포된 프록시, 공유 흐름, OpenLDAP를 자세히 설명하는 보고서를 생성하고 식별된 프록시 또는 공유 흐름과 관련된 특정 가이드 및 전략을 안내합니다.

기본 요건

  1. 이 도구를 실행하려면 RHEL 기반 머신이 필요합니다.
  2. 도구의 스크립트를 실행할 수 있도록 호스트 가상 머신에 JRE 8이 설치되고 올바르게 구성되어 있어야 합니다.
  3. 이 도구를 사용하려면 인증 및 데이터 검색을 위해 관리 서버의 올바른 엔드포인트 (URL)와 유효한 관리 사용자 인증 정보가 필요합니다.
  4. 이 도구는 번들을 추출하고, 로그를 생성하고, 출력을 저장하기 위해 지정된 작업 디렉터리 (예: /tmp)에 액세스해야 합니다. 이 디렉터리에 디스크 공간이 충분하고 적절한 읽기/쓰기 권한이 있는지 확인합니다.
  5. 이 도구는 OpenLDAP 변경 - LDAP 데이터 추출 섹션의 ldapsearch 명령어를 사용하여 241자 / 바이트가 넘는 긴 RDN을 감지하는 LDIF 파일이 필요합니다.

도구 실행

위에 나열된 모든 필수 요건을 충족한 후 Apigee 저장소에 액세스하는 데 사용하는 Apigee의 사용자 이름과 비밀번호를 제공하면서 도구를 다운로드합니다. 다운로드한 후 다운로드한 보관 파일을 추출합니다.

curl -u uName:pWord https://software.apigee.com/apigee/change-detector/change-detector-for-4.53.01_1.0.0.zip -o /tmp/change-detector-for-4.53.01_1.0.0.zip
unzip /tmp/change-detector-for-4.53.01_1.0.0.zip

다운로드가 완료되면 다음 명령어를 실행하여 도구에 사용할 수 있는 모든 옵션을 확인할 수 있습니다.

./change-detector --help

도구를 실행하려면 다음 명령어를 사용하고 자리표시자를 정보로 바꿉니다.

export APIGEE_PASSWORD=[your_password]
./change-detector --username [your_username] --mgmt-url [MGMT url]

큰 RDN LDAP 항목을 감지하려면 다음 명령어를 실행합니다.

./change-detector --username [your_username] --mgmt-url [MGMT url] --ldif-file [LDIF_file]

이 도구는 Google Sheets와 같은 사람이 읽을 수 있는 도구에서 직접 사용하거나 가져올 수 있는 json 또는 csv 형식으로 출력을 생성합니다.

도구 출력 이해

조직

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

환경

조직 내의 특정 환경 (예: dev, test, prod)입니다. OpenLDAP 변경의 경우 None입니다.

Java 콜아웃 변경사항의 경우 아티팩트 유형이 env-level-jar이면 이 필드는 None이 됩니다.

아티팩트 이름

이 필드는 프록시/공유 흐름의 이름을 나타냅니다. OpenLDAP 변경의 경우 이 필드에 RDN의 LDAP 항목이 표시됩니다.

Java 콜아웃 변경사항의 경우 아티팩트 유형이 env-level-jar 또는 org-level-jar이면 이 필드는 None입니다.

아티팩트 유형

  • OAS 및 JSON 변경사항의 경우 이 열은 아티팩트, 프록시 또는 공유 흐름의 유형을 지정합니다.
  • Java 콜아웃 변경사항의 경우 이 열은 영향을 받는 JAR이 업로드된 장소 또는 수준에 관한 세부정보를 제공합니다. 리소스 (JAR)는 org-level, env-level, proxy-level세 가지 수준 중 하나에 저장할 수 있습니다.
  • OpenLDAP 변경의 경우 이 필드는 도구에서 사용된 LDIF 파일을 나타냅니다.

버전

영향을 받는 프록시/공유 흐름의 배포된 버전을 가리킵니다. OpenLDAP 변경의 경우 None입니다.

정책 이름

잠재적인 문제로 식별된 특정 정책의 이름입니다. OpenLDAP 변경의 경우 None입니다.

정책 유형

정책 유형을 가리킵니다. OpenLDAP 변경의 경우 None입니다.

영향 유형

  • 이 필드는 프록시/공유 흐름에서 감지된 특정 유형의 변경사항을 설명합니다.
  • Java 콜아웃 변경의 경우 java-callouts와 관련된 변경사항이 감지되면 이 특정 열에서 이전 버전의 Edge for Private Cloud의 $APIGEE_ROOT/edge-message-processor/lib/deprecated 디렉터리에 있는 JAR을 참조하는 영향을 받는 java-callout이 다음과 같은 방식으로 표시됩니다.
  • deprecated library detected for NAME_OF_THE_AFFECTED_JAVA_CALLOUT_JAR
  • OpenLDAP 변경의 경우 이 필드에는 LDAP 엔티티의 RDN이 241바이트 또는 문자를 초과했는지 표시됩니다.

영향을 받는 특정 필드

  • OAS 변경의 경우 이 필드는 정책의 Source 태그에 사용된 변수의 이름입니다.
  • JSON 변경의 경우 이 필드에는 잠재적인 문제로 표시된 정확한 JSONPath 표현식 또는 요소가 표시됩니다.
  • Java Callout 변경사항의 경우 이 필드에는 영향을 받는 JavaCallout jar에서 사용/참조되는 정확한 클래스와 해당 JAR의 이름 (이전 Private Cloud 버전의 $APIGEE_ROOT/edge-message-processor/lib/deprecated 디렉터리에 있음)에 관한 세부정보가 포함되어 있습니다. 이러한 세부정보는 버전 4.53.01로 업그레이드 시 완화되지 않으면 오류를 일으킵니다.
  •  ['Detected use of class CLASS_NAME_1 from JAR_NAME_1',
        Detected use of class CLASS_NAME_2 from JAR_NAME_2', 
      .. , .. , ]
  • OpenLDAP 변경의 경우 이 필드에는 241바이트 또는 문자를 모두 초과하는 LDAP 엔티티의 RDN이 표시됩니다.

영향 확실성

  • 이 필드는 도구가 특정 항목을 감지한 확실성의 정도를 나타냅니다. 이 열의 값은 높음 또는 보통일 수 있습니다 (나중에 값이 추가될 수 있음).

    높음 값은 버전 4.53.01로 업그레이드한 후 항목으로 인해 애플리케이션이 중단될 가능성이 매우 높다고 도구에서 판단했음을 의미합니다. Medium 값은 도구에서 감지에 대해 명확하지 않으며 결정을 내리기 위해 더 많은 전략이 필요함을 나타냅니다 (예: 프록시 실행 중에 해결된 변수를 관찰하기 위해 트레이스 캡처).

  • JavaCallout 및 OpenLDAP 변경사항과 관련된 감지는 항상 영향 확실성 열의 값이 높음입니다.

문서

이 열은 문제와 문제 완화 단계를 설명하는 Apigee 문서 (이 도움말의 관련 섹션)로 연결되는 하이퍼링크를 제공합니다.