CloudFront 新機能!VPCオリジンでプライベートなALBをセキュアに公開してみた

CloudFront 新機能!VPCオリジンでプライベートなALBをセキュアに公開してみた

CloudFrontの新機能VPCオリジンを使い、プライベートなALBをセキュアに公開する事が可能になりました。
Clock Icon2024.11.21

2024年11月20日に発表されたAmazon CloudFront の新機能、VPC オリジンを利用して、Amazon VPC の Internal ALB へ CloudFront 経由でアクセスする設定方法を紹介します。

https://aws.amazon.com/jp/blogs/aws/introducing-amazon-cloudfront-vpc-origins-enhanced-security-and-streamlined-operations-for-your-applications/

評価環境の準備

VPC

VPCウィザードを利用して、以下のVPCを作成しました。

VPCウィザードの設定画面

  • VPCとサブネット等の関連リソースを同時に作成
  • IGWを利用可能なパブリックサブネットを2つ
  • GWの存在しないプライベートサブネットを2つ
  • NATGatewayの設置は行わない

Internal ALB作成

作成した検証用のVPCに、VPCオリジンで利用する Internal ALBを作成しました。

InternalALB作成画面

  • 内部用の ALB (Internal)を設置しました。

  • サブネットは、プライベートIP通信のみ可能なサブネットを選択しました。

  • 疎通テストの為、デフォルトアクションで固定応答を戻す設定を行いました。
    ターゲット

VPC オリジンの作成

CloudFrontダッシュボードのメニューに追加された「VPC origins」を利用しました。

CloudFrontメニューVPCorigins

先に作成した Internal ELBのARNを指定、任意の名称で VPCオリジンを作成しました。

CreateVPCorigin

ENIの確認

VPCオリジン作成が完了すると、CloudFront用のENIが自動的に作成され、ネットワークインターフェースで確認可能になります。

  • VPC ID: テスト用に作成したVPC
  • 説明: CloudFront configured ENI

VPCオリジンENI

セキュリティグループ

ELB用セキュリティグループ作成

VPCオリジンから Internal ALBへの通信を許可するセキュリティグループを作成します。

  • インバウンドルール、HTTP(TCP80) を、先に確認した VPCオリジンの ENI のセキュリティグループIDを指定しました。

ELB用セキュリティグループ作成

InternalALBへの割当

デフォルトのセキュリティグループの選択を外し、VPCオリジンからのHTTP通信を許可した セキュリティグループを割り当てます。

ELBのセキュリティグループ編集

CloudFront

新規ディストリビューションを作成しました。

オリジン作成

オリジンは、「VPC origins」以下に表示されたものを選択しました。

オリジン指定

ビヘイビアなどの設定はデフォルトとしました。

ビヘイビア

その他設定

動作確認

CloudFrontのディストリビューション作成が完了した後、
ディストリビューションドメイン名を利用した疎通確認を試みました。

$ curl -v https://xxxxxxxxxxxx.cloudfront.net
* Host xxxxxxxxxxxx.cloudfront.net:443 was resolved.
(略)
> GET / HTTP/2
> Host: xxxxxxxxxxxx.cloudfront.net
> User-Agent: curl/8.7.1
> Accept: */*
> 
* Request completely sent off
< HTTP/2 200 
< content-type: text/plain; charset=utf-8
< content-length: 4
< server: awselb/2.0
< date: Thu, 21 Nov 2024 10:47:02 GMT
< x-cache: Miss from cloudfront
< via: 1.1 xxxxxxxxxxxx.cloudfront.net (CloudFront)
< x-amz-cf-pop: NRT20-P2
< x-amz-cf-id: xxxxxxxxxxxx==
< 
* Connection #0 to host xxxxxxxxxxxx.cloudfront.net left intact

CloudFront経由で、プライベートサブネットのInternalALBの応答結果を得る事ができました。

疎通確認

まとめ

従来、CloudFront経由で利用するALBの直接アクセスを回避したい場合には、マネージドプリフィックスを利用したセキュリティグループによる制限や、CloudFrontのカスタムヘッダーを利用した制限が可能でしたが、今回の VPC オリジンがサポートされた事で、シンプルな利用が可能になりました。

https://dev.classmethod.jp/articles/amazon-cloudfront-managed-prefix-list/

https://dev.classmethod.jp/articles/restrict-elb-origin-advanced-request-routing/

https://dev.classmethod.jp/articles/restrict-elb-origin-awswaf/

また、2024年2月よりELBが利用するパブリックIPアドレスは 1時間0.005ドルの課金対象となりました。
2つのAZを利用するALBでは、月額7.2ドル (24時間x30日x2AZx0.005ドル)、ELBのオートスケールによりノードが増加した場合、それ以上の課金が発生していましたが、これもVPCオリジンを利用することで回避する事が可能です。

https://dev.classmethod.jp/articles/reduce-ipv4-addresses-checklist/

CloudFrontディストリビューションとVPCオリジンのクロスアカウントのサポートも、AWSブログの発表で、まもなく提供予定とされています。

VPC origin resource must be in the same AWS Account as the CloudFront distribution, although support for resources across all accounts is coming soon.

Introducing Amazon CloudFront VPC origins: Enhanced security and streamlined operations for your applications

CloudFrontとALBを組み合わせた利用を行う場合、セキュリティとコストの両面でメリットが得られる、VPCオリジンをお試し下さい。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.