AWS Network Firewall で複数の VPC エンドポイントのサポートを開始
のアナウンスがありましたので、異なるVPCエンドポイント上のNetworkFirewallを使用してみましたが、つまづきポイントがあったためメモがてらに。
構成は以下のような形です。
何につまづいたか?
ルーティングやVPCエンドポイント等の設定はうまくいってるはずなのに、NetworkFirewallがうまく動かなかった。
具体的には、ホワイトリスト方式のドメイン制御をしていたのですが、NFWに指定しているドメインでも疎通ができませんでした。
解決策
NetworkFirewallのポリシーの設定でポリシー変数を編集し、Network Firewall から“送信元として見える”CIDRを入力すると、解決します。
AWSの推奨では、NetworkFirewallのVPCのCIDRも併記したほうがよいみたいです(上書きで既定が消えるため)
ちなみに、このポリシー変数ですが、AWSコンソール上だとわかりにくいので注意です。
「ファイアウォールのポリシー」> 「詳細」タブ > 「Policy variables」に編集ボタンがあります。
なぜ必要?
既定の $HOME_NET は 「Network Firewall を配置した VPC の CIDR」 だけです。
検査VPC(Inspection VPC)方式や、別VPCからの関連付け(複数VPCエンドポイント)では、そのままだとワークロードVPCのトラフィックが検査対象外になります。
Terraformでの実装例
resource "aws_networkfirewall_firewall_policy" "main" {
name = "outbound-policy"
firewall_policy {
stateful_engine_options { rule_order = "STRICT_ORDER" }
stateful_default_actions = ["aws:drop_established"]
# ← ここに追記
policy_variables {
rule_variables {
key = "HOME_NET"
ip_set {
# 例: ワークロードVPC + 検査VPC
definition = ["10.100.0.0/16", "10.200.0.0/16"]
}
}
}
stateful_rule_group_reference {
resource_arn = aws_networkfirewall_rule_group.domain_allow.arn
priority = 10
}
}
}
以上です。他につまづいた方の参考になれば!