Примечания к выпуску адаптера Apigee для Envoy

Вы просматриваете документацию Apigee Edge .
Перейдите в документацию Apigee
X.info

v2.1.1

7 июня 2023 года мы выпустили версию 2.1.1 адаптера Apigee для Envoy.

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой квоты некорректно дублировались между операциями вместо того, чтобы распределяться на уровне продукта.

v2.1.0

5 июня 2023 года мы выпустили версию 2.1.0 адаптера Apigee для Envoy.

Исправлены ошибки

  • В ответ на запрос /verifyApiKey был добавлен параметр application_id .

v2.0.7

9 марта 2023 года мы выпустили версию 2.0.7 адаптера Apigee для Envoy.

Функции и улучшения

  • Теперь JWT-токены могут добавлять утверждение с именем customattributes , которое будет передавать значение целевому объекту в заголовке с именем x-apigee-customattributes (если append_metadata_headers установлен в значение true ).

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой недействительный ключ API мог создавать ложные записи в логах и аналитические данные.
  • В прокси-сервере была удалена устаревшая проверка версии, которая вызывала проблемы в более новых версиях Apigee.

v2.0.6

18 октября 2022 года мы выпустили версию 2.0.6 адаптера Apigee для Envoy.

Исправлены ошибки

  • Выпущено обновление безопасности для устранения уязвимости типа «отказ в обслуживании» (DoS) в библиотеке зависимостей. См. CVE-2022-28948 .

v2.0.5

3 марта 2022 года мы выпустили версию 2.0.5 адаптера Apigee для Envoy.

Исправлены ошибки

  • Выпуск обновления безопасности для устранения угрозы отказа в обслуживании (DoS) в библиотеке Prometheus. См. CVE-2022-21698 .

v2.0.4

3 декабря 2021 года мы выпустили версию 2.0.4 адаптера Apigee для Envoy.

Функции и улучшения

  • Список поддерживаемых версий Envoy и Istio для команды CLI samples был обновлен. Теперь для примеров поддерживаются следующие версии:
    • Версии Envoy с 1.18 по 1.20
    • Istio версий 1.10–1.12

Исправлены ошибки

  • Для предотвращения паники при загрузке закрытого ключа блока PEM была добавлена ​​проверка на значение nil. ( Проблема #360 )
  • Теперь ошибки авторизации удаленных служб регистрируются на уровне отладки (Debug). Исключение составляют ошибки получения токенов для ключей API. В этом случае ошибки регистрируются на уровне ошибок (Error), поэтому они видны, даже если уровень отладки для apigee-remote-service-envoy отключен. См. также Настройка уровней ведения журналов удаленных служб . ( Проблема #104 )

v2.0.3

21 сентября 2021 года мы выпустили версию 2.0.3 адаптера Apigee для Envoy.

Исправлены ошибки

  • Исправлена ​​ошибка в логах аналитики при обработке прямых ответов. Эта ошибка возникала только при определенных условиях. Например:
    • Для запросов, не требующих проверки авторизации/аутентификации, authContext не генерировался, а динамические метаданные были равны нулю, в результате чего запись в журнале доступа игнорировалась.
    • В ответе об отказе использовался код RPC вместо кода HTTP, из-за чего в пользовательском интерфейсе Apigee записи отображались как успешные.

v2.0.2

7 июня 2021 года мы выпустили версию 2.0.2 адаптера Apigee для Envoy.

Исправлены ошибки

  • Была исправлена ​​ошибка состояния гонки, которая могла вызывать ошибки 403 и сбои, когда JWT заявлял об отсутствии области видимости.

v2.0.0

Во вторник, 6 апреля 2021 года, мы выпустили версию 2.0.0 адаптера Apigee для Envoy.

Функции и улучшения

Особенность Описание
Поддержка многопользовательской среды

Теперь вы можете включить адаптер для обслуживания нескольких сред в рамках организации Apigee. Эта функция позволяет использовать один адаптер Apigee для Envoy, связанный с одной организацией Apigee, для обслуживания нескольких сред. До этого изменения один адаптер всегда был привязан к одной среде Apigee. Для получения дополнительной информации об этой функции см. раздел «Поддержка многопользовательских сред» .

Поддержка API Envoy v3
Поддержка метаданных Envoy

В Envoy 1.16+ появилась возможность отправлять метаданные ext_authz без использования заголовков. Благодаря этому и связанным с ним изменениям мы теперь предоставляем более корректные коды ответов HTTP для отклоненных запросов, и нам больше не нужно устанавливать фильтр RBAC в Envoy. См.

Эта функция поддерживается только в Envoy 1.16+ и Istio 1.9+.

В результате этого изменения следующая конфигурация больше не добавляется в файл конфигурации Envoy ( envoy-config.yaml ):

additional_request_headers_to_log:
    - x-apigee-accesstoken
    - x-apigee-api
    - x-apigee-apiproducts
    - x-apigee-application
    - x-apigee-clientid
    - x-apigee-developeremail
    - x-apigee-environment

Если вы хотите добавлять заголовки к запросам в особом случае, просто установите свойство append_metadata_headers:true в файле config.yaml адаптера.

Разделите прокси remote-token и прокси-сервер для remote-service .

Прокси-сервер удаленного сервиса был рефакторизован и разделен на два отдельных прокси. В версии 2.0.x при подготовке будут установлены два API-прокси: remote-service и remote-token . Конечные точки /token и /certs были перенесены из прокси -сервера удаленного сервиса в remote-token .

Это изменение обеспечивает полезное разделение функций. Теперь прокси -сервер удаленного сервиса используется только для внутренней связи адаптера, а прокси -сервер удаленного токена предоставляет пример рабочего процесса OAuth, который вы можете настроить. Мы никогда не перезапишем ваш пользовательский прокси -сервер удаленного токена , даже если используется команда provision --force-proxy-install .

Поддержка сбора данных

Доступно только для Apigee X и Apigee hybrid.

Теперь адаптер поддерживает передачу метаданных Envoy в функцию сбора данных Apigee, которая отправляет данные, собранные в указанных вами переменных, в аналитику Apigee для использования в пользовательских отчетах.

RBAC не требуется

Как отмечалось ранее в разделе поддержки метаданных Envoy , теперь мы немедленно отклоняем несанкционированные запросы без необходимости использования отдельного фильтра RBAC. Поскольку RBAC не используется, клиенты теперь будут получать от адаптера соответствующие коды состояния HTTP:

  • 401 Несанкционированный доступ
  • 403 Запрещено
  • 429 Слишком много запросов
  • Ошибка 500 (внутренняя ошибка сервера)

Если вы хотите разрешить несанкционированные запросы, вы можете сделать это, установив auth:allow_unauthorized:true в файле config.yaml адаптера.

Заголовки x-apigee-* больше не добавляются по умолчанию.

Как отмечалось ранее в разделе поддержки метаданных Envoy , заголовки x-apigee-* больше не добавляются по умолчанию. Если вы хотите их добавить, установите append_metadata_headers:true в файле config.yaml . Эта конфигурация является полностью необязательной и должна использоваться только в том случае, если необходимо пересылать заголовки в целевую службу.

Настройка сопоставления запроса с целевым удаленным сервисом

Семантика свойства конфигурации api_header остается такой же, как и у прежнего свойства target_header (по умолчанию по-прежнему используется имя целевого хоста), а содержимое указанного заголовка по-прежнему будет соответствовать либо атрибуту целевого удаленного сервиса API Product, либо полю apiSource в операции API Product (только для Apigee hybrid и Apigee X).

Чтобы переопределить значение этого заголовка с помощью метаданных Envoy, вы можете передать элемент метаданных apigee_api из Envoy в адаптер, чтобы напрямую указать целевой удаленный сервис продукта API или источник API операции продукта API. Для настройки добавьте в файл конфигурации Envoy (который можно сгенерировать с помощью CLI адаптера) код, аналогичный следующему:

typed_per_filter_config:
  envoy.filters.http.ext_authz:
    "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
    check_settings:
      context_extensions:
        apigee_api: httpbin.org
Аналитические данные по отклоненным запросам регистрируются немедленно.

Теперь адаптер Envoy будет немедленно регистрировать отклоненные запросы в аналитике, как того требуют правила, вместо того, чтобы ждать возврата запроса в журнале доступа. Это более эффективно и не требует добавления каких-либо метаданных к запросу.

Поддержка UDCA прекращена.

В Apigee Hybrid и Apigee X потоковая передача данных в универсальный агент сбора данных Apigee (UDCA) больше не требуется для аналитики, поскольку она заменена прямой загрузкой. Это изменение просто удаляет устаревшую поддержку этой опции.

Добавлена ​​поддержка mTLS для Edge for Private Cloud в командах CLI provision/bindings.

Пользователи Apigee Edge for Private Cloud могут предоставлять клиентские TLS-сертификаты и корневой сертификат с помощью ‑‑tls‑cert , ‑‑tls‑key и ‑‑tls‑ca соответственно при настройке или отображении привязок продуктов с помощью CLI.

Поддержка mTLS между адаптером и средой выполнения Apigee.

Для использования mTLS между адаптером и средой выполнения Apigee вы можете указать клиентские TLS-сертификаты в разделе tenant файла config.yaml адаптера. Это изменение применяется ко всем поддерживаемым платформам Apigee. Оно также включает mTLS для аналитики на платформе Apigee Edge for Private Cloud. Для получения дополнительной информации см. раздел «Настройка mTLS между адаптером и средой выполнения Apigee» .

Исправлены ошибки

  • Исправлена ​​ошибка, из-за которой несколько конфигураций операций с одним и тем же источником API использовали одни и те же идентификаторы сегментов квот, что приводило к конфликтам при расчете квот. (Проблема #34 )
  • Исправлена ​​ошибка, из-за которой операции без указанных глаголов приводили к отклонению запроса (ожидаемое поведение — разрешить все глаголы, если ни один не указан). (Проблема № 39 )

v1.4.0

В среду, 16 декабря 2020 года, мы выпустили версию 1.4.0 Apigee Adapter для Envoy.

Поддерживаемые платформы

Мы публикуем бинарные файлы для MacOS, Linux и Windows.

Мы публикуем образы Docker из дистрибутивов Google Distroless, Ubuntu и Ubuntu от Boring Crypto.

В этой версии поддерживаются следующие платформы:

  • Apigee hybrid версии 1.3.x, 1.4.x (дата выпуска уточняется), Apigee Edge для публичного облака, Apigee Edge для частного облака и Apigee в Google Cloud.
  • Istio версий 1.5, 1.6, 1.7, 1.8
  • Версии Envoy 1.14, 1.15, 1.16

Функции и улучшения

Особенность Описание
Для работы прокси remote-service больше не требуется привязка к API-продукту, использующему целевые объекты удаленных сервисов.

Поскольку данная связь больше не требуется, обратите внимание на следующие изменения:

  • Продукт API удаленного сервиса больше не создается в процессе инициализации.
  • Команда CLI bindings verify больше не актуальна и устарела.
Для инициализации системы больше не требуется роль администратора организации Apigee.

Вместо того чтобы требовать разрешения администратора организации для инициализации, теперь можно использовать роли IAM «Создатель API» и «Развертыватель». Для успешной инициализации необходимо предоставить права доступа к обеим этим ролям.
(Применимо только к Apigee в Google Cloud и Apigee Hybrid)

Другие проблемы и способы их решения

  • Исправлена ​​ошибка, из-за которой повторная инициализация Apigee без параметра --rotate завершалась с ошибкой.
  • Теперь интерфейс командной строки для инициализации считывает и повторно использует учетные данные учетной записи службы аналитики из заданного файла config.yaml ( Проблема #133 ).

v1.3.0

В понедельник, 23 ноября, мы выпустили версию 1.3.0 Apigee Adapter для Envoy.

Поддерживаемые платформы

Мы публикуем бинарные файлы для MacOS, Linux и Windows.

Мы публикуем образы Docker из дистрибутивов Google Distroless, Ubuntu и Ubuntu от Boring Crypto.

В этой версии поддерживаются следующие платформы:

  • Apigee hybrid версии 1.3.x, 1.4.x (дата выпуска уточняется), Apigee Edge для публичного облака, Apigee Edge для частного облака и Apigee в Google Cloud.
  • Istio версий 1.5, 1.6, 1.7, 1.8
  • Версии Envoy 1.14, 1.15, 1.16

Функции и улучшения

Особенность Описание
Поддержка API-продукта OperationGroups. OperationGroups связывают ресурсы и обеспечивают соблюдение квот в прокси-сервере или удаленном сервисе с помощью методов HTTP.
(Применимо только к Apigee в Google Cloud и Apigee Hybrid)
Удалить поддержку динамического прокси-сервера при генерации примеров. В связи с этим изменением клиентам необходимо включать заголовок HOST , если имя хоста отличается от целевого хоста удаленной службы, указанного в API-продукте. Например:
curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"

См. раздел «Создание продукта API».

Поддержка учетных записей служб и идентификации рабочих нагрузок. Чтобы разрешить загрузку аналитических данных в Apigee при работе адаптера вне гибридного кластера Apigee, необходимо использовать параметр analytics-sa с командой apigee-remote-service-cli provision . Кроме того, адаптер теперь поддерживает Workload Identity в Google Kubernetes Engine (GKE). См. команду Provision .
(Применимо только к Apigee в Google Cloud и Apigee Hybrid)
Новый атрибут конфигурации jwt_provider_key . Этот ключ добавляется в файл конфигурации . Он представляет собой ключ payload_in_metadata поставщика JWT в конфигурации Envoy или эмитента JWT RequestAuthentication в конфигурации Istio .
Теперь значение параметра конфигурации KeepAliveMaxConnectionAge по умолчанию составляет 1 минуту. Ранее значение по умолчанию составляло 10 минут. Это изменение обеспечивает более плавное масштабирование. Это значение также используется для времени жизни потока журналов доступа. См. файл конфигурации .
Удалены команды командной строки. Следующие команды CLI устарели. Мы рекомендуем использовать API Edge для обновления целевых объектов удаленных служб для продуктов API:
  • apigee-remote-service-cli bindings add
  • apigee-remote-service-cli bindings remove
Добавлена ​​новая команда командной строки. Команда:
apigee-remote-service-cli samples templates

Здесь перечислены доступные параметры, которые можно использовать с флагом --template в команде samples create . См. справочник по CLI .

Изменена существующая команда командной строки. В команду apigee-remote-service-cli samples create внесены изменения. Флаги, специфичные для шаблонов Envoy или Istio, проверяются строго, и при неправильном использовании флагов возвращаются ошибки. Опция native шаблона устарела. Чтобы получить список доступных шаблонов, используйте команду apigee-remote-service-cli samples templates . См. также справочник по CLI .
Ответ конечной точки /token теперь соответствует спецификации OAuth2 . К ответу был добавлен параметр access_token , а параметр token устарел.

v1.2.0

В среду, 30 сентября, мы выпустили версию 1.2.0 Apigee Adapter для Envoy.

Поддерживаемые платформы

Мы публикуем бинарные файлы для MacOS, Linux и Windows.

Мы публикуем образы Docker из дистрибутивов Google Distroless, Ubuntu и Ubuntu от Boring Crypto.

В этой версии поддерживаются следующие платформы:

  • Apigee hybrid версия 1.3.x
  • Istio версий 1.5, 1.6, 1.7
  • Версии Envoy 1.14, 1.15

Функции и улучшения

Особенность Описание
Поддержка Apigee в облаке Google Теперь вы можете использовать Apigee Adapter for Envoy с Apigee в Google Cloud . Вы можете запустить адаптер в собственном кластере или запустив Remote Service for Envoy как нативный исполняемый файл или в контейнере. Для подготовки адаптера в Apigee используйте команду provision .
Прямая загрузка аналитических данных Теперь вы можете настроить адаптер Apigee для прямой загрузки аналитических данных в Apigee. Если вы используете Apigee Hybrid, эта новая функция позволяет развернуть адаптер в собственном кластере Kubernetes, вне кластера, где установлен Apigee Hybrid. Чтобы включить прямую загрузку, используйте новый флаг --analytics-sa с командой provision . См. команду provision .
Проверка работоспособности возвращает статус «Готово» после загрузки данных о продукте из API Apigee. Проверка работоспособности Kubernetes не вернет значение «Ready» до тех пор, пока данные о продукте API не будут загружены из Apigee. Это изменение помогает в масштабировании и обновлении, поскольку трафик не будет отправляться на вновь созданный адаптер, пока он не будет готов.

Другие проблемы и способы их решения

  • Была исправлена ​​ошибка, предотвращающая потенциальную взаимоблокировку синхронизации квот ( проблема № 17 ).
  • Аннотации Prometheus были перенесены в спецификацию pod ( Выпуск № 69 ).
  • Была исправлена ​​ошибка, приводящая к некорректному выводу ошибок проверки ( Проблема № 62 ).

v1.1.0

В среду, 26 августа, мы выпустили версию 1.1.0 Apigee Adapter для Envoy.

Поддерживаемые платформы

Мы публикуем бинарные файлы для MacOS, Linux и Windows.

Мы публикуем образы Docker из дистрибутивов Google Distroless, Ubuntu и Ubuntu от Boring Crypto.

В версии 1.1.0 мы поддерживаем следующие платформы:

  • Apigee hybrid версия 1.3
  • Istio версий 1.5, 1.6, 1.7
  • Версии Envoy 1.14, 1.15

Функции и улучшения

Особенность Описание
Проверьте привязки. В интерфейс командной строки добавлена ​​новая команда apigee-remote-service-cli bindings verify . Эта команда проверяет, что указанный связанный API-продукт и связанные с ним приложения для разработчиков также имеют связанный с ними продукт удаленного сервиса. См. раздел «Проверка привязки» .
Сгенерировать образцы В интерфейс командной строки добавлена ​​новая команда apigee-remote-service-cli samples create . Эта команда создает примеры конфигурационных файлов для развертывания Envoy или Istio. Созданные с помощью этой команды конфигурационные файлы заменяют примеры файлов, которые устанавливались вместе с адаптером Envoy в предыдущих версиях. См. команду Samples .
Аутентификация OAuth2 Теперь адаптер использует аутентификацию OAuth2, если для Apigee Edge включена многофакторная аутентификация (MFA). Используйте флаг --mfa всякий раз, когда используете флаг --legacy .
Беспроводной контейнер Теперь адаптер использует образ distroless от Google ( gcr.io/distroless/base ) вместо scratch в качестве базового образа Docker по умолчанию.

Другие проблемы и способы их решения

  • Исправлена ​​ошибка в интерфейсе командной строки (CLI) для команд привязки в OPDK. (#29)
  • Квота может зависнуть при потере соединения (apigee/apigee-remote-service-envoy. (#31)
  • Теперь образы Docker создаются от имени пользователя без прав root (999).
  • В примерах Kubernetes указано, что пользователь не должен иметь права root.
  • Параметр --http1.1 больше не требуется для команд curl, работающих с прокси-серверами. Этот флаг удален из примеров.

v1.0.0

В пятницу, 31 июля, мы выпустили общедоступную версию Apigee Adapter для Envoy.

Поддерживаемые платформы

Мы публикуем бинарные файлы для MacOS, Linux и Windows.

Мы публикуем образы Docker, созданные с нуля, а также образы Ubuntu и Ubuntu от Boring Crypto.

В версии 1.0.0 мы поддерживаем следующие платформы:

  • Apigee hybrid версия 1.3
  • Istio версий 1.5, 1.6
  • Версии Envoy 1.14, 1.15

Дополнения и изменения

В период между выпуском версии 1.0-beta4 и общедоступной версией в адаптер были внесены следующие изменения:

  • Go Boring строит

    Теперь доступна новая сборка, использующая библиотеки Go BoringSSL, соответствующие стандарту FIPS .

  • Изменения флага уровня логирования

    Для обеспечения единообразия были изменены флаги уровня логирования для службы apigee-remote-service-envoy:

    Старый флаг Новый флаг
    log_level log-level
    json_log json-log
  • Новые флаги командной строки

    В команды token в командной строке добавлены новые флаги:

    Флаг Описание
    --legacy Установите этот флаг, если вы используете Apigee Edge Cloud.
    --opdk Установите этот флаг, если вы используете Apigee Edge для частного облака.