Amazon CloudFront で「AWS マネージドプレフィックスリスト」がサポートされたので使ってみた

AWS

2022.2.25

Topics

はじめに

こんにちは。CloudLead チームの Cold-Airflow です。

2022/2/7 に「Amazon CloudFront」にアップデートがありました。

本日より、Amazon CloudFront の AWS マネージドプレフィックスリストを使用して、CloudFront のオリジンに面したサーバーに属する IP アドレスのみからのオリジンへのインバウンド HTTP/HTTPS トラフィックを制限できます。CloudFront が、マネージドプレフィックスリストを CloudFront のオリジンに面したサーバーの IP アドレスで最新の状態に保つので、プレフィックスリストを自分で管理する必要がなくなります。
Amazon VPC now supports an AWS-managed prefix list for Amazon CloudFront

アップデートのメリットは?

従来、EC2をオリジンとした場合のオリジン直接のアクセス制御を行う方法としては、CloudFrontにカスタムヘッダーを追加してALBでルールの設定をしたりと、アクセス制御に手間が多くかかってしまっていました。

そこで、マネージドプレフィックスリストを使ってセキュリティグループで制御することでCloudFront経由でアクセスを受け取ることが出来、セキュリティの強化であったり、ログの一元化をすることでアクセス分析も可能となります。

従来のALBやWAFを使ったアクセス制御の方法についての詳細は下記をご覧ください。

Application Load Balancers へのアクセスを制限する – Amazon CloudFront
AWS WAF を使用してコンテンツへのアクセスの管理 – Amazon CloudFront

実際にやってみた

構成

CloudFront のオリジンに EC2 を配置した Web サイトを構築します。

CloudFront EC2オリジン構成図

CloudFront を経由しないアクセスをセキュリティグループで拒否します。

Web サイト構築

Apache で Web サーバを構築します。
Apache をインストールします。

sudo yum install -y httpd

Apache を起動します。

sudo systemctl start httpd

最後に適当な HTML ファイルを作成します。

echo "<h1>Hello World!</h1>" > /var/www/html/index.html

これで準備が整ったのでブラウザでアクセスして確認します。

現状のアクセス確認

ブラウザで EC2 のパブリック DNS を指定してアクセスを行います。

C:\Users>curl ec2-18-204-155-85.compute-1.amazonaws.com
<h1>Hello World!</h1>

次に、CloudFront の DNS を指定してアクセスを行います。
現状では、どちらとも正常にアクセスできることが確認できました。

C:\Users>curl http://dx9yysqbeotm2.cloudfront.net
<h1>Hello World!</h1>

それでは、セキュリティグループのルールに AWS マネージドプレフィックスリスト を設定してアクセス制御を行います。

EC2 のセキュリティグループに AWS マネージドプレフィックスリスト を設定

EC2 にアタッチしているセキュリティグループルールを編集します。

ソースからカスタムを選ぶと候補にある「com.amazonaws.global.cloudfront.origin-facing」を選択します。

見切れてますが、globalと入っているリストを選択すれば大丈夫です。

security group 設定画面

設定が完了したので EC2 と CloudFront でアクセスをして確認してみます。

  • EC2 直接アクセス
C:\Users>curl ec2-18-204-155-85.compute-1.amazonaws.com
curl: (7) Failed to connect to ec2-18-204-155-85.compute-1.amazonaws.com port 80: Timed out
  • CloudFront 経由のアクセス
C:\Users>curl http://dx9yysqbeotm2.cloudfront.net
<h1>Hello World!</h1>
  • EC2 直接アクセス → セキュリティグループに拒否されているため TimeOut となりアクセス不可能
  • CloudFront 経由のアクセス → 通常通りアクセス可能

まとめ

セキュリティグループを使用して EC2 オリジンのアクセス制御を実装してみました。

セキュリティグループを使えば、ALB や WAF の設定が必要なくなるので構築も楽ですし、コスト面も削減できるかもしれません。

素晴らしいアップデート内容です。

参考記事

Amazon VPC now supports an AWS-managed prefix list for Amazon CloudFrontよくある質問 – Amazon CloudFront | AWS
Application Load Balancers へのアクセスを制限する – Amazon CloudFront
AWS WAF を使用してコンテンツへのアクセスの管理 – Amazon CloudFront
オリジンアクセスアイデンティティ (OAI) を使用して Amazon S3 コンテンツへのアクセスを制限する – Amazon CloudFront
describe-managed-prefix-lists — AWS CLI 1.22.55 Command Reference
CIDR ブロックコレクションとプレフィックスリストを併用する – Amazon Virtual Private Cloud
AWSが管理するプレフィックスリストを操作する-AmazonVirtual Private Cloud

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Cold-Airflow

2021年新卒入社。インフラエンジニアです。RDBが三度の飯より好きです。 主にデータベースやAWSのサーバレスについて書く予定です。あと寒いのは苦手です。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら