CloudFront 新機能!VPCオリジンでプライベートなALBをセキュアに公開してみた
2024年11月20日に発表されたAmazon CloudFront の新機能、VPC オリジンを利用して、Amazon VPC の Internal ALB へ CloudFront 経由でアクセスする設定方法を紹介します。
評価環境の準備
VPC
VPCウィザードを利用して、以下のVPCを作成しました。
- VPCとサブネット等の関連リソースを同時に作成
- IGWを利用可能なパブリックサブネットを2つ
- GWの存在しないプライベートサブネットを2つ
- NATGatewayの設置は行わない
Internal ALB作成
作成した検証用のVPCに、VPCオリジンで利用する Internal ALBを作成しました。
-
内部用の ALB (Internal)を設置しました。
-
サブネットは、プライベートIP通信のみ可能なサブネットを選択しました。
-
疎通テストの為、デフォルトアクションで固定応答を戻す設定を行いました。
VPC オリジンの作成
CloudFrontダッシュボードのメニューに追加された「VPC origins」を利用しました。
先に作成した Internal ELBのARNを指定、任意の名称で VPCオリジンを作成しました。
ENIの確認
VPCオリジン作成が完了すると、CloudFront用のENIが自動的に作成され、ネットワークインターフェースで確認可能になります。
- VPC ID: テスト用に作成したVPC
- 説明: CloudFront configured ENI
セキュリティグループ
ELB用セキュリティグループ作成
VPCオリジンから Internal ALBへの通信を許可するセキュリティグループを作成します。
- インバウンドルール、HTTP(TCP80) を、先に確認した VPCオリジンの ENI のセキュリティグループIDを指定しました。
InternalALBへの割当
デフォルトのセキュリティグループの選択を外し、VPCオリジンからのHTTP通信を許可した セキュリティグループを割り当てます。
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 オリジンがサポートされた事で、シンプルな利用が可能になりました。
また、2024年2月よりELBが利用するパブリックIPアドレスは 1時間0.005ドルの課金対象となりました。
2つのAZを利用するALBでは、月額7.2ドル (24時間x30日x2AZx0.005ドル)、ELBのオートスケールによりノードが増加した場合、それ以上の課金が発生していましたが、これもVPCオリジンを利用することで回避する事が可能です。
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.
CloudFrontとALBを組み合わせた利用を行う場合、セキュリティとコストの両面でメリットが得られる、VPCオリジンをお試し下さい。