1. 概要
- CloudFront 経由で配信されるプライベートコンテンツへのアクセスを制限するための機能。
- リクエストに対して暗号的に署名されたポリシー情報を利用して、特定のユーザーや条件に基づいてコンテンツ配信を制御する。
- 署名付き Cookie は、複数のオブジェクト(例:会員専用ページ全体、動画の各セグメントなど)に対して一括してアクセス制御を行いたい場合に有用で、URL を変更せずに認証情報を保持できるのが特徴。
2. 用途
-
複数オブジェクトの一括制御
・会員専用コンテンツやストリーミング動画など、個別に URL を発行するのではなく、まとめて制限したい場合に利用 -
URL の変更を避けたい場合
・ユーザーに発行する URL を固定のままで、内部的に Cookie でアクセス制御を実現するため -
ブラウザなど、Cookie が利用可能なクライアント向け
・署名付き Cookie はクライアント側で自動的に送信されるため、Web ブラウザ向けに適している
3. 署名付きURLと署名付きCookieの比較
項目 | 署名付き URL | 署名付き Cookie | 補足・選択のポイント |
---|---|---|---|
対象コンテンツ数 | ・1つのオブジェクト(個別のファイル)に対して発行 | ・複数のオブジェクト(ディレクトリ全体や複数ファイル)に対して有効 | 多数のファイルをまとめて制御する場合は署名付き Cookie が有効 |
URL の変化 | ・URL に署名パラメータ(Expires、Signature、Key-Pair-Id)が付与される | ・Cookie に署名情報がセットされ、URL はそのまま(変更されない) | URL を固定したい場合は署名付き Cookie を選択 |
実装の簡易さ | ・シンプルにURLに署名パラメータを付加するだけで生成可能 | ・3種類の Cookie(Policy、Signature、Key-Pair-Id)を生成・管理する必要あり | 個別ファイルなら署名付き URL、複数コンテンツなら署名付き Cookie |
クライアント要件 | ・Cookie をサポートしていないクライアントでも利用可能 | ・ブラウザなどCookieを保持できるクライアント向け | クライアントの仕様に合わせた選択が必要 |
セキュリティ・柔軟性 | ・既定またはカスタムポリシーにより、アクセス有効期限などを指定可能 | ・同様のポリシーに加え、複数オブジェクトに対して一括して適用可能 | 複雑なアクセス制御やIP制限などを行いたい場合、カスタムポリシーで署名付き Cookie が有効 |
4. 仕組み
署名付き Cookie を利用する流れは以下のとおり。
-
キーペアの作成
・秘密鍵と公開鍵のペアを作成し、公開鍵をCloudFront にアップロードする -
Cookie の生成
・アプリケーション側で、アクセス制限条件(有効期限、対象リソース、場合により IP 制限など)を含むポリシーを作成
・秘密鍵を使い、このポリシーに対して署名を行い、3 つの Cookie(CloudFront-Policy、CloudFront-Signature、CloudFront-Key-Pair-Id)を生成し、ユーザーのブラウザへ送信 -
リクエスト時の検証
・ユーザーのブラウザは、Cookie をリクエストヘッダーに含めて CloudFront へアクセスする
・CloudFront は、設定されたキーグループのパブリックキーを用いて署名を検証し、ポリシーが有効かどうかを確認する
・有効な場合、リクエストされたコンテンツを返す
(署名付きURLの場合)