0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[AWS]CloudFront 署名付きCookie 概要

Posted at

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 を利用する流れは以下のとおり。

  1. キーペアの作成
    ・秘密鍵と公開鍵のペアを作成し、公開鍵をCloudFront にアップロードする
  2. Cookie の生成
    ・アプリケーション側で、アクセス制限条件(有効期限、対象リソース、場合により IP 制限など)を含むポリシーを作成
    ・秘密鍵を使い、このポリシーに対して署名を行い、3 つの Cookie(CloudFront-Policy、CloudFront-Signature、CloudFront-Key-Pair-Id)を生成し、ユーザーのブラウザへ送信
  3. リクエスト時の検証
    ・ユーザーのブラウザは、Cookie をリクエストヘッダーに含めて CloudFront へアクセスする
    ・CloudFront は、設定されたキーグループのパブリックキーを用いて署名を検証し、ポリシーが有効かどうかを確認する
    ・有効な場合、リクエストされたコンテンツを返す

(署名付きURLの場合)

4. 参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?