[アップデート]AWS Global Accelerator は、Network Load Balancer のエンドポイントでクライアント IP アドレスの保持ができるようになりました
はじめに
AWS Global Acceleratorは、Network Load Balancer(NLB)に向けてクライアントのIPアドレスを保持できるようになりました。
このアップデートによって、例えば以下のことが実現できるようになります。
- セキュリティとコンプライアンスの強化
- 問題が発生した場合にユーザーの識別とその行動の追跡が可能となり、セキュリティ上の脅威や不正アクセスの調査に役立ちます。
- IPアドレスまたは位置情報に基づくフィルタリング
- 特定のIPアドレスや地域に対するフィルタリングを設計し、適用できます。
- 例:特定地域で広告キャンペーンを行ッタ結果、対象の地域からのトラフィックが増えた場合、キャンペーンが効果的であると分かります。
- 特定のIPアドレスや地域に対するフィルタリングを設計し、適用できます。
- 特定の地域に対するカスタムコンテンツを提供できる
- パーソナライズされたコンテンツを提供することが可能になります。これにより、ユーザー体験を向上させ、エンゲージメントを増加させることが期待できます。
注意点として、以下のいずれかに当てはまる場合、クライアントIPアドレスを保持
は有効にできません、
- NLBのリスナーにTLS リスナーが接続されている
- IPアドレスタイプがDualstackのNLB
- セキュリティグループが無効のNLB
先日のアップデートで、NLBのセキュリティグループは、設定できるようになりました。
ちなみに、クライアントIPアドレスの保持に追加費用はかかりません。
構成
今回、Global AcceleratorでNLBへのクライアントIPアドレスを保持
を有効にすることで、NginxへのアクセスログにクライアントIPが出力されるか検証します。
検証は、以下の構成で行います。
Global Acceleratorは、作成手順を本記事内で説明いたします。
全てTCPポート80で通信させ、EC2インスタンスにはNginxをインストールさせています。
NLBのDNS名でNginxのページが表示できている状態です。
Global Acceleratorを作成
アクセラレータ名を記載し、タイプは標準
を選択し、次に進みます。
リスナーは、TCPのポート80を選択します
エンドポイントグループは、東京リージョンを選択します。
エンドポイントは、NLBを選択します。
今回のアップデート内容であるクライアントIPアドレスを保持
を選択します。
作成するまで十分程度かかります。
ステータスがデプロイ済み
になれば完了です。
クライアントIPの保持が有効の場合
Global AcceleratorのDNS名ade8ae46ba7ed5faa.awsglobalaccelerator.com
でアクセスするとNginxページが表示されました。
Nginxのアクセスログには、私のクライアントIPを確認することができました。
私のクライアントIP - - [22/Aug/2023:23:30:04 +0000] "GET / HTTP/1.1" 304 0 "-" "省略" "-"
クライアントIPの保持を無効にしてみる
クライアントIPの保持が無効の場合、NginxのアクセスログがクライアントIPを出力されないか確認します。
エンドポイントを編集してもクライアントIPアドレスを保持
の修正はできませんでした。
そのため、エンドポイントを追加しましょう。
クライアントIPアドレスを保持
を無効にし、保存します。
ステータスがデプロイ済み
になるまで待ちます。
再度、Global AcceleratorのDNS名ade8ae46ba7ed5faa.awsglobalaccelerator.com
でアクセスするとNginxページが表示されました。
Nginxのアクセスログには、私のクライアントIPは保存されていませんでした。
13.248.98.20 - - [23/Aug/2023:00:13:28 +0000] "GET / HTTP/1.1" 304 0 "-" "省略" "-"
クライアントIPアドレスを保持
を有効にすることで、エンドポイントであるNLBに向けてクライアントのIPアドレスを保持できることが分かりました。
クライアントIPアドレスを保持
が有効化できないパターン
セキュリティグループが無効のNLBは、クライアント IP アドレスを保持
を有効化することはできませんでした。
リスナーにTLS リスナーが接続されているNLBは、クライアントIPアドレスを保持
をチェックできましたが、エラーとなりました