エンドユーザーのパブリックIPアドレスの適切な報告 (NGINXベースのIngressコントローラ)¶
本手順書では、ロードバランサーの背後にコントローラが配置されている場合に、クライアント(エンドユーザー)の起点IPアドレスを特定するために必要なWallarm Ingressコントローラの設定方法について説明します。
デフォルトでは、Ingressコントローラはインターネットに直接公開されており、接続してくるクライアントのIPアドレスが実際のIPであると仮定します。しかし、リクエストはIngressコントローラに送信される前に、ロードバランサー(例:AWS ELBやGoogle Network Load Balancer)を通過する場合があります。
ロードバランサーの背後にコントローラが配置される場合、IngressコントローラはロードバランサーのIPを実際のエンドユーザーIPとみなしてしまい、一部のWallarm機能が正しく動作しない可能性があります。エンドユーザーの正しいIPアドレスをIngressコントローラへ報告するため、以下の設定を実施してください。
ステップ1: ネットワーク層で実際のクライアントIPの受け渡しを有効化¶
本機能は使用しているクラウドプラットフォームに大きく依存しますが、ほとんどの場合、values.yaml
ファイルの属性controller.service.externalTrafficPolicy
に値Local
を設定することで有効化できます。
ステップ2: X-FORWARDED-FOR HTTPリクエストヘッダーから値を取得するようIngressコントローラを有効化¶
通常、ロードバランサーは元のクライアントIPアドレスを含むHTTPヘッダーX-Forwarded-For
を追加します。正確なヘッダー名はロードバランサーのドキュメントで確認してください。
Wallarm Ingressコントローラは、以下のようにvalues.yaml
を設定することで、このヘッダーから実際のエンドユーザーIPアドレスを取得できます。
-
[
forwarded-for-header
パラメータ]内には、元のクライアントIPアドレスを含むロードバランサーのヘッダー名を指定してください
Other recommendations
Wallarm’s version of the Kubernetes Ingress controller is based on the community-supported NGINX Ingress controller for Kubernetes, so the majority of recommendations found in the official Ingress controller documentation and on the public Internet are also applicable to Wallarm’s Ingress controller.
Recommended reading: