[アップデート] 遂に Network Load Balancer でセキュリティグループがサポートされました

2023.08.11

いわさです。

今朝のアップデートでなんと、Network Load Balancer (NLB) でセキュリティグループがサポートされたとアナウンスされました。

従来は NLB では Application Load Balancer (ALB) などのようにセキュリティグループを設定することが出来ませんでした。

それによってアクセス元の制御などで、ターゲットグループのクライアント IP 保持機能を使ったターゲット側での設定が必要になるケースが多かったと思います。
ただ、その場合も NLB とターゲットが同一 VPC である必要などの制限がありました。このあたり含めて次の記事でとてもまとまっています。

今回のアップデートで ALB と同じ感覚で NLB 側のセキュリティグループにセキュリティ設定を集約したり、あるいは ENI の IP アドレスを意識せずに NLB のセキュリティグループを指定してターゲット側でヘルスチェック許可を行えるようになりました。

ターゲット用のアプリを作成

今回 NLB を検証しようと思いますが、以下のテンプレートを使って ALB と EC2 の Web アプリケーションを作成します。

作成すると次のように ALB のホストを指定して HTTP 通信が出来るようになります。

% curl http://hoge-web-alb-172497223.ap-northeast-1.elb.amazonaws.com
hoge

なお、ターゲット EC2 のセキュリティグループでは ALB からのみ HTTP アクセスを受け付けるようになっています。

新規 NLB 作成時にセキュリティグループを設定する必要がある

以下一応検証していますが、基本的な使用方法は ALB と同じですね。
セキュリティグループを作成しておき、NLB 作成時にアタッチします。

注意点としては後述しますが NLB 作成時にセキュリティグループを設定されていない場合に NLB の変更操作からセキュリティグループを新たに有効化することは出来ません。

作成したセキュリティグループからの HTTP 通信を許可するようにターゲット EC2 のセキュリティグループでも許可しておきます。

あとは NLB 作成時に ALB と同じような要領でセキュリティグループを設定するだけです。

ALB と異なる点としては、NLB のセキュリティグループは NLB 作成時点では必須ではないという点です(推奨と表記されている)
NLB 作成時点では次のようにセキュリティグループを指定せずに作成することが出来ます。

ただし、セキュリティグループを設定せずに作成した NLB に、後からセキュリティグループを設定することは出来ません。
新しく作成する必要があります。

同様に、セキュリティグループを設定して作成した NLB に対してセキュリティグループが何も設定されていない状態にすることも出来ません。
このあたりは注意が必要なので既存の NLB から移行する際は覚えておきましょう。

作成後、次のようにセキュリティタブからアタッチされたセキュリティグループを確認することが出来ます。

また、作成時には確認出来なかった PrivateLink に関連して設定が表示されていることが確認出来ます。
編集画面から設定変更が可能なのですが、このオプションで PrivateLink トラフィックに対してはセキュリティグループのインバウンドルールを無視させることが出来ます。(デフォルトは PrivateLink も適用される):参考

構成が完了したら、NLB のホストを指定して先程と同じように HTTP リクエストを送信してみます。

% curl http://hoge0811nlb-421fbd819d597dd3.elb.ap-northeast-1.amazonaws.com
hoge

上記は通信出来たものですが、NLB のセキュリティグループで許可されていないアクセス元の場合は通信出来ないことも確認出来ています。
NLB へのインバウンドも、ターゲット側のセキュリティ設定も、NLB のセキュリティグループ設定のみで完結しました。

さいごに

本日は 遂に Network Load Balancer でセキュリティグループがサポートされたので使ってみました。

まぁ、遂にというほど私は Network Load Balancer を使っておらず、Application Load Balancer を使うケースのほうが圧倒的に多いのですが、NLB を採用する場合のターゲットセキュリティグループの設定どうするみたいな話しはよく聞くので嬉しい方多いのではないでしょうか。
また、「推奨」という表記から、今後の NLB を含んだネットワークセキュリティ設計のスタンダードに少し影響が出そうなので、今回のアップデートはしっかり把握しておきたいところです。

ちなみに、Kubernetes の場合は、AWS Load Balancer Controller の v2.6.0 以上から利用出来るようになっています。
詳しくは以下のリリース通知を見てください。