はじめに
こんにちは。Kohei(@koheiawa)です。
嬉しいアップデートがありました。
なんとAWS Network Firewallが遂にイングレスのTLSインスペクションに対応しました!!
※アウトバウンドのTLS通信は非対応です
※東京リージョンはまだ非対応です
※HTTP2通信とWebSocketsには非対応です
これは個人的にアツいアップデートなのでいち早く記事にまとめました。
何が嬉しいの?
今まで、Network FirewallはTLS通信の復号ができませんでした。すなわち、暗号化された通信の中身を見ることができなかったという弱点がありました。
以下の構成を考えてみましょう。
この構成を取る場合、イングレスのトラフィックはELBに到達するよりも前にNetwork Firewallを通過します。HTTPS通信はELBで終端するため、この構成を取る場合にはNetwork Firewallは通信の中身を見れません。
そのため、通信の中身まで見たい(インスペクションの深さをアプリケーション層までとしたい)場合、Network Firewallよりも前にELBを通過させる必要があります。すなわち、以下の構成にする必要があります。
この構成はMSRによって可能になった構成です。ただし、今度はイングレス通信の送信元IPがELBのIPにSNATされてしまうという欠点が生じます。
そのため、通信の中身まで見たい場合には復号および再暗号化が可能なサードパーティーのアプライアンスを利用していた例が大半だったのではないでしょうか。すなわち、Gateway Load Balancerを利用した以下のアーキテクチャ※1です。
今回のアップデートによりNetwork Firewallが通信の復号と再暗号化をサポートしたことで、機能が以下※2のように変わります!
すなわち、送信元の可視性を維持しながら通信の中身を見れるようになったという嬉しいアップデートです!
※1 AWSの公式ブログより引用
※2 AWSの公式ブログに朱書きを追加
注意点
公式のデベロッパーガイドくらいしか情報がないのですが、以下の注意点がありそうです。
-
インスペクション構成には追加料金が発生する
シドニーリージョンの料金表※3は以下のようになっていました。
ざっと1.8倍くらいですかね。(お高い、、)
さらに追加のトラフィック処理料金も、、 -
パフォーマンスに影響がある
注意事項に以下の一文※4があります。
初期ハンドシェイクに伴う遅延があるので、パフォーマンスが期待どおりか確認せよとのことです。当然といえば当然ですね、、
他にもステートフルルールに影響があったりと、様々な考慮点があるようです。詳細はデベロッパーガイドを参照ください。
※3 https://aws.amazon.com/jp/network-firewall/pricing/ より
※4 https://docs.aws.amazon.com/network-firewall/latest/developerguide/tls-inspection-considerations.html より
今後の構成の考察
今後の構成は以下のように変化すると考えられます。(個人の想像なので、間違いがあればご指摘ください!料金が分かれているので、インスペクション用に追加のエンドポイントがもしかしたら作られるのかもしれません。)
例として、外部のSaaSと連携するWebアプリを考えてみます。(すなわち、バックエンドのインスタンスは外部と疎通できる必要があるということです。)
この場合NAT gatewayを使用する必要がありますが、MSRとイングレスルーティングを組み合わせて、以下のような構成を取ると良さそうです。(ポイントはMSRのためにNAT gatewayとALBのサブネットを分けている点です。)
<イングレス通信>
<エグレス通信>
※エグレス通信において、Network Firewallを通す前にNAT gatewayを通してしまうと送信元IPの可視性がなくなります。
まとめ
Network FirewallがTLSインスペクションをサポートするようになったという嬉しいアップデートをまとめました。ポイントは①サードパーティーのアプライアンスを導入することなく、②送信元の可視性を維持しながら、③暗号化通信の中身を見れるようになったという点かなと思います。
アーキテクチャにも影響があると思いますので、継続してAWS公式のブログ等をウォッチしていきたいと思います!