はじめに
SAP取得に猛勉強中です。
何度か模擬試験解いてみて、何度も間違っていた内容について知識整理含めて投稿しようと思います。
概要
- CloudFrontから配信しているコンテンツについて、特定地域のユーザーからのアクセスを制限することができる。
- 国レベルの制限はもちろん、より細かい制限をすることも可能。
- 設定方法は2通り
地域制限方法
CloudFrontの地域制限
通常CloudFrontは、アクセス元のユーザがどこに居ようと関係なくコンテンツを提供する。
特定の国のユーザーからのアクセス制限したい場合に、この地域制限を使用する。
- 許可された国のリストに含まれている国のユーザ -> 許可
- ブロックリストの禁止国にいるユーザ -> 拒否
拒否した場合は403(Forbidden)が返されるが、カスタムエラーメッセージを設定することも可能。
エラーレスポンスのキャッシュが可能で、キャッシュする時間を指定できる(デフォルト10秒)
※CloudFrontは、サードパーティのデータベースを使用して、ユーザーのアクセス元を判別する。(GeoIP)
IPアドレスと国のマッピングの正確性は99.8%。
- 地域制限はディストリビューション全体に適用される。
- コンテンツの一部に別の制限を適用したい場合
- 別々のCloudFrontディストリビューションを作成する
- サードパーティの位置情報サービスを使用する
サードパーティの位置情報サービス
CloudFrontの地域制限は国レベルでディストリビューション全体に適用される。
地域制限が国境と一致していない場合や、配信するファイルの一部のみアクセスを制限したい場合は、CloudFrontとサードパーティーの位置情報サービスを組み合わせることで、都市・郵便番号・緯度/経度に基づいてアクセス制限が可能。
- 位置情報サービスを使用する場合は、有効期限の日時を指定できるCloudFront署名付きURLの使用を推奨している。オリジンはS3バケットを推奨。
-> CloudFrontのオリジンアクセスコントロールを使用することで、ユーザがオリジンへ直接アクセスすることを回避するため。 - ユーザがIPアドレスを位置情報サービスに送信し、レスポンス値を評価してCloudFrontで許可/拒否しているか判別する。
- 許可された国のリストに含まれている国のユーザ -> 署名付きURLを生成する。
- ブロックリストの禁止国にいるユーザ -> 拒否
拒否した場合は403(Forbidden)が返されるが、カスタムエラーメッセージを設定することも可能。
エラーレスポンスのキャッシュが可能で、キャッシュする時間を指定できる(デフォルト10秒)
試験対策
間違えやすい回答
- CloudFrontディストリビューションを利用してオリジンサーバの設定で地域制限する。
-> オリジンサーバではなく、エッジロケーションの機能 - Route53を利用した地理的近接性ルーティングで地域制限する。
-> ユーザとコンテンツの地理的場所に基づいてルーティングするので、地域制限とは用途が違うので間違い。
最後に
CloudFrontとLambda@Edgeを組み合わせて地域制限的なことって可能なのか。。。(頑張ればできそう・・・?)
参考サイト