こんにちは!さとみんです。
re:invent前に発表された情報で個人的に興味があったNetwork Firewall proxyについて触ってみました。
https://aws.amazon.com/jp/blogs/networking-and-content-delivery/securing-egress-architectures-with-network-firewall-proxy/
かなり簡略化して記載していますが、今まで私が業務で触っているような環境は以下のようにプロキシサーバを作成し接続元サーバはプロキシサーバ経由でしかインターネットに出ないように設定していました。
プロキシサーバではsquidを利用し「どのサーバがどのドメインに接続していいか」というのを定義しています。
ただ今回発表されたNetwork Firewall proxyを利用するとプロキシサーバなしで今までsquidでやっていたようなことを代替できるようです。
触ってみた
まだ東京やバージニアリージョンでは利用できなかったので、今回はオハイオ(us-west-2)リージョンを利用しました。
Network Firewall proxyは「VPC」ページの「ネットワークファイアウォール」にある「プロキシ・プロキシ設定・プロキシルールグループ」から設定します。

まずプロキシルールグループを作成します。
今回は「aws.amazon.com」というドメインにのみ接続を許可し他のドメインには接続できないというような設定を入れようと思います。

フェーズで「プレDNS、プレリクエスト、ポストレスポンス」を選択できます。
またアクションも「許可、拒否」を選択できます。
今回はフェーズ:プレDNS、アクション:許可で設定します。

条件を追加することでどのような条件で許可、拒否するのかを設定できます。
今回は「request:DestinationDomain」が「aws.amazon.com」と一致するものだけ許可という条件にしています。

プロキシルールグループが作成できたら、次にプロキシ設定を作成します。
デフォルトのアクションでプレDNS、プレリクエスト、ポストレスポンスをそれぞれ拒否、許可を設定できます。今回はすべて拒否にしてみました。

プロキシ設定が終わったら最後に「プロキシ」ページからプロキシを作成します。
先ほど作成したプロキシ設定と自分の利用しているVPCのNatGatewayを指定します。

これでNetwork Firewall proxyの設定は完了です。
NatGatewayにアタッチされるまでに体感5分くらいかかりました。
NatGatewayのAttachmentsタブからも先ほど作成したNetwork Firewall proxyがアタッチされていることを確認できます。

確認
今回はサーバを立てるのが面倒だったのでCloudShellのCreate a VPC environmentを利用して確認していこうと思います。

利用するVPCとプライベートサブネット、EC2にアタッチするSGを選択します。
httpsの接続が今回作成したプロキシを経由するように下記を実行します。
export https://"<プロキシのプライベートDNS名>:443"
その後curlコマンドを実行します。
まずは許可しているaws.amazon.comからです。
プロキシを作成する際にTLSを有効化していなかったのでTLS関連でconnect errorが出ていますがConnection Establishedになっています!

次に許可していないhttps://www.google.com に対してコマンドを実行したところちゃんと403エラーが出ていました!

プロキシのエンドポイントにはdefaultのSGが設定されています。そのためEC2からの接続を許可するインバウンドルールを設定しないとcurlコマンドを実行しても返答が来ないので注意してください。
感想
新機能を利用してみてわざわざプロキシサーバを立てなくても、プロキシサーバと同様の機能を実装できるという点が便利だと感じました!ただsquidのように対象のサーバだけ対象のドメインへの接続許可というのができるのかが今回は試しきれなかったので今後試してみようと思います!
東京リージョンにGAされるのを楽しみに待ってます!


