カスタムヘッダー方式の CloudFront + ALB 構成を VPC オリジンに移行してみた
はじめに
CloudFront + ALB 構成のアクセス制御について、カスタムヘッダー方式から VPC オリジンへの移行を試してみました。
カスタムヘッダー方式では、ALB をパブリックに公開した上で、CloudFront からの秘密のヘッダーをチェックしてアクセスを制限していました。VPC オリジンを使うと、ALB をプライベートサブネットに置いたまま CloudFront と接続できるので、そもそもインターネットから ALB が見えなくなります。ヘッダーの管理や検証ロジックも不要になるので、よりシンプルかつセキュアな構成が実現できます。
構成
どちらも簡易構成となっています。
移行前の構成(カスタムヘッダー方式)
| リソース | 用途 |
|---|---|
| VPC | パブリックサブネット × 2 |
| ALB(インターネット向け) | パブリックサブネットに配置 |
| EC2 インスタンス | パブリックサブネットに配置 |
| CloudFront | カスタムヘッダー付きでオリジン設定 |
| ALB リスナールール | ヘッダー検証(なければ 403) |
動作
| アクセス方法 | 結果 |
|---|---|
| CloudFront 経由 | ✅ 正常に表示 |
| ALB 直接アクセス | ❌ 403 Access Denied |

移行後の構成(VPC オリジン)
| リソース | 用途 |
|---|---|
| VPC | パブリックサブネット × 2、プライベートサブネット × 2 |
| ALB(Internal) | プライベートサブネットに配置 |
| EC2 インスタンス | プライベートサブネットに配置 |
| CloudFront | VPC オリジンをオリジンとして設定 |
| VPC オリジン | CloudFront から Internal ALB へのプライベート接続を提供 |
動作:
| アクセス方法 | 結果 |
|---|---|
| CloudFront 経由 | ✅ 正常に表示 |
| ALB 直接アクセス | ❌ タイムアウト(到達不可) |

移行手順
STEP 1: プライベートサブネットの追加
VPC にプライベートサブネットを追加します。Internal ALB には 2 つの AZ が必要なため、2 つ作成します。
STEP 2: EC2 インスタンスをプライベートサブネットに移動
既存の EC2 インスタンスをプライベートサブネットに移動します。
| 項目 | 値 |
|---|---|
| サブネット | プライベートサブネット |
| パブリック IP の自動割り当て | 無効 |
| セキュリティグループ | 既存の EC2 インスタンス用 SG |
STEP 3: Internal ALB の作成
プライベートサブネットに Internal ALB を作成します。
| 項目 | 値 |
|---|---|
| ロードバランサー名 | demo-internal-alb |
| スキーム | 内部(Internal) |
| VPC | 既存の VPC |
| サブネット | private-subnet-1a, private-subnet-1c |
| セキュリティグループ | 既存の ALB 用 SG |

リスナーとルーティング:
| 項目 | 値 |
|---|---|
| プロトコル | HTTP |
| ポート | 80 |
| デフォルトアクション | 新規ターゲットグループを作成 |

STEP 4: VPC オリジンの作成
CloudFront に VPC オリジンを作成します。
CloudFront コンソール → VPC オリジン → VPC オリジンを作成
| 項目 | 値 |
|---|---|
| 名前 | demo-vpc-origin |
| オリジン ARN | demo-internal-alb の ARN を選択 |
| プロトコル | HTTP のみ |

「VPC オリジンを作成」をクリック後、ステータスが「デプロイ済み」になるまで待ちます(5〜15 分)。
STEP 5: CloudFront のオリジン切り替え
CloudFront のオリジンを VPC オリジンに変更します。
CloudFront コンソール → ディストリビューション → 対象を選択 → オリジンタブ
既存のオリジンを選択し「編集」
以下を変更
| 項目 | 変更内容 |
|---|---|
| オリジンドメイン | VPC origins から demo-vpc-origin を選択 |
| カスタムヘッダー | 削除(VPC オリジンでは不要) |
「変更を保存」をクリック
デプロイが完了するまで待ちます(3〜5 分)。
編集前

編集後

STEP 6: 動作確認
| 確認項目 | 期待する結果 |
|---|---|
| CloudFront 経由 | ✅ 正常に表示 |
| Internal ALB 直接 | ❌ タイムアウト(到達不可) |
Internal ALB はプライベートサブネットにあるため、インターネットから DNS 名でアクセスしてもタイムアウトになります。
Cloudfront 経由の結果

ALBに直接アクセスした際の結果

STEP 7: 旧リソースの削除
移行完了後、不要になったリソースを削除します。
削除対象:
- 旧パブリック ALB
- 旧ターゲットグループ
補足:本番環境での推奨設定
今回は検証のため簡易的な設定で行いましたが、本番環境では以下を推奨します。
HTTPS の設定
| 項目 | 推奨設定 |
|---|---|
| VPC オリジンのプロトコル | HTTPS のみ |
| ALB | HTTPS リスナー + ACM 証明書を設定 |
セキュリティグループの設定
Internal ALB のセキュリティグループに、CloudFront マネージドプレフィックスリストを設定することで、より厳密にアクセスを制限できます。
おわりに
カスタムヘッダー方式から VPC オリジンに移行しました。
VPC オリジンを使うことで、ALB と EC2 インスタンスをプライベートサブネットに配置し、よりセキュアな構成を実現できました。参考になれば幸いです。
参考資料
クラスメソッドオペレーションズ株式会社について
クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。※2026年1月 アノテーション㈱から社名変更しました







