ファイルへのアクセスを制限する
プライベートコンテンツへのユーザーアクセスは 2 つの方法を使用して制御可能です。
-
次のいずれかを実行して、オリジン内のファイルへのアクセスを制限します。
CloudFront キャッシュ内のファイルへのアクセスを制限する
ユーザーがファイルにアクセスする際に、署名付き URL または署名付き Cookie の使用が求められるように CloudFront を設定することができます。次に、署名付き URL を作成して認証されたユーザーに配信するか、認証されたユーザーの署名付き Cookie を設定する Set-Cookie
ヘッダーを送信するアプリケーションを開発します (少数のファイルへの長期的なアクセスを数人のユーザーに付与するために、署名付き URL を手動で作成することもできます)。
ファイルへのアクセスを制御するための署名付き URL または署名付き Cookie を作成するときに、次の制限を指定できます。
-
最終日時。この日時以降、URL が有効ではなくなります。
-
(オプション) URL が有効になる日時。
-
(オプション) コンテンツへのアクセスに使用可能なコンピュータの IP アドレスまたはアドレス範囲。
署名付き URL または署名付き Cookie では、パブリックとプライベートのキーペアのプライベートキーを使用して、一部がハッシュ化され、署名が行われます。ユーザーが署名付き URL や署名付き Cookie を使用してファイルにアクセスすると、CloudFront は URL や Cookie の署名部分と無署名部分を比較します。これらが一致しない場合、CloudFront はファイルを供給しません。
URL または Cookie の署名には、RSA-SHA1 を使用する必要があります。CloudFront では他のアルゴリズムを使用できません。
Amazon S3 バケット内のファイルへのアクセスを制限する
オプションで、Amazon S3 バケット内のコンテンツを保護することで、ユーザーが指定された CloudFront ディストリビューションを介してアクセスできても、Amazon S3 URL を使用して直接アクセスすることはできないように設定できます。これにより、アクセスを制限するコンテンツについては、CloudFront のバイパスと Amazon S3 URL の使用による取得を防止できます。署名付き URL を使用するためにこの手順を実行する必要はありませんが、推奨します。
CloudFront URL を使用してコンテンツにアクセスすることをユーザーに要求するには、次のタスクを実行します。
-
CloudFront に、S3 バケット内のファイルを読み取るオリジンアクセスコントロールアクセス許可を付与します。
-
オリジンアクセスコントロールを作成し、CloudFront ディストリビューションに関連付けます。
-
Amazon S3 URL を使用してファイルを読み取るためのアクセス許可を、他のすべてのユーザーから削除します。
詳細については、「Amazon Simple Storage Service オリジンへのアクセスを制限する」を参照してください。
カスタムオリジンのファイルへのアクセスを制限する
カスタムオリジンを使用する場合は、カスタムヘッダーをオプションで設定して、アクセスを制限できます。CloudFront がカスタムオリジンからファイルを取得するには、標準の HTTP (または HTTPS) リクエストを使用して CloudFront からファイルにアクセスできる必要があります。しかし、カスタムヘッダーを使用することで、コンテンツへのアクセスをさらに制限して、ユーザーが直接アクセスするのではなく CloudFront を通してのみアクセスできるようにすることができます。署名付き URL を使用するためにこの手順を実行する必要はありませんが、推奨します。
ユーザーに CloudFront を経由してコンテンツにアクセスするよう要求するには、CloudFront ディストリビューションで次の設定を変更します。
- オリジンのカスタムヘッダー
カスタムヘッダーがオリジンに転送されるように CloudFront を設定します。「オリジンリクエストにカスタムヘッダーを追加するように CloudFront を設定する」を参照してください。
- ビューワープロトコルポリシー
ビューワーから CloudFront へのアクセス時に HTTPS の使用が求められるようにディストリビューションを設定します。「ビューワープロトコルポリシー」を参照してください。
- オリジンプロトコルポリシー
CloudFront がリクエストをオリジンに転送する際にビューワーと同じプロトコルの使用が求められるように、ディストリビューションを設定します。「プロトコル (カスタムオリジンのみ)」を参照してください。
これらの変更を行った後、CloudFront で送信するように設定したカスタムヘッダーを含むリクエストのみを受け入れるように、カスタムオリジンでアプリケーションを更新します。
ビューワープロトコルポリシーとオリジンプロトコルポリシーの組み合わせにより、カスタムヘッダーが転送中に暗号化されます。ただし、定期的に以下を実行して、CloudFront がオリジンに転送するカスタムヘッダーをローテーションすることをお勧めします。
CloudFront ディストリビューションを更新して、カスタムオリジンへの新しいヘッダーの転送を開始します。
アプリケーションを更新して、リクエストが CloudFront からのものであることの確認として新しいヘッダーを受け入れます。
置き換えるヘッダーが今後リクエストに含まれないようにする場合は、アプリケーションを更新して、リクエストが CloudFront からのものであることの確認として古いヘッダーを受け入れないようにします。