ファイルへのアクセスを制限する - Amazon CloudFront

ファイルへのアクセスを制限する

プライベートコンテンツへのユーザーアクセスは 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 がオリジンに転送するカスタムヘッダーをローテーションすることをお勧めします。

  1. CloudFront ディストリビューションを更新して、カスタムオリジンへの新しいヘッダーの転送を開始します。

  2. アプリケーションを更新して、リクエストが CloudFront からのものであることの確認として新しいヘッダーを受け入れます。

  3. 置き換えるヘッダーが今後リクエストに含まれないようにする場合は、アプリケーションを更新して、リクエストが CloudFront からのものであることの確認として古いヘッダーを受け入れないようにします。