概要

ジオブロッキングポリシーは、禁輸国に関する規制に準拠するためや、ウェブアプリケーションにストリーミング権がない国でのビデオストリーミングのブロックなど、さまざまな理由でウェブアプリケーションに実装されています。

一般的ユースケース

ジオブロッキングは、CloudFront 固有の地理的制限、エッジ機能、または AWS WAF を使用して実装できます。それぞれの方法では、マッチングの細分性、カスタマイズ可能なロジック、価格レベルが異なります。CloudFront が最初に地理的制限ルールを評価し、次に AWS WAF がジオマッチングルールを評価し、最後にエッジ関数を実行してコード内のジオブロッキングロジックを評価するという前提で、メソッドを組み合わせることもできます。CloudFront と AWS WAF は、サードパーティのデータベースを使用してユーザーの場所を特定することに注意してください。IP アドレスと国間のマッピングの精度は、地域によって異なります。

AWS エッジサービスを使用したジオブロッキング

CloudFront のシンプルでグローバルな地域制限

CloudFront の地理的制限を使用すると、追加料金なしで配信レベルで国を制限できます。CloudFront ディストリビューションが受信するすべてのリクエストに適用される特定の国のセットを許可またはブロックできます。設定された地理的制限によって制限されている視聴者には、CloudFront から 403 Forbidden というレスポンスが返されます。CloudFront のカスタムエラーページを使用すると、わかりやすいエラーページを表示できます。

CloudFront 関数を使用した高度なジオブロッキングロジック

ビューワーのリクエストイベントに応じて設定された CloudFront Functions を使用して、javascript を使用して高度なジオブロッキングロジックを実装します。CloudFront Functions は特定の CloudFront キャッシュ動作 (例:/api/ * パス) で細かく使用でき、ロジックをコード内でより細かくしたり、認証などの他のアクセス制御ロジックと組み合わせたりできます。CloudFront 関数に地理ベースのロジックを実装するには、関数が関連付けられているのと同じ CloudFront キャッシュ動作にアタッチされたオリジンリクエストポリシーに必要な CloudFront ヘッダー (例:CloudFront-Viewer Country または CloudFront-Viewer Country-Region) を一覧表示できるようにする必要があります。

以下のサンプル CloudFront Function は、ウクライナのドネツク (14) またはルハンシク (9) 地域の視聴者をブロックします。

function handler(event) {
  var request = event.request;
  var country = request.headers['cloudfront-viewer-country'];
  var region = request.headers['cloudfront-viewer-country-region'];

  if (country && country.value === 'UA' && region && (region.value === '9' || region.value === '14')) {
    return {
      statusCode: 403,
      statusDescription: 'Forbidden',
    };
  }
  return request;
}

リソース

このページはお役に立ちましたか?