ALB(ロードバランサー)でCloudFront経由のアクセスに絞る方法として、以下の方法があると思います。
- マネージドプレフィックスリスト(managed prefix list)によりアクセスを絞る
- カスタム HTTP ヘッダーによりアクセスを絞る
上記はよく知られた方法かと思いますので、詳細は割愛します。
本記事で記載したいことは、上記2つを併用した方が安心だよということです。
まずは、用語の説明からです。
用語の説明
マネージドプレフィックスリスト(managed prefix list)とは
AWS Managed Prefix Listは、AWSによって管理されるIPアドレスのプレフィックスリストです。特定のAWSサービス(例えばCloudFrontやAmazon S3など)のIPアドレス範囲を含んでおり、ネットワーク設定やセキュリティ設定を簡素化するために使用されます。
本記事では、「マネージドプレフィックスリスト=CloudFrontのIP」として記載します。
カスタム HTTP ヘッダー
カスタム HTTP ヘッダーは、HTTP リクエストやレスポンスに含まれるユーザー定義のヘッダーであり、標準の HTTP ヘッダーではカバーされない追加の情報を送信するために使用されるものです。
なぜ併用した方がいいのか
ALB(ロードバランサー)でCloudFront経由のアクセスに絞る際に、マネージドプレフィックスリストとカスタム HTTP ヘッダーを併用する場合、以下のようになります。
- マネージドプレフィックスリスト(managed prefix list)によるアクセス制限
- IP制限により、CloudFront経由のアクセスを絞る
- CloudFront経由であれば、別アカウントのものでも許可してしまう
- IP制限により、CloudFront経由のアクセスを絞る
- カスタム HTTP ヘッダーによるアクセス制限
- カスタムHTTPヘッダーにより、CloudFront経由にアクセスを絞る
- 自分が作成したCloudFrontのみにアクセスを絞ることができる
- カスタムHTTPヘッダーにより、CloudFront経由にアクセスを絞る
- →マネージドプレフィックスリストとカスタム HTTP ヘッダーを併用することで、自分が作成したCloudFrontのみにアクセスを絞ることができる
マネージドプレフィックスリスト(managed prefix list)だけでは、CloudFrontのIP制限のため、CloudFrontからの接続であれば、別アカウントのものでも許可してしまいます。
そのため、カスタム HTTP ヘッダーも併用が必要となります。カスタム HTTP ヘッダーにより、自分が作成したCloudFrontのみにアクセスを絞ることができます。
2段階で網をかけておいた方が安心ですね。
カスタム HTTP ヘッダーとマネージドプレフィックスリストの設定方法
公式記事に詳しく書いてあるので、以下の公式の記事をご参照ください。
まとめ
ALB(ロードバランサー)でCloudFront経由のアクセスに絞るときは、カスタム HTTP ヘッダーとマネージドプレフィックスリストを併用するのが良いです。
マネージドプレフィックスリスト単体でも、https(443)の通信にしているから問題とならないケースもあると思いますが、基本的にはカスタム HTTP ヘッダーとマネージドプレフィックスリストを併用した方が安心かと思います。