CloudFront Signed Cookies は、
「特定ユーザーだけにCloudFront配信コンテンツを見せる」
ための仕組みです。
何を解決したい?
例えば:
- 動画配信
- 有料会員サイト
- 社内サイト
- PDF配布
- e-learning
など。
普通のCloudFront
通常は:
URLを知っていれば誰でも見られる
状態。
Signed Cookieあり
認証済みユーザーだけアクセス可能
になります。
イメージ
ログイン
↓
サーバがCookie発行
↓
ブラウザがCookie保持
↓
CloudFrontへアクセス
↓
CloudFrontがCookie検証
↓
OKなら配信
なぜ「Signed」?
Cookieに:
署名(改ざん防止)
が入っているため。
CloudFrontが:
「AWSが信頼する発行者が作ったCookieか」
を確認します。
Signed URLとの違い
Signed URL
1URLごとに認可
例:
https://example.com/video.mp4?signature=xxxx
Signed Cookie
複数ファイルまとめて認可
例:
/videos/*
全部OK。
つまり
Signed URL向き
単一ファイル
Signed Cookie向き
Webサイト全体
動画サイト
SPA
大量コンテンツ
CloudFrontでどう動く?
CloudFrontがCookieを見ます。
Cookie例:
CloudFront-Policy
CloudFront-Signature
CloudFront-Key-Pair-Id
含まれる情報
例えば:
- 有効期限
- アクセス可能パス
- IP制限
- 署名
など。
認可の流れ
① ユーザー認証
アプリ側でログイン。
② サーバがCookie発行
Node.jsやLambdaなど。
③ ブラウザ保存
自動送信される。
④ CloudFront検証
署名OKなら配信。
重要ポイント
CloudFront自身が:
認可判定
します。
つまり:
毎回Lambdaへ聞かない
ので高速。
よくある構成
User
↓
ALB / API Gateway
↓
認証サーバ
↓ Cookie発行
その後
User
↓
CloudFront
↓
S3
どこで使う?
かなり実務で出ます。
① 動画配信
HLS
mp4
② 会員サイト
PDF
画像
ZIP
③ SPA認可
Reactサイトなど。
Signed Cookieのメリット
① 高速
CloudFront Edgeで認可。
② S3非公開化
直接アクセス禁止。
③ 大量ファイル向き
URLごと署名不要。
注意点
Cookie盗難対策
重要。
HTTPS必須級
Cookie漏洩防止。
有効期限設計
長すぎ危険。
CDK・AWSで関連するもの
- CloudFront Key Group
- Public Key
- Trusted Key Groups
など。
大事
Signed Cookieは:
「CloudFrontレベルで行う認可」
です。
アプリサーバではなく、
CDN側でアクセス制御
している点が本質です。