Apigee Adapter for Envoy リリースノート

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

v2.1.1

2023 年 6 月 7 日に、Apigee Adapter for Envoy のバージョン 2.1.1 をリリースしました。

修正された問題

  • 割り当てがプロダクト レベルで共有されるのではなく、オペレーション間で誤って複製される問題を修正しました。

v2.1.0

2023 年 6 月 5 日に、Apigee Adapter for Envoy のバージョン 2.1.0 をリリースしました。

修正された問題

  • application_id クレームが /verifyApiKey レスポンスに追加されました。

v2.0.7

2023 年 3 月 9 日に、Apigee Adapter for Envoy のバージョン 2.0.7 をリリースしました。

機能と改善点

  • JWT で、customattributes というクレームを追加して、x-apigee-customattributes というヘッダーでターゲットに値を渡すことができるようになりました(append_metadata_headerstrue に構成されている場合)。

修正された問題

  • API キーが無効の場合に偽のログエントリと分析レコードが作成されるという問題が修正されました。
  • 新しいバージョンの Apigee で問題の原因となっていたプロキシでは、非推奨のバージョン チェックが削除されました。

v2.0.6

2022 年 10 月 18 日に、Apigee Adapter for Envoy のバージョン 2.0.6 をリリースしました。

修正された問題

  • 依存関係ライブラリのサービス拒否攻撃(DoS)の脆弱性に対処するためのセキュリティ リリース。CVE-2022-28948 をご覧ください。

v2.0.5

2022 年 3 月 3 日に、Apigee Adapter for Envoy のバージョン 2.0.5 をリリースしました。

修正した問題

  • prometheus ライブラリのサービス拒否(DoS)リスクに対処するためのセキュリティ リリース。CVE-2022-21698 をご覧ください。

v2.0.4

2021 年 12 月 3 日に、Apigee Adapter for Envoy のバージョン 2.0.4 をリリースしました。

機能と改善点

  • CLI samples コマンドに対応している Envoy と Istio のバージョンのリストが更新されました。現在、samples に対応しているバージョンは次のとおりです。
    • Envoy バージョン 1.18~1.20
    • Istio バージョン 1.10~1.12

修正した問題

  • 混乱を避けるために、PEM ブロックの秘密鍵の読み込みに nil チェックが追加されました(問題 #360)。
  • リモート サービスの認証エラーがデバッグレベルでログに記録されるようになりました。API キーのトークン取得エラーは例外です。この場合、エラーはエラーレベルでログ記録されるため、apigee-remote-service-envoy のデバッグログ レベルが無効になっていても表示されます。リモート サービスログ レベルの設定をご覧ください(問題 #104)。

v2.0.3

2021 年 9 月 21 日に、Apigee Adapter for Envoy のバージョン 2.0.3 をリリースしました。

修正した問題

  • 直接のレスポンスに関するアナリティクス ロギングの問題を修正しました。この問題は、特定の状況下でのみ発生します。次に例を示します。
    • authn/z チェックが不要のリクエストでは、authContext は生成されず、動的メタデータは nil になり、アクセス ログエントリは無視されます。
    • 拒否されたレスポンスは HTTP コードではなく RPC コードを使用しているため、レコードが Apigee UI に成功として表示されます。

v2.0.2

2021 年 6 月 7 日に、Apigee Adapter for Envoy のバージョン 2.0.2 をリリースしました。

修正した問題

  • JWT クレーム スコープが nil のときに 403 エラーが発生して混乱を招く可能性のある競合状態を修正しました。

v2.0.0

2021 年 4 月 6 日(火曜日)に、Apigee Adapter for Envoy のバージョン 2.0.0 をリリースしました。

機能と改善点

機能 説明
マルチテナント環境のサポート

アダプターを有効にして、Apigee 組織内の複数の環境にサービスを提供できるようになりました。この機能を使用すると、1 つの Apigee 組織に関連付けられた 1 つの Apigee Adapter for Envoy を使用して複数の環境にサービスを提供できます。以前は、1 つのアダプターが常に 1 つの Apigee 環境に関連付けられていました。この機能の詳細については、マルチテナント環境のサポートをご覧ください。

Envoy v3 API のサポート
Envoy メタデータのサポート

Envoy 1.16 移行では、ヘッダーを使用せずに ext_authz メタデータを送信できます。この変更や関連する変更を加えたことで、拒否されたリクエストに対してより適切な HTTP レスポンスコードが提供されるようになり、Envoy に RBAC フィルタをインストールする必要がなくなりました。ご覧ください。

この機能は、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

特殊なケースのリクエストにヘッダーを追加するには、アダプターの config.yaml ファイルでプロパティ append_metadata_headers:true を設定します。

remote-token プロキシを remote-service プロキシから分割

remote-service プロキシが 2 つの別個のプロキシにリファクタリングされました。v2.0.x のプロビジョニングでは、remote-serviceremote-token の 2 つの API プロキシがインストールされます。/token エンドポイントと /certs エンドポイントが remote-service プロキシから remote-token に移動されました。

この変更により、機能が分離されて使いやすくなりました。現在、remote-service プロキシはアダプターの内部通信にのみ使用されますが、remote-token プロキシはカスタマイズ可能なサンプル OAuth ワークフローを提供します。provision --force-proxy-install コマンドが使用されていても、カスタムの remote-token プロキシは上書きされません。

データ キャプチャのサポート

Apigee X と Apigee ハイブリッドでのみ使用できます。

Adapter が Envoy メタデータを Apigee のデータ キャプチャ機能に渡すことができるようになりました。これにより、指定した変数でキャプチャされたデータが Apigee Analytics に送信され、カスタム レポートで使用できます。

RBAC は不要

前述の Envoy メタデータのサポートで説明されているとおり、別個の RBAC フィルタを必要とせずに未承認のリクエストをすぐに拒否できるようになりました。RBAC が使用されないため、クライアントはアダプターから必要に応じて次の HTTP ステータス コードを受け取ります。

  • 401 Unauthorized(未承認)
  • 403 Forbidden(アクセス拒否)
  • 429 Too Many Requests(リクエスト数が多すぎる)
  • 500 Internal Server Error(内部サーバーエラー)

未承認のリクエストを続行するには、アダプターの config.yaml ファイルで auth:allow_unauthorized:true を設定します。

x-apigee-* ヘッダーはデフォルトで追加されなくなった

前述の Envoy メタデータのサポート セクションで説明したように、x-apigee-* ヘッダーがデフォルトで追加されなくなりました。追加するには、config.yaml ファイルで append_metadata_headers:true を設定します。この構成は完全に任意で、ヘッダーをアップストリーム ターゲット サービスに転送する場合にのみ使用する必要があります。

リクエストをリモート サービス ターゲットとカスタム照合する

api_header 構成プロパティのセマンティクスは、以前の target_header プロパティと同じです(デフォルトはターゲット ホスト名です)。指定されたヘッダーの内容は、API プロダクト オペレーションの API Product Remote service target 属性または apiSource フィールドと一致します(Apigee ハイブリッドと Apigee X のみ)。

Envoy メタデータを使用してこのヘッダー値をオーバーライドするには、Envoy から apigee_api メタデータ要素をアダプタに渡して、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 Adapter では、拒否されたリクエストがアクセスログに返されるのを待たずに、必要に応じてすぐにそのリクエストを分析のために記録するようになりました。この方法は効率的で、リクエストにメタデータを追加する必要がありません。

UDCA のサポート終了

Apigee ハイブリッドと Apigee X での Apigee の Universal Data Collection Agent(UDCA)へのストリーミングは、直接アップロードに置き換えられたため、アナリティクスには必要なくなりました。この変更により、このオプションの以前のサポートが削除されるだけです。

プロビジョニング / バインディング CLI コマンドで Edge for Private Cloud に mTLS サポートを追加

Apigee Edge for Private Cloud のユーザーは、CLI を使用してプロダクト バインディングをプロビジョニングまたは一覧表示する際に、クライアント側の TLS 証明書とルート証明書をそれぞれ ‑‑tls‑cert‑‑tls‑key‑‑tls‑ca で指定できます。

アダプターと Apigee ランタイム間の mTLS サポート

アダプターと Apigee ランタイムの間で mTLS を使用するために、アダプターの config.yaml ファイルの tenant セクションでクライアント側 TLS 証明書を指定できます。この変更は、サポートされているすべての Apigee プラットフォームに適用されます。また、それにより、Apigee Edge for Private Cloud プラットフォームの分析用の mTLS も有効化されます。詳細については、アダプターと Apigee ランタイム間の mTLS の構成をご覧ください。

修正した問題

  • 同じ API ソースを持つ複数のオペレーション構成が同じ割り当てバケット ID を共有して、割り当ての計算で競合が発生する問題を修正しました(問題 #34)。
  • 動詞が指定されていないオペレーションによりリクエストが拒否される問題を修正しました(動詞が指定されていない場合はすべての動詞を許可する動作が想定されています)(問題 #39)。

v1.4.0

2020 年 12 月 16 日(水)に、Apigee Adapter for Envoy のバージョン 1.4.0 をリリースしました。

対応プラットフォーム

Google は、MacOS、Linux、Windows のバイナリを公開しています。

Google は、Boring Crypto を使用して、Google の distroless、Ubuntu、Ubuntu の Docker イメージを公開しています。

このバージョンは、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3.x、1.4.x(リリース日は保留中)、Apigee Edge for Public Cloud、Apigee Edge for Private Cloud、Apigee on Google Cloud
  • Istio バージョン 1.5、1.6、1.7、1.8
  • Envoy バージョン 1.14、1.15、1.16

機能と改善点

機能 説明
remote-service プロキシでは、リモート サービス ターゲットを使用する API プロダクトとの関連付けが不要になりました。

この関連付けが不要になったため、次の変更点に注意してください。

  • プロビジョニング時に、remote-service API プロダクトが作成されなくなりました。
  • bindings verify CLI コマンドは関連性がなくなり、非推奨となりました。
Apigee 組織管理者ロールがプロビジョニングに不要になりました。

プロビジョニングに組織管理者権限を使用するのではなく、IAM ロールの API 作成者とデプロイ担当者を使用できるようになりました。正常にプロビジョニングするには、両方のロールを付与する必要があります
(Apigee on Google Cloud と Apigee ハイブリッドにのみ適用)。

その他の問題と修正

  • --rotate オプションを指定せずに Apigee を再プロビジョニングするとエラーで終了する問題を修正しました。
  • プロビジョニング CLI で、特定の config.yaml ファイルから分析サービス アカウントの認証情報を読み取って再利用できるようになりました(問題 #133)。

v1.3.0

11 月 23 日(月曜日)、Apigee Adapter for Envoy バージョン 1.3.0 をリリースしました。

対応プラットフォーム

Google は、MacOS、Linux、Windows のバイナリを公開しています。

Google は、Boring Crypto を使用して、Google の distroless、Ubuntu、Ubuntu の Docker イメージを公開しています。

このバージョンは、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3.x、1.4.x(リリース日は保留中)、Apigee Edge for Public Cloud、Apigee Edge for Private Cloud、Apigee on Google Cloud
  • Istio バージョン 1.5、1.6、1.7、1.8
  • Envoy バージョン 1.14、1.15、1.16

機能と改善点

機能 説明
API プロダクト OperationGroups のサポート OperationGroups は、HTTP メソッドを使用して、リソースと関連する割り当ての適用をプロキシまたはリモート サービスでバインドします。
(Google Cloud 上の Apigee と Apigee ハイブリッドにのみ該当)
サンプル生成から動的転送プロキシのサポートを削除 この変更により、ホスト名が API プロダクトに設定されているリモート サービス ターゲット ホストと異なる場合、クライアントは HOST ヘッダーを含める必要があります。次に例を示します。
curl -i http://localhost:8080/httpbin/headers -H "HOST:httpbin.org"

API プロダクトを作成するをご覧ください。

サービス アカウントと Workload Identity のサポート Apigee ハイブリッド クラスタの外部でアダプターを実行するときに分析データを Apigee にアップロードできるようにするには、apigee-remote-service-cli provision コマンドで analytics-sa パラメータを使用する必要があります。また、アダプターが Google Kubernetes Engine(GKE)の Workload Identity もサポートするようになりました。プロビジョニング コマンドをご覧ください。
(Apigee on Google Cloud と Apigee ハイブリッドにのみ適用)
新しい jwt_provider_key 構成属性 このキーは構成ファイルに追加されます。Envoy 構成では JWT プロバイダの payload_in_metadata キー、Istio 構成では RequestAuthentication JWT の発行元を表します。
KeepAliveMaxConnectionAge 構成属性のデフォルトが 1 分になった 以前のデフォルトは 10 分でした。この変更により、よりスムーズなスケーリングが可能になります。この値は、アクセスログ ストリームの存続期間にも使用されます。構成ファイルをご覧ください。
CLI コマンドを削除 次の CLI コマンドは非推奨になりました。代わりに Edge API を使用して、API プロダクトのリモート サービス ターゲットを更新することをおすすめします。
  • apigee-remote-service-cli bindings add
  • apigee-remote-service-cli bindings remove
新しい CLI コマンドの追加 コマンド:
apigee-remote-service-cli samples templates

samples create コマンドで --template フラグを指定して使用できるオプションを示します。CLI リファレンスをご覧ください。

既存の 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

9 月 30 日(水曜日)、Apigee Adapter for Envoy バージョン 1.2.0 をリリースしました。

対応プラットフォーム

Google は、MacOS、Linux、Windows のバイナリを公開しています。

Google は、Boring Crypto を使用して、Google の distroless、Ubuntu、Ubuntu の Docker イメージを公開しています。

このバージョンでは、次のプラットフォームをサポートしています。

  • Apigee ハイブリッド バージョン 1.3.x
  • Istio バージョン 1.5、1.6、1.7
  • Envoy バージョン 1.14、1.15

機能と改善点

機能 説明
Apigee on Google Cloud のサポート Apigee on Google Cloud で Apigee Adapter for Envoy を使用できるようになりました。独自のクラスタでアダプターを実行することも、ネイティブ バイナリとしてまたはコンテナ内で Remote Service for Envoy を実行することでアダプターを実行することもできます。プロビジョニング コマンドを使用して、Apigee にアダプターをプロビジョニングします。
分析データの直接アップロード Apigee に分析データを直接アップロードするように Apigee Adapter を構成できるようになりました。Apigee ハイブリッドを使用している場合、この新機能によって、Apigee ハイブリッドがインストールされているクラスタの外部で Kubernetes クラスタにアダプターをデプロイできます。直接アップロードを有効にするには、provision コマンドで新しい --analytics-sa フラグを使用します。プロビジョニング コマンドをご覧ください。
API プロダクト データが Apigee から読み込まれた後に、ヘルスチェックから「Ready」が返される API プロダクト データが Apigee から読み込まれるまで、Kubernetes ヘルスチェックから「Ready」は返されません。この変更により、準備ができるまでは新しくインスタンス化されたアダプターにトラフィックが送信されないため、スケーリングとアップグレードに役立ちます。

その他の問題と修正

  • 潜在的な割り当て同期のデッドロックに対応する問題が修正されました(問題 #17)。
  • Prometheus のアノテーションが Pod の仕様に移動されました(問題 #69)。
  • 不適切に表示される確認エラーに対応する問題が修正されました(問題 #62)。

v1.1.0

8 月 26 日(水曜日)、Apigee Adapter for Envoy バージョン 1.1.0 をリリースしました。

対応プラットフォーム

Google は、MacOS、Linux、Windows のバイナリを公開しています。

Google は、Boring Crypto を使用して、Google の distroless、Ubuntu、Ubuntu の Docker イメージを公開しています。

バージョン 1.1.0 では、次のプラットフォームがサポートされています。

  • Apigee ハイブリッド バージョン 1.3
  • Istio バージョン 1.5、1.6、1.7
  • Envoy バージョン 1.14、1.15

機能と改善点

機能 説明
バインディングの確認 新しいコマンドの apigee-remote-service-cli bindings verify が CLI に追加されました。このコマンドは、バインドされている特定の API プロダクトとそれに関連付けられたデベロッパー アプリにも、リモート サービス プロダクトが関連付けられていることを確認します。バインディングを確認するをご覧ください。
サンプルの生成 新しいコマンドの apigee-remote-service-cli samples create が CLI に追加されました。このコマンドを使用すると、ネイティブの Envoy または Istio のデプロイ用にサンプル構成ファイルが作成されます。このコマンドで生成した構成ファイルは、以前のバージョンの Adapter for Envoy にインストールされたサンプル ファイルと置き換えられます。サンプル コマンドをご覧ください。
OAuth2 認証 アダプタが、Apigee Edge で多要素認証(MFA)が有効になっている場合に OAuth2 認証を使用するようになりました。--legacy フラグを使用する場合は、必ず --mfa フラグを使用してください。
Distroless コンテナ アダプターは、デフォルトの Docker イメージベースとして scratch の代わりに Google の Distroless(gcr.io/distroless/base)イメージを使用するようになりました。

その他の問題と修正

  • OPDK のバインディング コマンドに対する CLI の問題が修正されました(#29)
  • 接続が失われると、割り当てが停止することがあります(apigee / apigee-remote-service-envoy)(#31)
  • Docker イメージが、root 以外のユーザー(999)でビルドされるようになりました。
  • Kubernetes のサンプルでは、root 以外のユーザーにする必要があります。
  • プロキシ エンドポイントに対する curl コマンドで、--http1.1 が不要になりました。このフラグは、例から削除されています。

v1.0.0

7 月 31 日(金曜日)、Apigee Adapter for Envoy の一般提供版をリリースしました。

対応プラットフォーム

Google は、MacOS、Linux、Windows のバイナリを公開しています。

Google は、Docker イメージをゼロから、Ubuntu、Ubuntu に Boring Crypto を使用して公開しています。

バージョン 1.0.0 では、次のプラットフォームがサポートされています。

  • Apigee ハイブリッド バージョン 1.3
  • Istio バージョン 1.5、1.6
  • Envoy バージョン 1.14、1.15

追加と変更

v1.0-beta4 リリースと一般提供の間に、アダプターに次の変更が加えられました。

  • Go Boring のビルド

    FIPS 準拠の Go BoringSSL ライブラリを使用する新しいビルドを利用できるようになりました。

  • ログレベルのフラグの変更

    apigee-remote-service-envoy サービスのロギングレベルのフラグが、整合性を保つために変更されました。

    旧フラグ 新フラグ
    log_level log-level
    json_log json-log
  • 新しい CLI フラグ

    CLI の token コマンドに新しいフラグが追加されました。

    フラグ 説明
    --legacy Apigee Edge Cloud を使用している場合は、このフラグを設定します。
    --opdk Apigee Edge for Private Cloud を使用している場合は、このフラグを設定します。