外部処理ポリシー

ポリシー名

外部処理

Summary (概要)

追加処理を行うために、受信 HTTP 要求または送信 HTTP 応答要求を外部 gRPC サービスに送信します

カテゴリ

変換

使用可能な最小 Flex Gateway バージョン

v1.6.0

返される状況コード

403 - IP は拒否されました

概要

外部処理ポリシーでは、ヘッダー、トレーラー、本文、またはこの 3 つのいずれかの組み合わせを変更するために、受信 HTTP 要求または送信 HTTP 応答を外部 gRPC サービスに転送します。要求、応答、またはその両方を処理するようにこのポリシーを設定することもできます。

さらに、外部処理サービスでは最初の gRPC 要求が Flex Gateway によって外部処理サーバーに送信された後に HTTP 要求または応答の別の部分を要求できます。これにより、必要最小限の量のデータを送信できます。たとえば、Flex Gateway では最初に HTTP 要求のヘッダーのみを送信できます。その後、何らかの処理を行った後で、外部プロセッサーが Flex Gateway からの HTTP 要求の本文またはトレーラーを要求できます。

HTTP ヘッダー、トレーラー、本文について設定するパラメーターでは、最初に送信される内容のみが設定されます。外部処理サービスは、設定ないように関係なく、HTTP 要求または応答のすべての部分にアクセスできます。処理サービスがすべての受信 HTTP 要求または応答に必要なすべての情報を送信するようにパラメーターを設定します。たとえば、処理サービスにすべての要求のヘッダーが必要だが一部の要求の本文しか必要ない場合は、ヘッダーで確認できる情報に応じて、ヘッダーを送信するパラメーターのみを設定します。

外部処理ポリシーは、Envoy に対してネイティブな外部処理検索条件の拡張機能です。外部処理検索条件に付いての詳細は、 「External Processing Filter (外部処理検索条件)」​を参照してください。すべての外部処理検索条件パラメーターが外部処理ポリシーで使用できるとは限りません。設定可能なパラメーターを確認するには、​「ポリシーのパラメーターの設定」​を参照してください。

他のポリシーで HTTP 要求または応答が変更される場合は、要求が処理サービスまたはアップストリームサービスに送信されるときにこれらの変更が存在している必要があるかどうかに応じて確実にポリシーを並び替えてください。ポリシーの並び替えについての詳細は、ポリシーの順序付けを参照してください。

ポリシーのパラメーターの設定

Flex Gateway のローカルモード

ローカルモードでは、宣言型設定ファイルを使用して外部処理ポリシーを API インスタンスに適用します。以下のポリシー定義とパラメーターの表を参照してください。

- policyRef:
    name: native-external-proc
  config:
    uri: <string> // REQUIRED
    messageTimeout: <integer> // OPTIONAL
    requestHeaderMode: <string> // REQUIRED, default: "send"
    responseHeaderMode: <string> // REQUIRED, default: "send"
    requestBodyMode: <string> // REQUIRED, default: "none"
    responseBodyMode: <string> // REQUIRED, default: "none"
    requestTrailerMode: <string> // OPTIONAL, default: "send"
    responseTrailerMode: <string> // OPTIONAL, default: "send"
パラメーター 必須または省略可能 デフォルト値 説明

uri

必須

なし

外部処理サーバー URI。gRPC 種別のサーバーでは、​\h2://<ext.authz.com>:<port>​ として URI を定義します。

messageTimeout

必須

1000

処理サーバーのメッセージタイムアウト (ミリ秒)。

requestHeaderMode

必須

send

HTTP 要求のヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​send​ と ​skip​ です。

responseHeaderMode

必須

send

HTTP 応答のヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​send​ と ​skip​ です。

requestBodyMode

必須

none

HTTP 要求の本文が送信されるモード。 サポートされている値は ​none​、​streamed​、​buffered​、​bufferedPartial​ です。​none​ を選択すると、要求の本文が送信されません。

responseBodyMode

必須

none

HTTP 応答の本文が送信されるモード。 サポートされている値は ​none​、​streamed​、​buffered​、​bufferedPartial​ です。​none​ を選択すると、要求の本文が送信されません。

requestTrailerMode

必須

send

HTTP 要求のトレーラーヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​send​ と ​skip​ です。

responseTrailerMode

必須

send

HTTP 応答のトレーラーヘッダーが処理サービスに送信されるかどうか。サポートされている値は ​send​ と ​skip​ です。

必須の値を空白のままにすると、パラメーターがデフォルト値を使用して設定されます。省略可能な値を空白のままにした場合は、値が設定されません。

リソースの設定例

次の設定では、要求のヘッダー、トレーラー、本文が外部処理サーバーに送信されます。次の設定では、応答はどの部分も外部処理サーバーに送信されません。

- policyRef:
    name: native-external-proc-flex
  config:
    uri: h2://<ext.authz.com>:<port>
    messageTimeout: <integer> // OPTIONAL
    responseHeaderMode: skip
    requestBodyMode: streamed
    responseTrailerMode: skip

Flex Gateway の接続モード

UI から外部処理ポリシーを API に適用する場合は、以下のパラメーターを設定します。

パラメーター 説明

External processing server URI (外部処理サーバー URI)

外部処理サーバー URI。gRPC 種別のサーバーでは、​\h2://<ext.authz.com>:<port>​ として URI を定義します。

Message timeout (メッセージタイムアウト)

処理サーバーのメッセージタイムアウト (ミリ秒)。

Request header processing mode (要求のヘッダーの処理モード)

要求のヘッダーが処理サービスに送信されるかどうか。

Response header processing mode (応答のヘッダーの処理モード)

応答のヘッダーが処理サービスに送信されるかどうか。

Request body processing mode (要求の本文の処理モード)

要求の本文が送信されるモード。

Response body processing mode (応答の本文の処理モード)

応答の本文が送信されるモード。

Request trailer processing mode (要求のトレーラーの処理モード)

要求のトレーラーが処理サービスに送信されるかどうか。

Response trailer processing mode (応答のトレーラーの処理モード)

応答のトレーラーが処理サービスに送信されるかどうか。

ポリシーのしくみ

次の図は、外部処理ポリシーを適用した場合の要求と応答のフローの順序を示しています。

80%

  1. クライアントが Flex Gateway に対する HTTP 要求を行います。

  2. Flex Gateway が設定済みのクライアント HTTP 要求の最初の部分を外部処理サービスに転送します。この時点で、外部処理サービスは要求の追加の部分を要求できます。

  3. Flex Gateway が変更された HTTP 要求を受信すると、Flex Gateway は HTTP 要求をアップストリーム API サービスに送信します。

  4. Flex Gateway がアップストリーム API サービスから HTTP 応答を受信し、設定済みの HTTP 応答の最初の部分を外部処理サービスに転送します。この時点で、外部処理サービスは HTTP 応答の追加の部分を要求できます。

  5. Flex Gateway が外部処理サービスからクライアントに変更済みの HTTP 応答を返します。

デフォルトでは、Flex Gateway が gRPC サービスへの接続を確立できない場合、または gRPC サービスでエラーが返される場合は、ポリシーが失敗します。

Envoy ポリシーの制限事項

Envoy に対してネイティブな検索条件を拡張するポリシーを接続モードで実行する場合は、監視に関するいくつかの制限事項があります。

ポリシー違反メトリクス

Envoy 検索条件ポリシーでは、API インスタンスの [Key Metrics (重要なメトリクス)] または Anypoint Monitoring の ​[Policy Violations (ポリシー違反)]​ メトリクスはサポートされません。ただし、Envoy 検索条件ポリシーで ​[Response Code (応答コード)]​ メトリクスはサポートされます。

Envoy 検索条件ポリシーを適用しても、API インスタンスに適用されている他のポリシーの ​[Policy Violations (ポリシー違反)]​ メトリクスには影響しません。Flex Gateway では Envoy 以外の検索条件ポリシーの ​[Policy Violations (ポリシー違反)]​ メトリクスは通常どおりに報告されますが、これらのメトリクスには Envoy 検索条件ポリシー違反が含まれないため、不完全です。

Flex Gateway メトリクスについての詳細は、Flex Gateway API の重要なメトリクスの表示を参照してください。

API アラート

Envoy 検索条件ポリシーでは、ポリシー違反 API アラートはサポートされません。API アラートを使用して Envoy 検索条件ポリシーを監視するには、応答コードを監視するアラートを追加してポリシーの応答エラーコードを指定してください。

アラートの追加についての詳細は、Flex Gateway API アラートの使用を参照してください。