Buri Memo:

アイデアや気づきとかが雑に書き殴られる

Cloudfront VPC オリジン背後のprivate ALBにはHTTPで接続しても問題ない

AWS の Cloudfront に VPC Origin という機能が出た。以前は Cloudfront のオリジンには internet access できる EC2, ALB などしか繋ぐことができなかった(設定はできるけど経路が存在しないので繋げない)のだが、これを使うことで private subnet にある EC2, ALB に安全に接続することができるようになった。

aws.amazon.com

VPC Origin を利用した接続は以下のようになる。VPC Origin を作成すると自動的に ENI が作られ、private な ALB に接続する際にはこの ENI 経由でトラフィックが流れる。

VPC Origin を作ってみる

VPC Origin の作成画面

このような画面になるのだが、ここで HTTP を選択することができる。

User requests go from CloudFront to the VPC origins over a private, secure connection, providing additional security for your applications. Restrict access with VPC origins - Amazon CloudFront

AWS のドキュメントを読んでみると、「Cloudfront から VPC Origin までのリクエストはプライベートでセキュアですよ」と書いてあるので HTTP にすれば速くて安全になりそう....

と思ったのだがここで違和感を感じてしまった。

Cloudfront と実際の origin の間ってめっちゃ距離ない?

というのも例えば東京リージョンの VPC の中に作成した ALB は、東京のどこかにあるデータセンターの中に実体がある。一方で Cloudfront は CDN でありデータセンターとは別に世界中に分散されている。

よって、ブラジルから東京リージョンにデプロイされたサイトを見ようとすると、ブラジルのサンパウロにある Cloudfront につながって、そこから東京まで接続されるのである。

特徴 - Amazon CloudFront | AWS

つまり、さっきの図だと地理的にはこうなっている。

いや、B の距離長げえええええええ~~~~

ブラジルから東京、つまり地球の裏側という最も日本から遠いと有名なところがプライベートなわけあるだろうか。

その距離、実に 1.8万キロだ。

いくら AWS のドキュメントで書かれても、1万8千キロの距離をプライベートに保てるとは思えない....。

その疑問が浮かんでからは仕事が手につかなくなってしまったので、問い合わせてみた。

結論

結論としては B の経路はAWSが管理する「バックボーンネットワーク」を通る。そのため、この凄まじい距離を平文(HTTP)が通ったとしても第三者が傍受・改ざんすることはできないらしい。

これだけの回答で理解できればよかったのだが、あいにく私にはネットワークに関するバック―ボーンがない。クラウドを触るインターネットのタコ野郎である。

そこで色々と調べてみたところ以下のブログにあたった。

blog.serverworks.co.jp

この記事によると AS というネットワークを構成する単位をすべて AWS が保有していて、更に安全性が保障されていない部分については自動的に暗号化されているとのことだった。1

そういうことでこの形の場合、A は HTTPS で接続する必要があるが、B, C においては HTTP で接続して問題がない。2

またこれは余談だが、VPC Origin の作成には Internet Gateway が必須であるが、どういうわけか経路として通過していないらしい。どういう仕組みなんだろうか...

AWS すげえ!!!!!!!!!!!!!

参考


  1. そして、このネットワークは可用性が高く低レイテンシな安定した経路らしい
  2. これは private subnet の ALB についてである。public subnet にある ALB でも Cloudfront 経由であれば恐らく問題ないが、直接 ALB に接続する経路を使われてしまうと、インターネットを平文で通ることになってしまう。