Apigee Adapter for Envoy リリースノート

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご覧ください。

バージョン 2.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 レスポンスに追加されました。

バージョン 2.0.7

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

機能と改善

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

修正された問題

  • 無効な API キーが原因で誤ったログエントリやアナリティクス レコードが作成される問題を修正しました。
  • サポートが終了したバージョンのチェックが、新しいバージョンの Apigee で問題の原因となったプロキシで削除されました。

バージョン 2.0.6

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

修正された問題

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

バージョン 2.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 のバージョンのリストが更新されました。サンプルで以下のバージョンがサポートされるようになりました。
    • Envoy バージョン 1.18~1.20
    • Istio バージョン 1.10~1.12

修正した問題

  • パニックを避けるため、PEM ブロックの秘密鍵の読み込みに nil-check を追加しました。(問題 #360)
  • リモート サービス認証エラーがデバッグレベルで記録されるようになりました。API キーのトークン取得エラーには、この分類の例外があります。その場合、エラーは Error レベルで記録されるため、apigee-remote-service-envoy の Debug ログレベルが無効になっていても表示されます。リモート サービス ログのレベルの設定をご覧ください。(問題 #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 ハイブリッドでのみ使用できます。

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

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_header Remote Service target 属性または apiSource フィールド(Apigee ハイブリッドと Apigee X のみ)と一致します。

Envoy メタデータを使用してこのヘッダー値をオーバーライドするには、Envoy から apigee_api メタデータ要素をアダプタに渡して、API プロダクトの Remote Service Target または API Product Operation の 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 をリリースしました。

対応プラットフォーム

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

Google の distroless、Ubuntu、Boring Crypto を使用した 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 作成者とデプロイ担当者を使用できるようになりました。正常にプロビジョニングするには、両方のロールを付与する必要があります。
(Google Cloud の Apigee と Apigee ハイブリッドにのみ適用)

その他の問題と修正

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

v1.3.0

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

対応プラットフォーム

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

Google の distroless、Ubuntu、Boring Crypto を使用した 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 のサポート。 OperationGroup は、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 もサポートするようになりました。プロビジョニング コマンドをご覧ください。
(Google Cloud の Apigee と 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 をリリースしました。

対応プラットフォーム

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

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

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

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

機能と改善点

機能 説明
Apigee on Google Cloud のサポート Google Cloud の Apigee で Apigee Adapter for Envoy を使用できるようになりました。アダプタを独自のクラスタで実行することも、ネイティブ バイナリとしてまたはコンテナ内で Remote Service for Envoy を実行することでアダプタを実行することもできます。プロビジョニング コマンドを使用して、Apigee にアダプタをプロビジョニングします。
分析データの直接アップロード Apigee に分析データを直接アップロードするように Apigee アダプタを構成できるようになりました。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 をリリースしました。

対応プラットフォーム

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

Google の distroless、Ubuntu、Boring Crypto を使用した 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 のデプロイのサンプル構成ファイルを作成します。このコマンドで生成した構成ファイルは、以前のバージョンの 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 の一般提供版をリリースしました。

対応プラットフォーム

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

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

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

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

追加および変更

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

  • 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 を使用している場合は、このフラグを設定します。