Обзор изменений
Edge for Private Cloud 4.53.01 вносит ряд изменений, повышающих уровень безопасности платформы, и включает обновлённые версии необходимого программного обеспечения и библиотек. Эти изменения затрагивают следующие типы политик:
- Политика проверки OAS (спецификация OpenAPI)
- Политики, поддерживающие запросы JSONPath
- Политики вызовов Java , которые используют устаревшие библиотеки.
- OpenLDAP
- Изменения поставщика криптографии
Вы также можете использовать инструмент обнаружения изменений для выявления изменений в прокси-серверах, общих потоках или других артефактах в вашем кластере, которые могут вызвать сбои в результате этого обновления.
Подробное описание изменений
В этом разделе описываются изменения, внесённые в версию 4.53.01, которые могут нарушить ваши рабочие процессы во время или после обновления. Также рассматриваются методы выявления потенциальных проблемных областей и способы их устранения или обхода.
Политика проверки OAS (спецификация OpenAPI)
Контекст
Политика валидации OAS проверяет входящие запросы и ответы на соответствие правилам, определённым в спецификации OpenAPI 3.0 (JSON или YAML). Edge for Private Cloud 4.53.01 предлагает усовершенствования политики OAS (спецификация OpenAPI), направленные на более строгую и точную валидацию тел ответов API.
Изменения
Edge for Private Cloud 4.53.01 вносит два важных изменения в способ проверки ответов API политикой OAS, обеспечивая более тесное соответствие вашей спецификации OpenAPI:
- Сценарий 1:
- Предыдущее поведение: если спецификация OpenAPI требовала тела ответа, но фактический ответ от целевой или вышестоящей политики не включал его, политика не отмечала это как ошибку проверки.
- Текущее поведение: политика теперь будет правильно возвращать ошибку проверки (пример:
defines a response schema but no response body found
) в этом сценарии, указывая на несоответствие между ожидаемым и фактическим ответом.
- Сценарий 2:
- Предыдущее поведение: если в вашей спецификации OpenAPI явно указано, что тело ответа не ожидается, но фактический ответ от целевой или вышестоящей политики включал тело, политика не привела бы к сбою.
- Текущее поведение: Теперь политика приведет к сбою (пример:
No response body is expected but one was found
) в этом сценарии, гарантируя, что ответы строго соответствуют указанной схеме.
Смягчение
Определите все прокси-серверы или общие потоки, которые могут быть затронуты обновлением, с помощью инструмента обнаружения изменений или вручную. Найдите все прокси-серверы, для которых выполняется одно из следующих условий:
- Политика проверки OAS настроена с тегом Source , установленным на
response
. - Политика проверки OAS проверяет ответ любой другой политики, которая генерирует ответ.
При использовании инструмента он сгенерирует вывод в следующем формате:
Организация | Среда | Название артефакта | Тип артефакта | Пересмотр | Название политики | Тип политики | Тип воздействия | Ударное поле | Уверенность в воздействии | Документация |
---|---|---|---|---|---|---|---|---|---|---|
орг2 | дев | прокси2 | прокси | 4 | oas-validateresponse | Проверка OAS | oas_content_type_handling | Источник=calloutresponse | Середина | Политика проверки OAS |
орг1 | продукт | proxy3 | общий поток | 1 | oas-spec-validation | Проверка OAS | oas_content_type_handling | Источник=ответ | Середина | Политика проверки OAS |
Подробное объяснение столбцов в таблице выходных данных см. в разделе Понимание выходных данных инструмента .
После определения прокси-сервера или общего потока убедитесь, что ответ и спецификация OAS соответствуют требованиям к наличию или отсутствию тела ответа. Вы можете использовать стандартную трассировку Apigee для анализа трафика. Если целевой сервер возвращает ответ с перерывами, используйте другие политики для проверки ответа перед его передачей в политику проверки OAS.
- Если ваш файл спецификации OAS определяет тело ответа, ответ от целевой или вышестоящей политики всегда должен его предоставлять.
- Если ваш файл спецификации OAS не определяет тело ответа, целевая или вышестоящая политика не должна его отправлять.
При необходимости обновите политику проверки OAS или целевое поведение перед попыткой обновления до Private Cloud 4.53.01. Необходимо сначала проверить выявленные рабочие процессы в непроизводственных средах, чтобы минимизировать риск сбоев при обновлении производственного кластера.
JSON-путь
Контекст
В Edge for Private Cloud версии 4.53.01 внесены изменения в порядок использования выражений путей JSON в различных политиках. Выражения JSONPath можно использовать в таких политиках, как ExtractVariable , RegularExpressionProtection и Data Masking , для анализа содержимого JSON или сохранения значений в переменных. Выражения JSONPath также можно использовать в шаблонах общих сообщений для динамической замены переменных значениями во время выполнения прокси-сервера. Новые выражения и форматы JSONPath соответствуют последним стандартам выражений JSON.
Изменения
Важно проверить существующие прокси-серверы API/общие потоки на наличие политик, использующих выражения JSONPath. Это включает, помимо прочего, политику извлечения переменных, политику защиты регулярных выражений и любую политику с шаблоном сообщения, использующим 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"} ] } } }
- Изменение поведения подстановочного знака 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
), чтобы напрямую указать элементы, которые были извлечены ранее. - 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
. - Изменение структуры выходных данных рекурсивного спуска 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, чтобы получить доступ к отдельным элементам.
- Индексация JSONPath после выбора нескольких элементов или фильтрации возвращает пустой массив
Изменено поведение функции, когда индекс (например,
[0]
) применяется сразу после селектора нескольких элементов (например,[*]
) или фильтра ([?(condition)]
). Ранее такие выражения пытались выбрать элемент с указанным индексом из объединённых результатов. В новой версии эти выражения теперь возвращают пустой массив ([]
).Например,
Предыдущее поведение:$.store.book[*][0]
Текущее поведение:{"category": "reference", "price": 8.95, "author": "Nigel Rees"}
Действие:[]
Если необходимо отфильтровать и затем получить определенный элемент из отфильтрованного набора, обработайте отфильтрованный массив, возвращаемый JSONPath, например,
$..book[?(@.category == 'fiction')]
, а затем возьмите[0]
из предыдущего результата. - Изменение выходных данных отрицательного среза массива 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 и получить желаемый результат.
- 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
). Это позволит правильно указать и получить значение. - Динамические выражения JSONPath
Обратите особое внимание на политики, в которых выражение JSONPath само по себе предоставляется переменной (пример:
или{myJsonPathVariable}
). Значение этих переменных также необходимо проверить на предмет возможных изменений в поведении, описанных выше.{dynamicPath}
Смягчение
Определите все прокси-серверы или общие потоки, которые могут быть затронуты обновлением, используя инструмент обнаружения изменений или вручную проверив прокси-серверы API на наличие описанных закономерностей. При использовании инструмента в результатах будут указаны затронутый прокси-сервер или общий поток, соответствующая политика и любые проблемные пути JSON, как показано в примере ниже:
Организация | Среда | Название артефакта | Тип артефакта | Пересмотр | Название политики | Тип политики | Тип воздействия | Ударное поле | Уверенность в воздействии | Документация |
---|---|---|---|---|---|---|---|---|---|---|
орг1 | дев | прокси1 | прокси | 4 | EV-ExtractRequestParams | Извлечь переменные | JSONPath Wildcard [*] Изменение поведения для значений объектов | $.store[*] | Высокий | JSONPath Wildcard [*] Изменение поведения для значений объектов |
орг2 | продукт | прокси2 | общий поток | 1 | EV-ExtractResponseParams | Извлечь переменные | Завершающая точка (.) в путях JSONPath теперь вызывает ошибку | $.store.book. | Высокий | JSONPath: завершающая точка (.) в путях приводит к ошибке |
орг3 | дев | proxy3 | прокси | 3 | SC-FetchUserProfile | ServiceCallout | Изменение структуры выходных данных рекурсивного спуска JSONPath (..) | $..книга | Высокий | Изменение структуры выходных данных рекурсивного спуска JSONPath (..) |
орг4 | продукт | proxy4 | общий поток | 2 | RF-InvalidAuthToken | RaiseFault | Индексация JSONPath после выбора нескольких элементов или фильтрации теперь возвращает пустой массив | $.store.book[*][0] | Высокий | Индексация JSONPath после выбора нескольких элементов или фильтрации возвращает пустой массив |
орг5 | тест | proxy5 | прокси | 6 | SC-FetchProfileDetails | ServiceCallout | Изменение выходных данных отрицательного массива JSONPath | $.store.book[-2:] | Высокий | Изменение выходных данных отрицательного среза массива JSONPath |
орг6 | продукт | proxy6 | прокси | 2 | ML-LogRequestDetails | Ведение журнала сообщений | JSONPath Stricter Preceding Dot | $store | Высокий | JSONPath более строгая предварительная точка |
орг7 | тест | proxy7 | прокси | 5 | RF-InvalidTokenDetails | RaiseFault | Динамические выражения JSONPath | myJsonPathVariable | Середина | Динамические выражения JSONPath |
Подробное объяснение столбцов в приведенной выше таблице выходных данных см. в разделе Понимание выходных данных инструмента .
Для устранения этой проблемы необходима комплексная стратегия. Этот процесс включает выбор подходящего пути обновления и применение необходимых исправлений для обнаруженных выражений JSONPath.
Выберите наиболее подходящий для вас метод обновления:
- Миграция с нулевым временем простоя
Эта стратегия предполагает приобретение одной или нескольких новых сред, к которым можно подключить отдельные узлы обработки сообщений. Такие узлы обработки сообщений можно настроить на установку версии 4.53.01 и использовать прокси-серверы с современными выражениями JSONPath. Их можно использовать во время обновления и вывести из эксплуатации после его завершения. Эта стратегия является беспроблемной, но требует временного приобретения дополнительных узлов обработки сообщений для обеспечения плавного обновления. Подробности ниже:
- Создайте новую среду и добавьте в нее новые узлы обработки сообщений версии 4.53.01.
- Загрузите пакет прокси для затронутых прокси-серверов в новую среду и примените необходимые исправления, описанные в разделе по исправлению, а затем разверните обновленный пакет прокси-сервера в новой среде.
- Перенаправьте трафик в новую среду и отмените развертывание затронутых прокси-серверов из старой среды.
- Обновите исходные узлы обработки сообщений до версии 4.53.01. Разверните прокси-серверы с исправлениями для JSONPath в исходной среде.
- Переключите трафик обратно в старую среду, в которой теперь используются обработчики сообщений версии 4.53.01 и прокси-сервер, модернизированный для новых выражений jsonpath.
- Удалить и вывести из эксплуатации новую среду и связанные с ней узлы.
- Простой и обновление
Эта стратегия предполагает обеспечение простоя API-прокси с использованием некорректных выражений JSON Path. Это не требует привлечения дополнительных узлов обработки сообщений, но приводит к сбоям в работе API-трафика затронутых прокси.
- Определите затронутые прокси-серверы с затронутыми политиками и создайте новую версию для всех затронутых прокси-серверов.
- Примените необходимые исправления, внедрив исправления, описанные в разделе «Исправление», в новую версию прокси-сервера. Пока не внедряйте это.
- Обеспечить простои прокси-сервера/прокси-серверов с учетом воздействия.
- Обновите все обработчики сообщений до версии Edge для частного облака 4.53.01. Обратите внимание, что существующие прокси-серверы могут работать со сбоями на обновлённых обработчиках сообщений.
- После обновления всех обработчиков сообщений до версии Edge для частного облака 4.53.01 разверните вновь созданную версию прокси-сервера с исправленным выражением JSONPath.
- Возобновите трафик на таких прокси.
- Перепроектируйте прокси перед обновлением
Вы можете перепроектировать сам прокси-сервер перед обновлением до Edge for Private Cloud 4.53.01. Вместо того, чтобы полагаться на конкретные выражения пути JSON, вы можете получить тот же результат, используя другой метод.
Например, если вы используете политику извлечения переменных с JSON-путем, вы можете заменить её политикой Javascript, которая извлекает аналогичные данные перед обновлением до новой версии. После завершения обновления вы сможете вернуться к использованию JSON-путей с новыми форматами.
Изменения JavaCallout
Контекст
В Edge для частного облака версии 4.53.00 и более ранних версиях существовал каталог deprecated ( $APIGEE_ROOT/edge-message-processor/lib/deprecated
), содержащий ряд JAR-библиотек. Эти библиотеки были доступны для использования в коде Java в политике JavaCallout и могли использоваться вашим пользовательским кодом Java напрямую или косвенно.
Изменения
Устаревший каталог теперь удалён в Edge для частного облака версии 4.53.01. Если ваш Java-код использует такие библиотеки, прокси-серверы, использующие такие вызовы Java, будут работать со сбоями при обновлении обработчиков сообщений до версии 4.53.01. Чтобы избежать подобных сбоев, выполните следующие действия перед обновлением обработчиков сообщений до версии 4.53.01.
Смягчение
Проверьте политики Java Callout и связанные с ними jar-файлы с помощью инструмента обнаружения изменений или вручную. Проверьте, ссылаются ли какие-либо политики на библиотеки, присутствующие в каталоге «deprecated» ваших текущих обработчиков сообщений.
Если вы используете инструмент Apigee для обнаружения указанных выше уязвимостей, он сгенерирует отчёт, показанный в следующей таблице. В частности, он нацелен на политики, ссылающиеся на JAR-файлы, находящиеся в каталоге
$APIGEE_ROOT/edge-message-processor/lib/deprecated
старых версий Edge for Private Cloud.Инструмент будет генерировать отчеты в следующем формате:
Организация Среда Название артефакта Тип артефакта Пересмотр Название политики Тип политики Тип воздействия Ударное поле Уверенность в воздействии Документация орг1 Никто Никто org-level-jar Никто Никто java-вызов Обнаружена устаревшая библиотека для simple-javacallout-o1-jar-1.jar
['Обнаружено использование класса org.apache.commons.io.FileUtils
изcommons-io-2.5.jar
, 'Обнаружено использование классаorg.apache.commons.io.input.XmlStreamReaderException
изcommons-io-2.5.jar
']Высокий Изменения JavaCallout орг3 env3 Никто env-level-jar Никто Никто java-вызов Для fat-javacallout-e3-jar-1.jar
обнаружена устаревшая библиотека['Обнаружено использование класса org.apache.http.impl.auth.NTLMSchemeFactory
изhttpclient-4.5.2.jar
']Высокий Изменения JavaCallout орг1 env1 стр.1 proxy-level-jar 1 Никто java-вызов Обнаружена устаревшая библиотека для simple-javacallout-p1-jar-1.jar
['Обнаружено использование класса org.apache.commons.lang3.builder.ToStringBuilder
изcommons-lang3-3.4.jar
', 'Обнаружено использование классаorg.apache.commons.lang3.Validate
изcommons-lang3-3.4.jar
']Высокий Изменения JavaCallout Подробное объяснение столбцов в приведенной выше таблице выходных данных см. в разделе Понимание выходных данных инструмента .
- После того как вы определили такие устаревшие библиотеки, вы можете воспользоваться одним из приведенных ниже методов решения проблемы.
- Размещение ресурсов (рекомендуется, если у вас есть небольшое количество jar-файлов/библиотек из устаревшего каталога, на которые ссылаются jar-файлы Java-Callout)
- Загрузите выявленные устаревшие jar-файлы в качестве ресурса на желаемом уровне: ревизия прокси API, среда или организация.
- Продолжайте обновление программного обеспечения Apigee как обычно.
- Ручное размещение (рекомендуется, если у вас большое количество jar-файлов/библиотек, на которые ссылаются jar-файлы Java-Callout)
- На каждом узле процессора сообщений создайте новый каталог с именем external-lib по пути
$APIGEE_ROOT/data/edge-message-processor/
. - Скопируйте идентифицированные 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 как обычно.
- На каждом узле процессора сообщений создайте новый каталог с именем external-lib по пути
- Размещение ресурсов (рекомендуется, если у вас есть небольшое количество jar-файлов/библиотек из устаревшего каталога, на которые ссылаются jar-файлы Java-Callout)
Изменение OpenLDAP
Контекст
OpenLDAP можно использовать в Edge Private Cloud как для аутентификации, так и для авторизации. В Edge for Private Cloud 4.53.01 программное обеспечение OpenLDAP, поставляемое Apigee, было обновлено с версии 2.4 до 2.6.
Изменения
В OpenLDAP 2.6 длина относительного отличительного имени (RDN) ограничена примерно 241 байтом/символом. Это ограничение является жёстким и не может быть изменено.
Влияние- Для записей с чрезмерно большими RDN возникают сбои репликации или импорта.
- Попытка создать такие сущности, как организации, среды, пользовательские роли, разрешения и т. д., может привести к появлению сообщения об ошибке:
"message": "[LDAP: error code 80 - Other]"
. - Любое DN длиной более 241 байта в LDAP Apigee подвержено уязвимости. Такие DN препятствуют успешному обновлению программного обеспечения Apigee OpenLDAP, и вам потребуется следовать стратегиям снижения рисков, прежде чем продолжить обновление.
Как правило, в LDAP Apigee длинные имена доменов связаны с разрешениями, поскольку они создаются путём объединения нескольких сущностей. Такие записи разрешений особенно подвержены проблемам при обновлении.
Например,
dn: cn=@@@environments@@@*@@@applications@@@*@@@revisions@@@*@@@debugsessions,ou=resources,cn=businessuser,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
Как правило, названия организаций, сред и ролей имеют такую длину, что RDN в LDAP оказываются меньше 241 байта.
Смягчение
Перед обновлением до 4.53.01:
Следующие шаги помогут проверить наличие длинных RDN в вашем существующем кластере LDAP 2.4.
#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 для идентификации LDAP RDN, превышающих 241 байт/символ.
Инструмент будет генерировать отчеты в следующем формате:
Организация | Среда | Название артефакта | Тип артефакта | Пересмотр | Название политики | Тип политики | Тип воздействия | Ударное поле | Уверенность в воздействии | Документация |
---|---|---|---|---|---|---|---|---|---|---|
Никто | Никто | cn= really-long-name ,ou=userroles,o=edge-platform,ou=organizations,dc=apigee,dc=com | ldif-файл | Никто | Никто | Никто | Длина RDN LDAP превышает 241 символ | cn= really-long-name | Высокий | Изменение OpenLDAP |
Подробное объяснение столбцов в приведенной выше таблице выходных данных см. в разделе Понимание выходных данных инструмента .
Если при выполнении указанной выше команды ничего не выводится, значит, ни одно из RDN-имен в текущей настройке LDAP не превышает 241 байт/символ. Вы можете продолжить обновление в обычном режиме.
Если при выполнении указанной выше команды есть результат, это указывает на наличие RDN, превышающих 241 байт/символ. Для таких элементов выполните действия по устранению уязвимости, описанные в шаге 3 , прежде чем приступать к обновлению Edge for Private Cloud до версии 4.53.01.
#3 — Обработка длинных RDN
Если на шаге 2 получены выходные данные, это указывает на наличие RDN, превышающих 241 байт/символ, и выполните следующие шаги по устранению проблемы:
Проверьте записи LDAP, размер которых превышает 241 байт.
- Если основной причиной длинного RDN является имя пользовательской роли, приложения, продукта API или других сущностей, перейдите на использование альтернативной сущности с более коротким именем.
- Если основным источником длинного RDN является название организации или среды, вам придется перейти на другую организацию или среду с более коротким именем.
Продолжайте повторять описанные выше шаги, пока в вашем LDAP не останется ни одного RDN-имени длиннее 241 байта. После достижения этого состояния продолжайте обновление версии частного облака как обычно.
Изменения поставщика криптографии
Контекст
Это изменение перенесено из Edge for Private Cloud 4.53.00. В Edge for Private Cloud 4.53.00 внутренний поставщик криптографии был обновлён с Bouncy Castle (BC) до Bouncy Castle FIPS (BCFIPS) для поддержки FIPS.
Изменения
Если политики JavaCallout используют исходного поставщика BC, особенно при использовании функций безопасности, усиленных в поставщике BCFIPS (например, использование общей пары ключей для шифрования и подписи), такие политики JavaCallout необходимо модернизировать. Политики JavaCallout, пытающиеся загрузить поставщик криптографии Bouncy Castle с именем BC, могут завершиться неудачей из-за смены поставщика по умолчанию. Такие политики, использующие поставщика BC, впоследствии могут перестать работать. Любые пользовательские реализации, использующие старого поставщика BC, больше не будут доступны и должны быть пересмотрены и реализованы заново.
Смягчение
Рекомендуемым решением является использование поставщика BCFIPS. Пользовательские реализации JavaCallout, основанные на старом поставщике, необходимо пересмотреть и переписать с использованием поставщика Bouncy Castle FIPS, доступ к которому можно получить с помощью строки «BCFIPS».
Инструмент обнаружения изменений
Разработан инструмент обнаружения изменений для выявления прокси-серверов, политик и общих потоков Apigee, которые могут быть затронуты во время и после перехода на Edge for Private Cloud 4.53.01. Этот инструмент формирует отчёт с подробным описанием развёрнутых прокси-серверов, общих потоков и OpenLDAP, затронутых изменениями, а также предоставляет указания по конкретным руководствам и стратегиям, относящимся к этим прокси-серверам или общим потокам.
Предпосылки
- Для запуска этого инструмента требуется машина на базе RHEL.
- Для запуска скриптов инструмента необходимо установить и правильно настроить JRE 8 на виртуальной машине хоста.
- Для аутентификации и извлечения данных инструменту требуется правильная конечная точка (URL) сервера управления и действительные учетные данные администратора.
- Инструменту требуется доступ к указанному рабочему каталогу (например
/tmp
) для извлечения пакетов, создания журналов и сохранения выходных данных. Убедитесь, что в этом каталоге достаточно места на диске и есть соответствующие права на чтение/запись. - Инструменту требуется файл LDIF с помощью команды
ldapsearch
в разделе «Изменение OpenLDAP — Извлечение данных LDAP» для обнаружения длинных RDN, длиннее 241 символа/байта.
Запуск инструмента
После выполнения всех перечисленных выше условий скачайте инструмент, указав имя пользователя и пароль 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]
Инструмент генерирует выходные данные в формате json или csv, которые можно напрямую использовать или импортировать в удобный для восприятия инструмент, например, в Google Таблицы.
Понять выходные данные инструмента
Организация
Указывает на название организации, где находится артефакт. Для изменения OpenLDAP это будет None
.
Среда
Конкретная среда (например, dev, test, prod) в организации. Для изменений OpenLDAP это будет None
.
Для изменений Java Callout, если Artifact Type= env-level-jar
, это поле будет иметь None
.
Название артефакта
В этом поле указывается имя прокси-сервера/общего потока. При изменении OpenLDAP в этом поле отображается сущность LDAP RDN.
Для изменений Java Callout, если Artifact Type= env-level-jar
или org-level-jar
, это поле будет иметь None
.
Тип артефакта
- Для изменений OAS и JSON в этом столбце указывается тип артефакта, прокси или общий поток.
- Для изменения Java Callout этот столбец содержит сведения о месте или уровне, на котором загружен затронутый JAR-файл. Ресурсы (JAR-файлы) могут храниться на одном из трёх уровней :
org-level
,env-level
иproxy-level
. - Для изменения OpenLDAP это поле указывает файл LDIF, используемый в инструменте.
Пересмотр
Он указывает на развёрнутую версию затронутого прокси-сервера/общего потока. Для изменения OpenLDAP это будет None
.
Название политики
Имя конкретной политики, которая была определена как потенциальная проблема. Для изменения OpenLDAP это будет None
.
Тип политики
Указывает тип политики. Для изменения OpenLDAP это будет None
.
Тип воздействия- В этом поле описывается конкретный тип изменения, обнаруженного в прокси-потоке/общем потоке.
- Для изменения Java Callout, обнаружения изменений, связанных с java-callouts, инструмент указывает на затронутый java-callout, который имеет ссылки на JAR-файлы, присутствующие в каталоге
$APIGEE_ROOT/edge-message-processor/lib/deprecated
более старых версий Edge для частного облака, следующим образом в этом конкретном столбце. deprecated library detected for NAME_OF_THE_AFFECTED_JAVA_CALLOUT_JAR
- При изменении OpenLDAP это поле показывает, превысило ли RDN какой-либо сущности LDAP 241 байт или символ.
Ударное поле- Для изменения OAS это поле представляет собой имя переменной, используемой в теге источника политики.
- Для изменения JSON в этом поле отображается точное выражение JSONPath или элемент, помеченный как потенциальная проблема.
- Для изменения Java Callout это поле содержит сведения о точных классах и имени соответствующего JAR-файла (присутствующего в каталоге
$APIGEE_ROOT/edge-message-processor/lib/deprecated
старых версий Private Cloud), используемого/ссылающегося на затронутый JAR-файл JavaCallout, который приведет к сбоям при обновлении до версии 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 в этом поле отображаются RDN сущности LDAP, все из которых превышают 241 байт или символ.
Уверенность в воздействии Это поле показывает степень уверенности, с которой инструмент обнаружил конкретный объект. Значения в этом столбце могут быть «Высокий» или «Средний» (дополнительные значения могут быть добавлены позже).
Высокое значение означает, что инструмент определил, что существует очень высокая вероятность того, что элемент приведёт к сбою приложения после обновления до версии 4.53.01. Среднее значение указывает на то, что инструмент не может определить, как именно происходит обнаружение, и для его определения потребуются дополнительные стратегии (например, сбор трассировки для наблюдения за разрешёнными переменными во время выполнения прокси-сервера).
- Обнаружения, связанные с изменениями JavaCallout и OpenLDAP, всегда будут иметь высокое значение для столбцов уверенности воздействия.
Документация
$APIGEE_ROOT/edge-message-processor/lib/deprecated
более старых версий Edge для частного облака, следующим образом в этом конкретном столбце. deprecated library detected for NAME_OF_THE_AFFECTED_JAVA_CALLOUT_JAR
- Для изменения OAS это поле представляет собой имя переменной, используемой в теге источника политики.
- Для изменения JSON в этом поле отображается точное выражение JSONPath или элемент, помеченный как потенциальная проблема.
- Для изменения Java Callout это поле содержит сведения о точных классах и имени соответствующего JAR-файла (присутствующего в каталоге
$APIGEE_ROOT/edge-message-processor/lib/deprecated
старых версий Private Cloud), используемого/ссылающегося на затронутый JAR-файл JavaCallout, который приведет к сбоям при обновлении до версии 4.53.01, если не устранить неполадки. - Для изменений OpenLDAP в этом поле отображаются RDN сущности LDAP, все из которых превышают 241 байт или символ.
['Detected use of class CLASS_NAME_1 from JAR_NAME_1', Detected use of class CLASS_NAME_2 from JAR_NAME_2', .. , .. , ]
Уверенность в воздействии Это поле показывает степень уверенности, с которой инструмент обнаружил конкретный объект. Значения в этом столбце могут быть «Высокий» или «Средний» (дополнительные значения могут быть добавлены позже).
Высокое значение означает, что инструмент определил, что существует очень высокая вероятность того, что элемент приведёт к сбою приложения после обновления до версии 4.53.01. Среднее значение указывает на то, что инструмент не может определить, как именно происходит обнаружение, и для его определения потребуются дополнительные стратегии (например, сбор трассировки для наблюдения за разрешёнными переменными во время выполнения прокси-сервера).
- Обнаружения, связанные с изменениями JavaCallout и OpenLDAP, всегда будут иметь высокое значение для столбцов уверенности воздействия.
Документация
Это поле показывает степень уверенности, с которой инструмент обнаружил конкретный объект. Значения в этом столбце могут быть «Высокий» или «Средний» (дополнительные значения могут быть добавлены позже).
Высокое значение означает, что инструмент определил, что существует очень высокая вероятность того, что элемент приведёт к сбою приложения после обновления до версии 4.53.01. Среднее значение указывает на то, что инструмент не может определить, как именно происходит обнаружение, и для его определения потребуются дополнительные стратегии (например, сбор трассировки для наблюдения за разрешёнными переменными во время выполнения прокси-сервера).
В этой колонке представлена гиперссылка на документацию Apigee (соответствующие разделы этой статьи), в которой объясняется проблема и шаги по ее устранению.