VPC オリジンを使用したアクセス制限
CloudFront を使用して、仮想プライベートクラウド (VPC) のプライベートサブネットでホストされているアプリケーションからコンテンツを配信できます。プライベートサブネットの Application Load Balancer (ALB)、Network Load Balancer (NLB)、EC2 インスタンスを VPC オリジンとして使用できます。
VPC オリジンを使用する理由は以下のとおりです。
-
セキュリティ – VPC オリジンは、ロードバランサーと EC2 インスタンスをプライベートサブネットに配置し、CloudFront を単一のエントリポイントにすることで、アプリケーションのセキュリティ体制を強化するように設計されています。ユーザーリクエストは、プライベートで安全な接続を介して CloudFront から VPC オリジンに送信され、アプリケーションのセキュリティを強化します。
-
管理 – VPC オリジンは、CloudFront とオリジンの間の安全な接続に必要な運用オーバーヘッドを削減します。オリジンをパブリックアクセスのないプライベートサブネットに移動できます。オリジンへのアクセスを制限するためのアクセスコントロールリスト (ACL) やその他のメカニズムを実装する必要はありません。これにより、差別化につながらない開発作業に投資する必要なく、CloudFront でウェブアプリケーションを保護できます。
-
スケーラビリティとパフォーマンス – VPC オリジンは、ウェブアプリケーションを保護するのに役立ちます。CloudFront でセキュリティを向上させ、ハイパフォーマンスとグローバルスケーラビリティを維持しながら、重要なビジネスアプリケーションの育成に時間を集中できます。VPC オリジンは、セキュリティ管理を合理化し、運用の複雑さを軽減するため、CloudFront をアプリケーションの単一のエントリポイントとして使用できます。
前提条件
CloudFront ディストリビューションの VPC オリジンを作成する前に、以下のことを完了する必要があります。
-
Amazon VPC 上に仮想プライベートクラウド (VPC) を作成します。
-
VPC は CloudFront ディストリビューションと同じ AWS アカウントに存在する必要があります。
-
VPC は、VPC オリジンでサポートされている AWS リージョンのいずれかに存在する必要があります。詳細については、「VPC オリジンでサポートされている AWS リージョン」を参照してください。
VPC サブネットに関連付けられたネットワーク ACL は、VPC オリジンでクライアント IP アドレスの保存が有効になっている場合、エグレス (アウトバウンド) トラフィックに適用されます。ただし、トラフィックを VPC オリジン経由で終了できるようにするには、ACL をインバウンドルールとアウトバウンドルールの両方として設定する必要があります。
例えば、エフェメラルソースポートを使用して TCP および UDP クライアントが VPC オリジンを介してエンドポイントに接続できるようにするには、エンドポイントのサブネットを、エフェメラル TCP または UDP ポート (ポート範囲 1024-65535、宛先 0.0.0.0/0) 宛てのアウトバウンドトラフィックを許可するネットワーク ACL に関連付けます。さらに、一致するインバウンドルール (ポート範囲 1024-65535、ソース 0.0.0.0/0) を作成します。
VPC の作成の詳細については、「Amazon VPC ユーザーガイド」の「VPC と他の VPC リソースを作成する」を参照してください。
-
-
VPC には以下を含めます。
-
インターネットゲートウェイ – VPC オリジンリソースを持つ VPC にインターネットゲートウェイを追加する必要があります。インターネットゲートウェイは VPC がインターネットからトラフィックを受信できることを示すために必要です。インターネットゲートウェイは、サブネット内のオリジンへのトラフィックのルーティングには使用されないため、ルーティングポリシーを更新する必要はありません。
-
少なくとも 1 つの利用可能な IPv4 アドレスを持つプライベートサブネット – CloudFront は、プライベートオリジン CloudFront リソースの定義後に CloudFront で作成したサービスマネージド Elastic Network Interface (ENI) を使用してサブネットにルーティングします。ENI 作成プロセスを成功させるには、プライベートサブネットに少なくとも 1 つの利用可能な IPv4 アドレスが必要です。IPv4 アドレスはプライベートにすることができます。追加料金はかかりません。
注記
IPv6 専用サブネットはサポートされていません。
-
-
プライベートサブネットで、オリジンとして使用する Application Load Balancer、Network Load Balancer、または EC2 インスタンスを起動します。
-
起動するリソースは、VPC オリジンとして使用する前に、完全にデプロイ済みで、[アクティブ] ステータスになっている必要があります。
-
Gateway Load Balancers、デュアルスタックの Network Load Balancer および TLS リスナーを備えた Network Load Balancer をオリジンとして追加することはできません。
-
VPC オリジンとして使用する Network Load Balancer には、セキュリティグループをアタッチする必要があります。
VPC プライベートオリジンのセキュリティグループを更新して、CloudFront マネージドプレフィックスリストを明示的に許可します。詳細については、「CloudFront マネージドプレフィックスリストを使用」を参照してください。
-
VPC オリジンの作成後に、VPC オリジンからのトラフィックのみを許可するようにセキュリティグループをさらに制限できます。これを行うには、許可されたトラフィックソースをマネージドプレフィックスリストから CloudFront セキュリティグループに更新します。
注記
CloudFront の Lambda@Edge を使用した WebSocket、gRPC トラフィック、オリジンリクエスト、オリジンレスポンストリガーは、VPC オリジンではサポートされていません。詳細については、Lambda@Edge ドキュメントの「リクエストとレスポンスを使用する」を参照してください。
-
-
VPC オリジンを作成する (新しいディストリビューション)
次の手順は、CloudFront コンソールで新しい CloudFront ディストリビューションの VPC オリジンを作成する方法を示しています。別の方法として、AWS CLI または AWS SDK で CreateVpcOrigin および CreateDistribution API オペレーションを使用することもできます。
新しい CloudFront ディストリビューションの VPC オリジンを作成するには
CloudFront コンソール (https://console.aws.amazon.com/cloudfront/v4/home
) を開きます。 -
[VPC オリジン]、[VPC オリジンを作成] の順に選択します。
-
必須フィールドに入力します。[オリジン ARN] で、Application Load Balancer、Network Load Balancer、または EC2 インスタンスの ARN を選択します。ARN が表示されない場合は、代わりに特定のリソースの ARN をコピーして、ここに貼り付けることができます。
-
[VPC オリジンを作成] を選択します。
-
VPC オリジンのステータスが [デプロイ済み] に変わるまで待ちます。これには最大 15 分かかることがあります。
-
[ディストリビューション]、[ディストリビューションを作成] の順に選択します。
-
[オリジンドメイン] で、ドロップダウンリストから VPC オリジンリソースを選択します。
VPC オリジンが EC2 インスタンスの場合は、インスタンスのプライベート IP DNS 名をコピーして [オリジンドメイン] フィールドに貼り付けます。
-
ディストリビューションの作成を完了します。詳細については、「コンソールに CloudFront ディストリビューションを作成する」を参照してください。
VPC オリジンを作成する (既存のディストリビューション)
次の手順では、CloudFront コンソールで既存の CloudFront ディストリビューションの VPC オリジンを作成する方法を示します。これにより、アプリケーションの継続的な可用性を確保できます。別の方法として、AWS CLI または AWS SDK で CreateVpcOrigin および UpdateDistributionWithStagingConfig API オペレーションを使用することもできます。
必要に応じて、ステージングディストリビューションを作成せずに、VPC オリジンを既存のディストリビューションに追加することもできます。
既存の CloudFront ディストリビューションの VPC オリジンを作成するには
CloudFront コンソール (https://console.aws.amazon.com/cloudfront/v4/home
) を開きます。 -
[VPC オリジン]、[VPC オリジンを作成] の順に選択します。
-
必須フィールドに入力します。[オリジン ARN] で、Application Load Balancer、Network Load Balancer、または EC2 インスタンスの ARN を選択します。ARN が表示されない場合は、代わりに特定のリソースの ARN をコピーして、ここに貼り付けることができます。
-
[VPC オリジンを作成] を選択します。
-
VPC オリジンのステータスが [デプロイ済み] に変わるまで待ちます。これには最大 15 分かかることがあります。
-
ナビゲーションペインで、[ディストリビューション] を選択します。
-
ディストリビューションの ID を選択します。
-
[全般] タブの [継続的デプロイ] で、[ステージングディストリビューションを作成] を選択します。詳細については、「CloudFront の継続的デプロイを使用して CDN 設定の変更を安全にテストする」を参照してください。
-
[ステージングディストリビューションを作成] ウィザードの手順に従って、ステージングディストリビューションを作成します。以下のステップを実行します。
-
[オリジン] で、[オリジンを作成] を選択します。
-
[オリジンドメイン] で、ドロップダウンメニューから VPC オリジンリソースを選択します。
VPC オリジンが EC2 インスタンスの場合は、インスタンスのプライベート IP DNS 名をコピーして [オリジンドメイン] フィールドに貼り付けます。
-
[オリジンを作成] を選択します。
-
-
ステージングディストリビューションで、VPC オリジンをテストします。
-
ステージングディストリビューション設定をプライマリディストリビューションに昇格させます。詳細については、「ステージングディストリビューション設定を昇格させる」を参照してください。
-
サブネットをプライベートにして、VPC オリジンへのパブリックアクセスを削除します。これを行うと、VPC オリジンはインターネット経由で検出できなくなりますが、CloudFront は引き続きプライベートアクセスを保持します。詳細については、「Amazon VPC ユーザーガイド」の「サブネットをルートテーブルに関連付けるまたは関連付けを解除する」を参照してください。
VPC オリジンを更新する
次の手順は、CloudFront コンソールで CloudFront ディストリビューションの VPC オリジンを更新する方法を示しています。別の方法として、AWS CLI または AWS SDK で UpdateDistribution および UpdateVpcOrigin API オペレーションを使用することもできます。
CloudFront ディストリビューションの既存の VPC オリジンを更新するには
https://console.aws.amazon.com/cloudfront/v4/home
で CloudFront コンソールを開きます。 -
ナビゲーションペインで、[ディストリビューション] を選択します。
-
ディストリビューションの ID を選択します。
-
[Behaviors] タブを選択します。
-
VPC オリジンがキャッシュ動作のデフォルトオリジンではないことを確認します。
-
[オリジン] タブを選択します。
-
更新する VPC オリジンを選択し、[削除] を選択します。これにより、VPC オリジンとディストリビューションの関連付けが解除されます。ステップ 2~7 を繰り返して、VPC オリジンと他のディストリビューションとの関連付けを解除します。
-
[VPC オリジン] を選択します。
-
VPC オリジンを選択し、[編集] を選択します。
-
更新を行い、[VPC オリジンを更新] を選択します。
-
VPC オリジンのステータスが [デプロイ済み] に変わるまで待ちます。これには最大 15 分かかることがあります。
-
ナビゲーションペインで、[ディストリビューション] を選択します。
-
ディストリビューションの ID を選択します。
-
[オリジン] タブを選択します。
-
[オリジンを作成] を選択します。
-
[オリジンドメイン] で、ドロップダウンメニューから VPC オリジンリソースを選択します。
VPC オリジンが EC2 インスタンスの場合は、インスタンスのプライベート IP DNS 名をコピーして [オリジンドメイン] フィールドに貼り付けます。
-
[オリジンを作成] を選択します。これにより、VPC オリジンがディストリビューションに再度関連付けられます。ステップ 12~17 を繰り返して、更新した VPC オリジンを他のディストリビューションと関連付けます。
VPC オリジンでサポートされている AWS リージョン
現在、VPC オリジンは以下の商用 AWS リージョンでサポートされています。アベイラビリティーゾーン (AZ) の例外を注記しています。
リージョン名 | リージョン |
---|---|
米国東部(オハイオ) | us-east-2 |
米国東部 (バージニア北部) | us-east-1 (except AZ
use1-az3) |
米国西部 (北カリフォルニア) | us-west-1 (except AZ
usw1-az2) |
米国西部 (オレゴン) | us-west-2 |
アフリカ (ケープタウン) | af-south-1 |
アジアパシフィック (香港) | ap-east-1 |
アジアパシフィック (ムンバイ) | ap-south-1 |
アジアパシフィック (ハイデラバード) | ap-south-2 |
アジアパシフィック (ジャカルタ) | ap-southeast-3 |
アジアパシフィック (メルボルン) | ap-southeast-4 |
アジアパシフィック (大阪) | ap-northeast-3 |
アジアパシフィック (シンガポール) | ap-southeast-1 |
アジアパシフィック (シドニー) | ap-southeast-2 |
アジアパシフィック (東京) | ap-northeast-1 (except AZ
apne1-az3) |
アジアパシフィック (ソウル) | ap-northeast-2 (except AZ
apne2-az1) |
カナダ (中部) | ca-central-1 (except AZ
cac1-az3) |
カナダ西部 (カルガリー) | ca-west-1 |
欧州 (フランクフルト) | eu-central-1 |
欧州 (アイルランド) | eu-west-1 |
欧州 (ロンドン) | eu-west-2 |
欧州 (ミラノ) | eu-south-1 |
欧州 (パリ) | eu-west-3 |
欧州 (スペイン) | eu-south-2 |
欧州 (ストックホルム) | eu-north-1 |
欧州 (チューリッヒ) | eu-central-2 |
イスラエル (テルアビブ) | il-central-1 |
中東 (バーレーン) | me-south-1 |
中東 (アラブ首長国連邦) | me-central-1 |
南米 (サンパウロ) | sa-east-1 |