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?

Signed Cookie 認可とは

0
Posted at

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側でアクセス制御

している点が本質です。

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?