クライアント IP の解決

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

API リクエストでクライアント IP アドレスを正確に特定することは、Apigee 内の一部の機能(アナリティクスや、不正使用の検出やセキュリティ アクションなどの Advanced API Security 機能など)にとって重要です。

プロキシとロードバランサを使用する最新のネットワーク アーキテクチャでは、これらの中間プロキシによって実際の送信元 IP アドレスが不明になる可能性があるため、クライアント IP の識別プロセスは困難です。

この課題を克服するために、Apigee は環境レベルの設定で X-Forwarded-For(XFF)ヘッダーからクライアント IP アドレスを解決する方法を指定し、ネットワーク トポロジとセキュリティ要件の IP アドレスに一致するヘッダー内のインデックスを特定します。この設定を使用すると、環境内のすべてのリクエストでクライアント IP アドレスがどのように決定されるかを可視化し、一貫性を確保して制御できます。これにより、環境内の Advanced API Security、フロー変数、分析変数でクライアント IP アドレスが常に一貫して識別されます。

このページで説明するように環境レベルのクライアント IP 解決が構成されていない場合、クライアント IP アドレス変数には、デフォルトのクライアント IP アドレス解決動作を使用して値が設定されます。

デフォルトのクライアント IP アドレス解決

クライアント IP 解決が環境レベルで構成されていない場合、ax_resolved_client_ip ディメンションのデフォルト値は、アナリティクスのディメンションの説明に従って計算されます。

環境でクライアント IP 解決が構成されている場合、フロー変数とアナリティクス変数はクライアント IP 解決構成から設定されます。環境のクライアント IP 解決を設定するをご覧ください。

環境のクライアント IP 解決を設定するタイミング

クライアント IP 解決を設定する必要はありませんが、デフォルトのクライアント IP アドレス解決がニーズを満たさず、アナリティクス、Advanced API Security、またはクライアント IP アドレスに関する一貫した信頼できる情報を必要とする他の機能を実行するために、指定されたクライアント IP アドレス解決を提供するためにオーバーライドする場合は、設定することをおすすめします。

クライアント IP 解決構成の構文を理解する

クライアント IP の解決設定の形式は次のとおりです。

"clientIpResolutionConfig": {
  "headerIndexAlgorithm": {
     "ipHeaderName" : "X-Forwarded-For",
     "ipHeaderIndex": 2
  }
}
ここで
  • ipHeaderName は、クライアント IP に使用するヘッダーです。現時点では、X-Forwarded-For がサポートされているヘッダー値です。
  • ipHeaderIndexipHeaderName 内のインデックス値です。

    正の整数は、左から始まるアドレス(ヘッダーに追加された最初のアドレス)を選択します。左の最初の位置は 0 で、その後のアドレスごとに 1 ずつ増加します(例: 0, 1, 2)。たとえば、リストが 192.0.2.1, 192.0.2.2, 192.0.2.3 の場合、インデックス 1192.0.2.2 に解決されます。

    負の値は、右側から(ヘッダーに最後に追加されたアドレスから)アドレスを選択します。右側の最初の位置は -1 で、その後のアドレスは 1 ずつ減少します(例: -3, -2, -1)。たとえば、リストが 192.0.2.1, 192.0.2.2, 192.0.2.3, 192.0.2.4 の場合、インデックス -1192.0.2.4 に解決され、インデックス -2192.0.2.3 に解決されます。

この設定の詳細については、organizations.environment API をご覧ください。

クライアント IP 解決構成を表示する

環境の現在のクライアント IP 解決構成は、Apigee UI または Management API を使用して表示できます。

UI を使用してクライアント IP 解決構成を表示する

Cloud コンソールの Apigee UI を使用してクライアント IP 解決設定を表示するには、[管理] > [環境] を選択し、環境を選択して、[概要] タブの [クライアント IP 構成] を確認します。

Apigee UI でのクライアント IP の解決

API を使用してクライアント IP 解決構成を表示する

Apigee Management API を使用してクライアント IP 解決構成を表示するには、organizations.environments.get API にリクエストを送信します。

環境のクライアント IP 解決を設定する

環境のクライアント IP 解決構成を設定すると、指定されたアルゴリズムを使用して client.resolved.ip フロー変数が入力されます。Resolved Client IP アナリティクス ディメンションも同様です。

環境のクライアント IP 解決構成を設定すると、変更によってセキュリティ アクション ルールの既存の Advanced API Security 構成に影響する可能性があります。既存のルールを確認し、必要に応じて再生成して、新しい変数と設定を使用します。

クライアント IP 解決のインデックスを選択する際は、次の点を考慮してください。

  • Apigee 間の呼び出しは特殊なケースとして処理されません。必要に応じて IP の数をメモしてスキップしてください。
  • X-Forwarded-For ヘッダーはなりすましされる可能性があるため、クライアントと Apigee ロードバランサ間の予想ホップ数に基づいて適切なインデックスを使用することをおすすめします。悪意のあるユーザーは、事前に入力された X-Forwarded-For ヘッダーを送信できます。XFF の最初の IP は実際のクライアント IP に最も近いですが、ロードバランサは接続されている TCP クライアントを認識しているため、XFF の最後の IP が最も信頼できます。

環境でクライアント IP 解決を設定するには、Apigee API Management API のいずれかを使用して、client_ip_resolution_config で環境のクライアント IP 解決を設定します。新しい環境には organizations.environments.create を使用します。既存の環境の場合は、updateEnvironment または modifyEnvironment を使用します。

クライアント IP アドレスの解決をテストする

新しいクライアント IP 構成を保存したら、次の手順に沿ってテストできます。

  1. 新しい構成設定を保存してから 5 分以上待ちます。
  2. デバッグ セッションを開始します。[Show all FlowInfos] の設定を有効にします。
  3. [Proxy Request Flow Started] の直前に [FlowInfo] を確認します。そのセクションに、構成されたクライアント IP アドレスがキャプチャされているはずです。

FlowInfo で次の変数を探します。

  • client_ip_resolution.resolved.ip: 解決されたクライアント IP アドレス。
  • client_ip_resolution.used.fallback: ブール値。構成されたクライアント IP 解決を使用できないために Apigee がデフォルトのクライアント IP 解決にフォールバックしない限り、この値は false です。たとえば、構成された解像度で、ヘッダーに存在しないインデックスが指定されている場合です。
  • client_ip_resolution.algorithm: クライアント IP アドレスの特定に使用されるアルゴリズム。構成されている場合は "HeaderIndexAlgorithm{IpHeaderName:header_name, IpHeaderIndex: $header_index}" です。それ以外の場合は、default が表示されます。

制限事項

環境レベルのクライアント IP 解決には、次の制限が適用されます。

  • クライアント IP 解決構成の更新が有効になるまでに、最大で 5 分かかることがあります。
  • クライアント IP 解決構成を頻繁に変更(5 分ごとなど)しないでください。パフォーマンスが低下する可能性があります。
  • 現在、Apigee ハイブリッドでは、環境のクライアント IP 解決構成を設定できません。
  • この構成は Apigee コンソールまたは API で確認できますが、設定できるのは API 経由のみです。
  • 悪意のあるユーザーがいない場合でも、X-Forwarded-For リストは、各プロキシが正しい情報をリストに追加することを前提としています。この完全なリストは Apigee の管理と制御の範囲外であるため、クライアント IP 解決構成を設定しても、正しいリクエスト IP アドレスが特定されるとは限りません。