CloudFront と ALB のアクセス制御
概要
CloudFront から ALB (アプリケーションロードバランサー) のみがアクセス可能な状態を作り出す方法について。CloudFront から ALB の HTTP リクエストにカスタムヘッダーを追加し、ALB 側でこのヘッダーを検証することでアクセスを制御します。
制御の流れ
解説
正常例: CloudFront 経由のリクエスト
- ユーザーが CloudFront にリクエストを送信
- CloudFront はカスタムヘッダーを追加して ALB にリクエストを転送
- ALB がカスタムヘッダー値を検証
- 値が一致するため、リクエストを承認し、ターゲットグループにルーティング
失敗例1: カスタムヘッダーなし
- 攻撃者が ALB に直接リクエストを送信
- カスタムヘッダーが含まれていないため ALB がリクエストを拒否
失敗例2: 間違ったヘッダー
- 攻撃者が ALB に直接リクエストを送信
- カスタムヘッダーが含まれていても値が一致しないため ALB がリクエストを拒否
よくある間違い
Q. オリジンアクセスコントロール (Origin Access Control, OAC) を利用してアクセス制御はできますか?
A. できません。OACはALBをオリジンにはサポートされておらず、S3バケットを制御する場合に有効な手段です。
ALB と CloudFront のアクセス制御方法の比較
制御方法 | 適用対象 | 実装の簡単さ | セキュリティ |
---|---|---|---|
オリジンアクセスコントロール | S3 バケット | 高 | IAM ポリシーを使用するため非常に強力 |
カスタムヘッダー制御 | ALB、EC2 インスタンスなどの任意のオリジン | 中 | ヘッダー値を秘密にすれば高いセキュリティを実現 |
セキュリティグループ制御 | ALB、EC2 インスタンス | 中 | CloudFront の IP 範囲に限定することで効果的な制御 |