コーヒーが好きな木谷映見です。
本日は AWS と Azure のパブリック IP 空間について調べたことをまとめていきます。
Amazon VPC 外のリソースの通信
AWS を普段利用されている方にはなじみ深い Amazon VPC というサービスは、AWS クラウド上に仮想ネットワーク環境を用意することができます。
VPC という閉鎖された空間はプライベート IP で通信することができ、VPC 内の通信であれば、データセンター内の通信のように安全と考えられます。
では、VPC 外で利用する AWS サービスについてはどうでしょうか。
イメージしやすいのが、Amazon S3 や AWS Systems Manager などの AWS サービスです。
S3 バケットに保存されたデータのやりとりや、Systems Manager の機能であるセッションマネージャーでやりとりされるデータは、パブリック IP を利用した AWS クラウド内でやり取りされています。
この AWS クラウド上のパブリック IP でやりとりされる空間について、「Amazon VPC のよくある質問」に記載がありますので、見ていきます。
AWS 独自のネットワーク
結論から記載しますと、AWS クラウド上のパブリック IP での通信は、AWS 独自のAWS グローバルネットワーク内で完結する旨が記載されています。
Q:2 つのインスタンスがパブリック IP アドレスを使用して通信する場合、またはインスタンスがパブリックな AWS のサービスエンドポイントと通信する場合、トラフィックはインターネットを経由しますか?
いいえ。パブリック IP アドレスを使用する場合、AWS でホストされているインスタンスとサービス間のすべての通信は AWS のプライベートネットワークを使用します。AWS ネットワークから発信され、AWS ネットワーク上の送信先を持つパケットは、AWS 中国リージョンとの間のトラフィックを除いて、AWS グローバルネットワークにとどまります。
さらに、データセンターとリージョンを相互接続する AWS グローバルネットワークを流れるすべてのデータは、安全性が保証された施設を離れる前に、物理レイヤーで自動的に暗号化されます。すべての VPC クロスリージョンピアリングトラフィックや、カスタマーまたはサービス間のトランスポート層セキュリティ (TLS) 接続などといった追加の暗号化レイヤーもあります。
VPC 外のサービスはすべて VPC エンドポイントで接続するべきか
では、今まで境界型セキュリティで情報を保護してきたシステムは、VPC 外のサービスと連携する際すべて VPC エンドポイントでプライベートな接続にすべきでしょうか?
例えば、S3 バケットに格納された画像データを AWS Lambda で変換する、という構成を考えます。S3 バケット~ Lambda 関数間の通信は AWS クラウド上の VPC 外で発生します。ここで、VPC 外のパブリックな通信であることを懸念して構成を変更するとしたら、 VPC に接続した Lambda 関数を設定し、VPC エンドポイントで該当の S3 バケットからの通信しか受け付けない、などの構成が考えられます。
ここで、VPC エンドポイントは本当に必要か?という話になった場合、以下のような観点で考えていただくとよいかもしれません。
- AWS サービス同士が通信する際、パブリック IP でのやり取りではあるが、AWS 独自のネットワーク内で完結するため、完全に公の通信になるわけではない
- VPC エンドポイントの利用で構成が複雑化する場合、今後のシステム運用やシステム拡大時に影響があるか
- VPC エンドポイントの料金を加味し、本当にプライベート接続を維持する必要があるか
- データを暗号化して保護することで安全性を担保できないか
今回のケースで言うと、S3 バケットと Lambda 関数という AWS リソース同士の通信であるため、完全に公のインターネット空間に通信がさらされることはありません。システムで求められるセキュリティ要件にもよりますが、VPC エンドポイントを利用しない構成とすることも十分考えられます。
Azure 独自のネットワーク
さて、Azure にも似た公開記事があります。
Azure リソース間のトラフィック、Microsoft サービス間のトラフィックはすべて Microsoft のバックボーンネットワークを介して行われ、インターネットに流出することはありません。
azure.microsoft.com
データセンター間の Azure トラフィック、および世界中の Microsoft サービス間のトラフィックはすべて Microsoft のネットワーク上に常に存在し、インターネットに流出することはありません。たとえば Azure 内部では、仮想マシン、ストレージ、SQL 通信間のトラフィックは、送信元や送信先のリージョンにかかわらずマイクロソフトのネットワーク内のみを移動します。リージョン内の VNet 対 VNet のトラフィックも異なるリージョン間の VNet 対 VNet トラフィックも、Microsoft のネットワーク内のみを移動します。
最後に
AWS と Azure のパブリック IP 空間について記載してまいりました。
「AWS を使ってみたいけど、クラウド上にデータを置くことについてセキュリティの不安がある」などのお悩みもあるかと存じます。
サーバーワークスにお気軽にご相談ください。
emi kitani(執筆記事の一覧)
AS部LX課。2022/2入社、コーヒーとサウナが好きです。執筆活動に興味があります。AWS認定12冠。