Network Firewallを経由する通信ではTransit Gatewayのセキュリティグループ参照が無効!

記事タイトルとURLをコピーする

CR課の前田です。久しぶりにNetwork Firewallについてのブログを書かせていただきます。

結論

  • Network Firewallを経由する通信にはTransit Gatewayのセキュリティグループ参照が適用されない

  • 各セキュリティグループではCIDRベースで許可設定をしてあげましょう

Transit Gatewayセキュリティグループ参照とは?

Transit Gatewayで接続している別VPCのセキュリティグループを参照できる機能です。
詳細についてはAWS Transit Gateway でのセキュリティグループ参照の導入をご確認下さい。 無条件で利用できるわけではなく、アウトバウンドルールでは参照不可…等色々と制限があるのですが、その中の一つに標題の制限がございました。
上記ドキュメントにさらっと書かれていたのですが、結構罠だな…と感じたので今回筆をとりました。

検査 VPC がある場合、Transit Gateway を介して参照するセキュリティグループは、 AWS Gateway Load Balancer または AWS Network Firewall 全体では機能しません。

略語について

本ブログ中では下記の略語を使用します。

  • NFW … Network Firewall

  • NFWe…Nework Firwall Endpoint

  • TGW … Transit Gateway

  • TGWatt … Transit Gatewayアタッチメント

  • TGWrtb … Transit Gatewayルートテーブル

  • SG … セキュリティグループ

  • TGWSG参照 … Transit Gatewayセキュリティグループ参照

検証方法

Network Firewall検証環境を作成するためのCloudFormationテンプレート作ってみたで作成できる検証環境を使用して3段階の検証を実施します。

1段階目

NFWを経由しないルートで、各EC2のSGインバウンドルールにおいて、通信相手のSG参照した状態で通信を行い、通信出来ることを確認します。

2段階目

NFWを経由するようルート更新し、SG参照した状態では通信出来なくなることを確認します。

3段階目

各SGインバウンドルールにおいて、SG参照ではなくCIDRベースで制御するよう更新し、通信出来るようになることを確認します。

事前準備

SG参照設定有効化

TGWおよび各TGWattのSG参照設定を有効化します。

■TGW本体


■vpc-NwMngのTGWatt


■vpc-Spoke1のTGWatt


■vpc-Spoke2のTGWatt

各SGインバウンドルールにて通信先SGの参照

vpc-Spoke1、vpc-Spoke2それぞれのEC2に紐づくSGのインバウンドルールにて、通信相手のSG IDを送信元とする通信を許可します。


■vpc-Spoke1上EC2のSG


■vpc-Spoke2上EC2のSG

検証_1段階目

VPCルートテーブル設定

vpc-Spoke1、vpc-Spoke2間の通信がTGWサブネットで折り返すようにルート設定し、NFWを通らないようにします。


実際の設定画面は下記のようになります。


疎通検証

vpc-Spoke1のEC2(10.0.1.68)→vpc-Spoke2のEC2(10.0.2.84)


vpc-Spoke2のEC2(10.0.2.84)→vpc-Spoke2のEC2(10.0.1.68)


上記のようにお互いに疎通できることが確認できました。NFWを挟まなければ、検査用VPCを経由してもTGWSG参照は有効に働くようです。

検証_2段階目

VPCルートテーブル設定変更

vpc-Spoke1、vpc-Spoke2間の通信がNFWを通るようにします。


実際の設定画面は下記のようになります。

疎通検証

vpc-Spoke1のEC2(10.0.1.68)→vpc-Spoke2のEC2(10.0.2.84)

vpc-Spoke2のEC2(10.0.2.84)→vpc-Spoke2のEC2(10.0.1.68)


上記の通り、お互いに疎通出来なくなることが確認できました。

検証_3段階目

SG設定変更

vpc-Spoke1、vpc-Spoke2それぞれのEC2に紐づくSGのインバウンドルールにて、SG IDではなく互いのVPC CIDRを許可するようにします。


■vpc-Spoke1上EC2のSG


■vpc-Spoke1上EC2のSG

疎通検証

vpc-Spoke1のEC2(10.0.1.68)→vpc-Spoke2のEC2(10.0.2.84)

vpc-Spoke2のEC2(10.0.2.84)→vpc-Spoke2のEC2(10.0.1.68)


お互い、疎通出来るようになることが確認できました。


結論(再掲)

  • Network Firewallを経由する通信にはTransit Gatewayのセキュリティグループ参照が適用されない

  • 各セキュリティグループではCIDRベースで許可設定をしてあげましょう

余談

検証_1段階目において、vpc-Spoke-1、vpc-Spoke-2間の通信はvpc-NwMngを経由するようになっていました。(※NFWは経由しない
この時、vpc-NwMngのTGWattのセキュリティグループ参照が無効だとvpc-Spoke-1とvpc-Spoke-2間の通信は互いのSG参照が出来ず通信に失敗します。


1段階目の検証を実施した直後、vpc-Spoke1上EC2とvpc-Spoke2上EC2がお互いのSGを参照して疎通可能な状態で tgw-attach-NwMngのセキュリティグループ参照のみを無効にしてみます。


vpc-Spoke1のEC2(10.0.1.68)→vpc-Spoke2のEC2(10.0.2.84)

vpc-Spoke2のEC2(10.0.2.84)→vpc-Spoke2のEC2(10.0.1.68)


上記の通り、お互いのSGを参照できず疎通不可になってしまいました。
NFWやアプライアンスを挟まず、VPC内のみを経由させたい状況があるかは分かりませんが、セキュリティグループ参照はTGWatt単位でも全てのVPCで有効化しておくのが良さそうです。

感想

ドキュメントに書いてある通りのことが分かっただけでしたが、実際にイメージを知りたい方の一助となれば幸いです。

前田 青秀(執筆記事の一覧)

2023年2月入社 技術4課改めCR課

AWS資格12冠

ジムに通い始めましたが、なるべく楽してマッチョになりたい…