CloudFront Signed URL & Cookies

  • CloudFront ๋ถ„์‚ฐ์„ ๋น„๊ณต๊ฐœ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„ธ๊ณ„ ๊ฐ์ง€์˜ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ”„๋ฆฌ๋ฏธ์—„ ์œ ๋ฃŒ ์ฝ˜ํ…์ธ ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ๋ˆ„๊ฐ€, ์–ด๋–ค CloudFront ๋ถ„์‚ฐ์— ์•ก์„ธ์Šคํ•˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด Signed URL & Cookies๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
    • URL๊ณผ Cookies๋ฅผ ์ƒ์„ฑํ•  ๋–„๋Š” ์ •์ฑ…์„ ์—ฐ๊ฒฐํ•œ๋‹ค.
    • ํ•ด๋‹น URL & Cookies ๊ฐ€ ์–ธ์ œ ๋งŒ๋ฃŒ๋˜๋Š”์ง€ ์„ค์ •ํ•œ๋‹ค.
    • ์ด ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•œ๋‹ค. (ํด๋ผ์ด์–ธํŠธ์˜ ๋Œ€์ƒIP๋ฅผ ์•Œ ๊ฒฝ์šฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
    • ์–ด๋–ค AWS ๊ณ„์ •์ด ์„œ๋ช…๋œ URL ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•˜๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ช…์ž๋ฅผ ์ง€์ •ํ•œ๋‹ค.
  • URL ์€ ์–ผ๋งˆ๋‚˜ ์˜ค๋ž˜ ์œ ํšจํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
    • ์˜ํ™”๋‚˜ ์Œ์•…๊ณผ ๊ฐ™์€ ์ฝ˜ํ…์ธ ๋ฅผ ๊ณต์œ ํ•  ๋•Œ๋Š” ๋ช‡ ๋ถ„ ์ •๋„๋กœ ์งง์•„๋„ ๋  ๊ฒƒ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์žฅ๊ธฐ๊ฐ„ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ๋น„๊ณต๊ฐœ ์ปจํ…์ธ ์˜ ๊ฒฝ์šฐ์—๋Š” URL ์ด๋‚˜ Cookies๊ฐ€ ์ˆ˜ ๋…„๊ฐ„ ์ง€์†๋˜๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • URL vs Cookies ์ฐจ์ด
    1. Signed URL
      • ๊ฐœ๋ณ„ ํŒŒ์ผ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ค€๋‹ค.
      • ํŒŒ์ผ ๋ณ„๋กœ ํ•˜๋‚˜์˜ URL์ด ์žˆ๋‹ค.
      • ํŒŒ์ผ์ด 100๊ฐœ๋ฉด 100๊ฐœ์˜ URL์ด ์žˆ๋‹ค.
    2. Signed Cookies
      • ๋‹ค์ˆ˜์˜ ํŒŒ์ผ์— ์•ก์„ธ์Šค๋ฅผ ์ฃผ๊ณ  ํ•ด๋‹น ์ฟ ํ‚ค๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค
      • ์ฆ‰, ๋‹ค์ˆ˜์˜ ํŒŒ์ผ์— ์„œ๋ช…๋œ ์ฟ ํ‚ค๋Š” ํ•˜๋‚˜์ธ ๊ฒƒ

์ƒํ™ฉ์— ๋”ฐ๋ผ ์ ์ ˆํžˆ URL or Cookies ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

01. CloudFront Signed URL Diagram

image-20220823021252005

CloudFront Distribute ๊ฐ€ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ๊ฐœ์˜ EdgeLocation์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด์•ˆ์„ ์œ„ํ•ด ์˜ค๋ฆฌ์ง„์•ก์„ธ์Šค์‹ ๋ถ„(OAI)์„ ์ด์šฉํ•ด S3 Bucket์— ์•ก์„ธ์Šคํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ฆ‰, ์˜ค์ง CloudFront๋ฅผ ์ด์šฉํ•ด์„œ๋งŒ S3 ๋ฒ„ํ‚ท ๋‚ด์˜ ๊ฐ์ฒด์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ ํด๋ผ์šฐ๋“œ ํ”„๋ก ํŠธ๋ฅผ ํ†ตํ•ด ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ ์ž ํ•œ๋‹ค.

์ฆ‰,

  1. ํด๋ผ์ด์–ธํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํ—ˆ๊ฐ€ ๋ฐ ์Šน์ธ์š”์ฒญ์„ ๋ณด๋‚ผ ๊ฒƒ
  2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ AWS SDK ๋ฅผ ์‚ฌ์šฉํ•ด CloudFront๋กœ๋ถ€ํ„ฐ ์ง์ ‘ Signed URL์„ ์ƒ์„ฑํ•œ๋‹ค.
  3. ์„œ๋ช…๋œ URL์€ Client ์—๊ฒŒ ๋ฐ˜ํ™˜๋  ๊ฒƒ์ด๋‹ค.
  4. Clients๋Š” ์ด Signed URL ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ์™€ ํŒŒ์ผ ๊ฐ์ฒด ๋“ฑ CloudFrontd์—์„œ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ง์ ‘ ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ๋จ
  5. ์„œ๋ช…๋œ URL ๋ฟ ์•„๋‹ˆ๋ผ Signed Cookies๋„ ๋ฐฉ์‹์€ ๋™์ผํ•˜๋‹ค.

02. CloudFront Signed URL vs S3 Pre-Signed URL

  • CloudFront Signed URL
  • S3 Pre-Signed URL

์œ„ 2๊ฐœ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

image-20220823022441405

CloudFront Signed URL ๊ณผ S3 Pre-Signed URL ์ค‘ ์–ด๋Š ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

  • CloudFront Signed URL

    • ์œ„์˜ 2๊ฐœ๋Š” ์šฉ๋„์ž์ฒด๊ฐ€ ๋‹ค๋ฅด๋‹ค.

    • CloudFront์— Signed URL์€ Origin์— ์ƒ๊ด€ ์—†์ด ๊ฒฝ๋กœ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— URL ์€ S3 Origin๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์›ํ•˜์‹œ๋Š” ๋ชจ๋“  HTTP ๋ฐฑ์—”๋“œ ์˜ค๋ฆฌ์ง„์—์„œ ์ž‘๋™ํ•œ๋‹ค.

    • ๊ณ„์ • ๋‚ด ํ‚ค ํŽ˜์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— root๋งŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ  IP, ๊ฒฝ๋กœ, ๋‚ ์งœ, ๋งŒ๋ฃŒ ๋“ฑ์œผ๋กœ ํ•„ํ„ฐ๋ง ๊ฐ€๋Šฅํ•˜๋‹ค.

    • CloudFront์— ์žˆ๋Š” ๋ชจ๋“  ์บ์‹ฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  • S3 Pre-Signed URL

    • URL ์— ๋ฏธ๋ฆฌ ์„œ๋ช…ํ•œ ์‚ฌ๋žŒ์œผ๋กœ์„œ ์š”์ฒญ์„ ๋ฐœํ–‰ํ•œ๋‹ค.
    • ๋‚˜๋งŒ์˜ IAM ์›์น™์œผ๋กœ URL์— ์„œ๋ช…ํ•˜๊ณ  ์„œ๋ช…์„ ์œ„ํ•ด ์ œ IAM ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค.
      • ํ•ด๋‹น URL์„ ๊ฐ€์ง„์‚ฌ๋žŒ์€ ๋‚˜์™€ ๊ฐ™์€ ๊ถŒํ•œ์„ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.
    • ์ˆ˜๋ช…์ด ์ œํ•œ์ ์ด๋‹ค. ์ด Pre-Signed URL ์„ ์‚ฌ์šฉํ•ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ S3 Bucket์— ์•ก์„ธ์Šค ๊ฐ€๋Šฅ



๋งŒ์•ฝ ์‚ฌ๋žŒ๋“ค์ด ์šฐ๋ฆฌ์˜ CloudFront๋ถ„์‚ฐ์— ์•ก์„ธ์Šคํ•˜๊ธธ ์›ํ•˜๊ณ , S3 ์•ž์— ์žˆ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์˜๋„ํ•œ ๋Œ€๋กœ S3 ๋ฒ„ํ‚ท์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Signed URL ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ฅผ OAI ๋กœ ์ œํ•œํ•˜๋Š” ๋ฒ„ํ‚ท ์ •์ฑ… ๋•Œ๋ฌธ์ด๋‹ค.

ํ•˜์ง€๋งŒ CloudFront๋ฅผ ์‚ฌ์šฉํ•˜์ง€์•Š๊ณ  ์‚ฌ์šฉ์ž๋“ค์ด ์ง์ ‘ S3๋ฒ„ํ‚ท์œผ๋กœ ์•ก์„ธ์Šคํ•ด ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๊ธธ ์›ํ•˜์‹œ๋ฉด Pre-Signed URL์ด ๋” ์ ํ•ฉํ•  ๊ฒƒ์ด๋‹ค.

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ