メニュー
Amazon CloudFront
開発者ガイド (API Version 2016-09-29)

CloudFront を使用してプライベートコンテンツを供給する

インターネットを通じてコンテンツを配信する多くの企業が、選ばれたユーザー(料金を支払っているユーザーなど)のドキュメント、ビジネスデータ、メディアストリーム、またはコンテンツに対して、アクセスを制限する必要があると考えています。CloudFront を使用してこのプライベートコンテンツを安全に供給するには、以下の方法を使用できます。

  • 特別な CloudFront 署名付き URL または署名付き Cookie を使用してプライベートコンテンツにアクセスするようユーザーに要求します。

  • Amazon S3 コンテンツへのアクセスにユーザーが Amazon S3 URL ではなく CloudFront URL を使用するよう要求します。CloudFront URL を要求することは必須ではありませんが、ユーザーが署名付き URL や署名付き Cookie で指定された制限をバイパスすることを防ぐため、この方法をお勧めします。

プライベートコンテンツの概要

プライベートコンテンツへのユーザーアクセスは、次の図に示されているように 2 つの方法で制御できます。

  1. CloudFront エッジキャッシュ内のオブジェクトへのアクセス制限

  2. Amazon S3 バケット内のオブジェクトへのアクセス制限

アクセスログの基本フロー

CloudFront エッジキャッシュ内のオブジェクトへのアクセス制限

ユーザーがオブジェクトにアクセスする際に、署名付き URL または署名付き Cookie の使用が求められるように CloudFront を設定することができます。次に、署名付き URL を作成して認証されたユーザーに配信するか、認証されたユーザーのビューアで署名付き Cookie を設定する Set-Cookie ヘッダーを送信するアプリケーションを開発します(限られた数のオブジェクトへの長期的なアクセスを数人のユーザーに付与するために、署名付き URL を手動で作成することもできます)。

オブジェクトへのアクセスを制御するための署名付き URL または署名付き Cookie を作成するときに、次の制限を指定できます。

  • 最終日時。この日時以降、URL が有効ではなくなります。

  • (オプション)URL が有効になる日時。

  • (オプション)コンテンツへのアクセスに使用可能なコンピューターの IP アドレスまたはアドレス範囲。

署名付き URL または署名付き Cookie の 1 つのパートは、パブリック/プライベートキーペアのプライベートキーを使用してハッシュ化および署名されます。ユーザーが署名付き URL や署名付き Cookie を使用してオブジェクトにアクセスすると、CloudFront は URL や Cookie の署名部分と無署名部分を比較します。これらが一致しない場合、CloudFront はオブジェクトを供給しません。

Amazon S3 バケット内のオブジェクトへのアクセス制限

オプションで、Amazon S3 バケット内のコンテンツを保護することで、ユーザーが CloudFront を介してアクセスできても、Amazon S3 URL を使用して直接アクセスすることはできないように設定できます。これにより、アクセスを制限しようとしているコンテンツを、ユーザーが CloudFront をバイパスし、Amazon S3 URL を使用して取得することを防止できます。署名付き URL を使用するためにこの手順を実行する必要はありませんが、推奨します。

CloudFront URL を使用してコンテンツにアクセスすることをユーザーに要求するには、次のタスクを実行します。

  • オリジンアクセスアイデンティティと呼ばれる特別な CloudFront ユーザーを作成します。

  • バケット内のオブジェクトの読み取り許可をオリジンアクセスアイデンティティに与えます。

  • 他のユーザーに与えられている、Amazon S3 URL を使用してそれらのオブジェクトを読み取るためのアクセス権限を削除します。

プライベートコンテンツ用の HTTP サーバーの使用

オリジンが Amazon S3 バケットまたは HTTP サーバーのどちらであるかに関係なく、あらゆる CloudFront ディストリビューションで署名付き URL または署名付き Cookie を使用できます。ただし、CloudFront で HTTP サーバーからオブジェクトを取得するには、オブジェクトがパブリックにアクセス可能な状態で維持されている必要があります。オブジェクトがパブリックにアクセス可能である場合、HTTP サーバーのオブジェクトの URL を知っているユーザーは、ログインしたり、コンテンツの料金を支払ったりすることなく、オブジェクトにアクセスできます。署名付き URL や署名付き Cookie を使用し、オリジンが HTTP サーバーの場合は、HTTP サーバーのオブジェクトの URL をカスタマーまたは組織外部のユーザーに提供しないでください。