翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
コンテンツの地理的ディストリビューションの制限
地理的制限 は、地理的ブロッキング とも呼ばれ、特定の地理的場所のユーザーが Amazon CloudFront ディストリビューションを通じて配信するコンテンツにアクセスできないようにすることができます。地理的制限を使用するには、次の 2 つの方法があります。
-
CloudFront 地理的制限機能を使用します。ディストリビューションに関連するすべてのファイルへのアクセスを制限し、国レベルでアクセスを制限する場合は、この方法を使用します。
-
サードパーティーの位置情報サービスを使用する。ディストリビューションに関連するファイルのサブセットへのアクセスを制限する場合や、国レベルより詳細なレベルでアクセスを制限する場合は、この方法を使用します。
CloudFront 地理的制限の使用
ユーザーがコンテンツをリクエストすると、 CloudFront は通常、ユーザーがいる場所に関係なく、リクエストされたコンテンツを提供します。特定の国のユーザーがコンテンツにアクセスできないようにする必要がある場合は、 CloudFront 地理的制限機能を使用して次のいずれかを実行できます。
-
承認された国の許可リストに含まれているいずれかの国にユーザーがいる場合のみ、コンテンツへのアクセス許可を付与する。
-
ユーザーが拒否リストにある禁止国にいる場合、コンテンツへのアクセスを禁止する。
例えば、コンテンツの配信が許可されていない国からリクエストが送信された場合は、 CloudFront 地理的制限を使用してリクエストをブロックできます。
注記
CloudFront は、サードパーティーのデータベースを使用してユーザーの場所を決定します。IP アドレスと国とのマッピングの正確さは、リージョンによって異なります。最近のテストによれば、全体的な正確性は 99.8% です。 CloudFront がユーザーの場所を特定できない場合、 はユーザーがリクエストしたコンテンツ CloudFront を提供します。
地理的制限は次のような仕組みになっています。
-
仮に、コンテンツをリヒテンシュタインでのみ配信する権限を持っているとしましょう。ディスCloudFront トリビューションを更新して、リヒテンシュタインのみを含む許可リストを追加します。(または、リヒテンシュタイン以外のすべての国を含む拒否リストを追加することもできます)。
-
Monaco のユーザーはコンテンツをリクエストし、DNS はリクエストをイタリアのミラノの CloudFront エッジロケーションにルーティングします。
-
ミラノのエッジロケーションはお客さまのディストリビューションを検索し、モナコ王国のユーザーはコンテンツをダウンロードするアクセス許可がないと判断します。
-
CloudFront は HTTP ステータスコードをユーザーに返
403 (Forbidden)
します。
オプションで、カスタムエラーメッセージをユーザーに返す CloudFront ように を設定できます。また、リクエストされたファイルのエラーレスポンスをキャッシュ CloudFront する期間を指定できます。デフォルト値は 10 秒です。詳細については、「特定の HTTP ステータスコードに対応するカスタムエラーページの作成」を参照してください。
地理的制限はディストリビューション全体に適用されます。コンテンツの一部に 1 つの制限を適用し、コンテンツの別の部分に別の制限を適用する (または制限を適用しない) 必要がある場合は、別の CloudFront ディストリビューションを作成するか、サードパーティーの位置情報サービスを使用する必要があります。
CloudFront 標準ログ (アクセスログ) を有効にすると、 sc-status
(HTTP ステータスコード) の値が であるログエントリを検索して、 CloudFront 拒否されたリクエストを特定できます403
。ただし、標準ログのみを使用して、ユーザーの場所に基づいて拒否された CloudFrontリクエストと、別の理由でファイルにアクセスするアクセス許可がユーザーになかったために CloudFront 拒否されたリクエストを区別することはできません。Digital Element や などのサードパーティーの位置情報サービスを使用している場合は MaxMind、アクセスログの c-ip
(クライアント IP) 列の IP アドレスに基づいてリクエストの場所を特定できます。 CloudFront 標準ログの詳細については、「」を参照してください標準ログ (アクセスログ) の設定および使用。
次の手順では、 CloudFront コンソールを使用して既存のディストリビューションに地理的制限を追加する方法について説明します。コンソールを使用してディストリビューションを作成する方法の詳細については、「ディストリビューションの作成」を参照してください。
CloudFront ウェブディストリビューションに地理的制限を追加するには (コンソール)
にサインインAWS Management Consoleし、 で CloudFront コンソールを開きますhttps://console.aws.amazon.com/cloudfront/v4/home
。 -
ナビゲーションペインで、[ディストリビューション] を選択し、更新するディストリビューションを選択します。
-
[セキュリティ] タブを選択し、[地理的制限] を選択します。
-
[編集] を選択します。
-
許可した国のリストを作成する場合は、許可リスト、またはブロックした国のリストを作成する場合は、ブロックリストを作成します。
-
目的の国をリストに追加し、[Save changes] (変更の保存) を選択します。
サードパーティーの位置情報サービスの使用
CloudFront 地理的制限機能を使用すると、特定のウェブディストリビューションで配信するすべてのファイルについて、コンテンツのディストリビューションを国レベルで制御できます。制限が国の境界に従わない地理的制限のユースケースがある場合、または特定のディストリビューションで処理しているファイルの一部のみにアクセスを制限する場合は、CloudFront サードパーティーの位置情報サービスと組み合わせることができます。これにより、国だけではなく、都市、郵便番号、または緯度/経度に基づいてコンテンツの制御を提供します。
サードパーティーの位置情報サービスを使用する場合は、 CloudFront 署名URLsを使用することをお勧めします。この URL では、URL が有効でなくなるまで、有効期限の日時を指定できます。さらに、オリジン CloudFront アクセスコントロールを使用して、ユーザーがオリジンから直接コンテンツにアクセスできないようにできるため、オリジンとして Amazon S3 バケットを使用することをお勧めします。署名付き URL とオリジンアクセスコントロールの詳細については、「署名付き URL と署名付き Cookie を使用したプライベートコンテンツの提供」を参照してください。
以下のステップは、サードパーティーの位置情報サービスを使用してファイルへのアクセスを制御する方法を説明しています。
サードパーティーの位置情報サービスを使用してディストリビューション内のファイルへのアクセスを制限するには CloudFront
-
位置情報サービスのアカウントを取得します。
-
コンテンツを Amazon S3 バケットにアップロードします。
-
プライベートコンテンツを提供するように Amazon CloudFront と Amazon S3 を設定します。 Amazon S3 詳細については、「署名付き URL と署名付き Cookie を使用したプライベートコンテンツの提供」を参照してください。
-
以下の処理を行うようにウェブアプリケーションを記述します。
-
各ユーザーリクエストの IP アドレスを位置情報サービスに送信します。
-
位置情報サービスからの戻り値を評価して、ユーザーがコンテンツを CloudFront 配信する場所にいるかどうかを判断します。
-
コンテンツをユーザーの場所に配信する場合は、 CloudFront コンテンツの署名付き URL を生成します。コンテンツをその場所に配信しない場合、HTTP ステータスコード
403 (Forbidden)
をユーザーに返します。または、カスタムエラーメッセージを返す CloudFront ように を設定することもできます。詳細については、「特定の HTTP ステータスコードに対応するカスタムエラーページの作成」を参照してください。
詳細については、使用する位置情報サービスのドキュメントを参照してください。
-
ウェブサーバー変数を使用すると、ウェブサイトを訪れたユーザーの IP アドレスを取得できます。次の点に注意してください。
-
ウェブサーバーがインターネットにロードバランサー経由で接続されていない場合、ウェブサーバー変数を使用してリモート IP アドレスを取得できます。ただし、この IP アドレスが必ずしもユーザーの IP アドレスであるとは限りません。ユーザーのインターネットへの接続方法によっては、プロキシサーバーの IP アドレスである可能性もあります。
-
ウェブサーバーがインターネットにロードバランサー経由で接続されている場合、ウェブサーバー変数には、ユーザーの IP アドレスではなく、ロードバランサーの IP アドレスが含まれる可能性があります。この構成では、
X-Forwarded-For
HTTP ヘッダーに含まれる最後の IP アドレスを使用することをお勧めします。通常、このヘッダーには複数の IP アドレスが含まれており、そのほとんどはプロキシまたはロードバランサーの IP アドレスです。ユーザーの地理的な場所に関連付けられている可能性が最も高い IP アドレスは、リストの最後にある IP アドレスです。
ウェブサーバーがロードバランサーに接続されていない場合は、IP アドレスのスプーフィングを回避するために、X-Forwarded-For
ヘッダーではなくウェブサーバー変数を使用することをお勧めします。