0Pricing
AWS Solutions Architect · บทเรียน

URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์

จำกัดการเข้าถึงเนื้อหาระดับพรีเมียมด้วย URL และคุกกี้ที่ลงนาม และบล็อกผู้ใช้จากบางประเทศด้วยการจำกัดตามภูมิศาสตร์

URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์ เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

การจำกัดการเข้าถึงเนื้อหา CloudFront

โดยค่าเริ่มต้น CloudFront จะให้บริการเนื้อหาแก่ผู้ชมทุกคนที่ทราบ URL สำหรับเนื้อหาพรีเมียมหรือเนื้อหาส่วนตัว เช่น หลักสูตรวิดีโอ ซอฟต์แวร์แบบชำระเงิน หรือทรัพยากรสำหรับสมาชิกเท่านั้น คุณต้อง จำกัดการเข้าถึง เพื่อให้เฉพาะผู้ใช้ที่ได้รับอนุญาตเท่านั้นที่สามารถเรียกดูเนื้อหาได้

CloudFront มีกลไกสองแบบสำหรับการเข้าถึงที่ได้รับอนุญาต ได้แก่ URL ที่มีลายเซ็น (URL หนึ่งรายการอนุญาตให้เข้าถึงวัตถุเฉพาะหนึ่งรายการ) และ คุกกี้ที่มีลายเซ็น (ชุดคุกกี้อนุญาตให้เข้าถึงวัตถุหลายรายการที่ตรงกับรูปแบบเส้นทาง) ทั้งสองแบบใช้ลายเซ็นเข้ารหัสที่สร้างด้วยคู่คีย์ RSA

URL ที่ลงลายเซ็นของ CloudFront

URL ที่ลงลายเซ็น คือ URL ของ CloudFront ที่มีลายเซ็นเข้ารหัส ซึ่งระบุ เวลาหมดอายุ และอาจระบุ ข้อจำกัดที่อยู่ IP ด้วย URL นี้จะใช้งานได้จนถึงเวลาหมดอายุเท่านั้น และใช้งานได้เฉพาะจาก IP ที่อนุญาต (หากระบุไว้) เมื่อหมดอายุ CloudFront จะส่งข้อผิดพลาด 403 Forbidden กลับมา

URL ที่ลงลายเซ็นเหมาะสำหรับการให้ผู้ใช้รายเดียวเข้าถึงไฟล์เฉพาะหนึ่งไฟล์ (เช่น รายงาน PDF ที่สร้างขึ้น) ลิงก์ดาวน์โหลดที่จำกัดเวลา หรือกรณีที่ไคลเอ็นต์ไม่สามารถตั้งค่าคุกกี้ได้ (เช่น แอปมือถือหรือการสตรีม RTMP)

# Generate a signed URL using AWS CLI (requires a CloudFront key pair)
aws cloudfront sign \
  --url https://d1234abcdef.cloudfront.net/premium/video.mp4 \
  --key-pair-id APKA1234567890 \
  --private-key file://private-key.pem \
  --date-less-than 2026-06-21T00:00:00Z

คุกกี้ที่ลงลายเซ็นของ CloudFront

คุกกี้ที่ลงลายเซ็น ทำงานคล้ายกับ URL ที่ลงลายเซ็น แต่ให้สิทธิ์เข้าถึงไฟล์หลายไฟล์ได้โดยไม่ต้องเปลี่ยน URL ของแต่ละไฟล์ หลังจากตรวจสอบสิทธิ์สำเร็จ เซิร์ฟเวอร์ของคุณจะสร้างคุกกี้สามรายการ (CloudFront-Policy, CloudFront-Signature, CloudFront-Key-Pair-Id) และกำหนดคุกกี้เหล่านี้ไว้ในการตอบกลับของเบราว์เซอร์ คำขอ CloudFront ครั้งถัดไปจากเบราว์เซอร์นั้นจะมีคุกกี้เหล่านี้ติดไปด้วย จึงสามารถเข้าถึงเนื้อหาทั้งหมดที่ตรงตามเงื่อนไขได้

คุกกี้ที่ลงลายเซ็นเหมาะสำหรับการให้ผู้ใช้ที่เข้าสู่ระบบเข้าถึงส่วนเนื้อหาพรีเมียมทั้งหมด (เช่น วิดีโอทั้งหมดใน /members/*) หรือกรณีที่คุณไม่สามารถควบคุมรูปแบบ URL ของทรัพยากรแต่ละรายการได้

กลุ่มคีย์ที่เชื่อถือได้

หากต้องการสร้างลายเซ็นของ CloudFront คุณต้องมี คู่คีย์ของ CloudFront แนวทางสมัยใหม่คือการใช้ กลุ่มคีย์ที่เชื่อถือได้ โดยสร้างคู่คีย์ RSA อัปโหลดคีย์สาธารณะไปยัง CloudFront เพิ่มคีย์นั้นลงในกลุ่มคีย์ จากนั้นเชื่อมโยงกลุ่มคีย์กับพฤติกรรมแคชที่ต้องมีการเข้าถึงแบบลงลายเซ็น

คีย์ส่วนตัวจะจัดเก็บอย่างปลอดภัย (เช่น ใน Secrets Manager) บนเซิร์ฟเวอร์ที่ใช้ลงลายเซ็น เมื่อผู้ใช้ตรวจสอบสิทธิ์แล้ว เซิร์ฟเวอร์จะใช้คีย์ส่วนตัวเพื่อลงลายเซ็นให้ URL หรือนโยบายคุกกี้ CloudFront จะตรวจสอบลายเซ็นโดยใช้คีย์สาธารณะที่สอดคล้องกันในกลุ่มคีย์ที่เชื่อถือได้

# Upload a public key to CloudFront
aws cloudfront create-public-key \
  --public-key-config '{
    "Name": "MySigningKey",
    "EncodedKey": "-----BEGIN PUBLIC KEY-----\n...<key>...\n-----END PUBLIC KEY-----",
    "CallerReference": "2026-06-20-key"
  }'

นโยบาย URL ที่ลงลายเซ็นแบบสำเร็จรูปและแบบกำหนดเอง

URL ที่ลงลายเซ็นสามารถใช้นโยบายได้สองประเภท:

  • นโยบายสำเร็จรูป: รูปแบบที่ง่ายที่สุด ระบุเฉพาะ URL ของทรัพยากรและเวลาหมดอายุ ลายเซ็นมีขนาดกะทัดรัดและสร้างได้ง่าย
  • นโยบายแบบกำหนดเอง: ยืดหยุ่นกว่า ระบุ URL ของทรัพยากรพร้อมอักขระตัวแทนที่ไม่บังคับ (https://d123.cloudfront.net/videos/*) เวลาเริ่มต้นที่ไม่บังคับ (เวลาเริ่มมีผล) และข้อจำกัดที่อยู่ IP ที่ไม่บังคับ JSON ของนโยบายจะถูกเข้ารหัสแบบ Base64 ใน URL

ใช้นโยบายสำเร็จรูปสำหรับลิงก์ไฟล์เดียวแบบง่าย ๆ และใช้นโยบายแบบกำหนดเองเมื่อต้องจับคู่ทรัพยากรด้วยอักขระตัวแทนหรือจำกัดตาม IP

ข้อจำกัดตามภูมิศาสตร์ของ CloudFront

ข้อจำกัดตามภูมิศาสตร์ (เรียกอีกอย่างว่า ข้อจำกัดทางภูมิศาสตร์) จะบล็อกหรืออนุญาตให้ CloudFront ส่งเนื้อหาตามประเทศของผู้ชม CloudFront ระบุประเทศของผู้ชมจากที่อยู่ IP โดยใช้ฐานข้อมูลระบุตำแหน่งทางภูมิศาสตร์จากผู้ให้บริการภายนอก

คุณกำหนดข้อจำกัดตามภูมิศาสตร์ให้แต่ละดิสทริบิวชันได้เป็น รายการอนุญาต (เฉพาะประเทศที่ระบุเท่านั้นที่เข้าถึงเนื้อหาได้) หรือ รายการบล็อก (ประเทศที่ระบุจะถูกบล็อก) ผู้ใช้ในประเทศที่ถูกจำกัดจะได้รับการตอบกลับ HTTP 403 ข้อจำกัดตามภูมิศาสตร์เป็นเครื่องมือแบบครอบคลุมทั้งระบบ เพราะมีผลกับดิสทริบิวชันทั้งหมด ไม่ใช่เส้นทางแต่ละรายการ

# Enable geo-restriction: block two countries
aws cloudfront update-distribution \
  --id EDFDVBD6EXAMPLE \
  --distribution-config '{
    ...existing config...
    "Restrictions": {
      "GeoRestriction": {
        "RestrictionType": "blacklist",
        "Quantity": 2,
        "Items": ["CN", "RU"]
      }
    }
  }' \
  --if-match ETVPDKIKX0DER

ข้อจำกัดตามภูมิศาสตร์ของ CloudFront กับตำแหน่งทางภูมิศาสตร์ของ Route 53

ทั้งข้อจำกัดตามภูมิศาสตร์ของ CloudFront และการกำหนดเส้นทางตามตำแหน่งทางภูมิศาสตร์ของ Route 53 ใช้ข้อมูลทางภูมิศาสตร์เหมือนกัน แต่มีจุดประสงค์ต่างกัน:

  • ข้อจำกัดตามภูมิศาสตร์ของ CloudFront: บล็อกหรืออนุญาตการ ส่งเนื้อหาจากเอดจ์ ในชั้น CDN โดยส่ง 403 ให้ประเทศที่ถูกบล็อก และกำหนดแยกตามดิสทริบิวชัน
  • ตำแหน่งทางภูมิศาสตร์ของ Route 53: กำหนดเส้นทางคำขอ DNS ไปยังปลายทางต่างกัน (เซิร์ฟเวอร์หรือหน้าเว็บต่างกัน) ตามภูมิศาสตร์ ไม่ได้บล็อกการเข้าถึง แต่เปลี่ยนเส้นทางไปยังเนื้อหาหรือโครงสร้างพื้นฐานที่ต่างกัน

ใช้ข้อจำกัดตามภูมิศาสตร์ของ CloudFront สำหรับควบคุมการเข้าถึง (เช่น บล็อกทั้งประเทศ) และใช้ตำแหน่งทางภูมิศาสตร์ของ Route 53 เพื่อนำผู้ใช้ไปยังเนื้อหาหรือโครงสร้างพื้นฐานที่เหมาะกับภูมิภาค

การใช้ URL ที่ลงลายเซ็นร่วมกับ S3 และ OAC

สถาปัตยกรรมการส่งเนื้อหาส่วนตัวที่สมบูรณ์มีดังนี้:

  1. บักเก็ต S3 เป็น ส่วนตัว (ไม่มีการเข้าถึงแบบสาธารณะ)
  2. CloudFront ใช้ OAC เพื่อให้เฉพาะดิสทริบิวชันเท่านั้นที่อ่านข้อมูลจาก S3 ได้
  3. พฤติกรรมแคชสำหรับเนื้อหาส่วนตัวต้องใช้ URL หรือคุกกี้ที่ลงลายเซ็น (และเชื่อมโยงกลุ่มคีย์ที่เชื่อถือได้ไว้)
  4. เซิร์ฟเวอร์แอปพลิเคชันของคุณตรวจสอบสิทธิ์ผู้ใช้และออก URL หรือคุกกี้ที่ลงลายเซ็น
  5. ผู้ใช้เข้าถึงเนื้อหาได้ผ่าน URL ของ CloudFront ที่ลงลายเซ็นและจำกัดเวลาเท่านั้น

แม้ผู้ใช้จะเดาหรือแชร์ URL ของ S3 ได้ การเข้าถึงก็ยังถูกบล็อก และแม้จะแชร์ URL ของ CloudFront URL นั้นก็จะหมดอายุหลังเวลาที่กำหนดไว้ แนวทางแบบหลายชั้นนี้ช่วยเพิ่มการป้องกันเนื้อหาดิจิทัลในเชิงลึก

การเข้ารหัสระดับฟิลด์

การเข้ารหัสระดับฟิลด์ เป็นฟีเจอร์ขั้นสูงของ CloudFront ที่ช่วยเข้ารหัสฟิลด์ข้อมูลสำคัญในคำขอ HTTP POST ที่เอดจ์ ก่อนส่งต่อไปยังต้นทาง แม้เซิร์ฟเวอร์ต้นทางจะถูกเจาะ ฟิลด์ที่เข้ารหัสไว้ (เช่น หมายเลขบัตรเครดิตและหมายเลขประกันสังคม) ก็ยังไม่สามารถอ่านได้หากไม่มีคีย์ส่วนตัวที่สอดคล้องกัน

CloudFront เข้ารหัสฟิลด์ที่ระบุโดยใช้คีย์สาธารณะที่เอดจ์ มีเพียงบริการแบ็กเอนด์ที่กำหนดไว้และมีคีย์ส่วนตัวที่ตรงกันเท่านั้นที่ถอดรหัสข้อมูลได้ การเข้ารหัสระดับฟิลด์เพิ่มชั้นการป้องกันภายในกระบวนการทำงานที่รักษาความปลอดภัยด้วย TLS อยู่แล้ว

รูปแบบการควบคุมการเข้าถึงด้วยโทเค็น

สำหรับแอปพลิเคชันแบบไดนามิกที่ต้องการการควบคุมการเข้าถึงอย่างละเอียดกว่าการบล็อกระดับประเทศ รูปแบบที่ใช้กันทั่วไปคือ การเข้าถึงด้วยโทเค็นโดยใช้ Lambda@Edge:

  1. ผู้ใช้ตรวจสอบสิทธิ์กับ Cognito หรือบริการตรวจสอบสิทธิ์ของคุณ และได้รับ JWT
  2. ผู้ใช้ส่ง JWT เป็นพารามิเตอร์คำค้นหาหรือคุกกี้ในคำขอ CloudFront
  3. ฟังก์ชัน Lambda@Edge Viewer-Request ตรวจสอบลายเซ็นและข้อมูลอ้างสิทธิ์ของ JWT
  4. หากถูกต้อง Lambda@Edge จะส่งต่อคำขอไปยังต้นทาง หากไม่ถูกต้อง จะส่ง 401 กลับมา

วิธีนี้ให้การควบคุมการเข้าถึงแบบละเอียดแยกตามผู้ใช้และทรัพยากรทั้งหมดที่เอดจ์ของ CloudFront โดยไม่ต้องไปถึงต้นทางสำหรับคำขอที่ไม่ได้รับอนุญาต

สรุปกรณีการใช้งานจริง

รูปแบบสถานการณ์ข้อสอบเกี่ยวกับ URL/คุกกี้ที่ลงลายเซ็นและข้อจำกัดตามภูมิศาสตร์:

  • 'ลิงก์ดาวน์โหลดไฟล์ที่ซื้อซึ่งจำกัดเวลา' → URL ที่ลงลายเซ็นพร้อมเวลาหมดอายุ
  • 'ผู้ใช้พรีเมียมที่เข้าสู่ระบบเข้าถึงวิดีโอทั้งหมดใน /premium/*' → คุกกี้ที่ลงลายเซ็นพร้อมนโยบายอักขระตัวแทน
  • 'บล็อกการเข้าถึงของผู้ใช้ในบางประเทศเนื่องจากข้อจำกัดด้านลิขสิทธิ์' → รายการบล็อกข้อจำกัดตามภูมิศาสตร์ของ CloudFront
  • 'ส่งเนื้อหาที่แตกต่างกันให้แต่ละประเทศ' → ตำแหน่งทางภูมิศาสตร์ของ Route 53 + ดิสทริบิวชันหรือต้นทางหลายรายการ
  • 'ปกป้องฟิลด์บัตรเครดิตแม้จากผู้ดูแลระบบต้นทาง' → การเข้ารหัสระดับฟิลด์

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิดของ AWS Solutions Architect (SAA-C03) จากบทเรียนนี้

ทบทวนบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้ว่า URL ที่ลงลายเซ็นจำกัดการเข้าถึงไฟล์แต่ละรายการ ด้วยเวลาหมดอายุและข้อจำกัด IP ที่ไม่บังคับ คุกกี้ที่ลงลายเซ็นให้เข้าถึงไฟล์หลายรายการ ที่ตรงกับรูปแบบเส้นทางภายในการเข้าสู่ระบบที่ตรวจสอบสิทธิ์แล้วหนึ่งครั้ง และ ข้อจำกัดตามภูมิศาสตร์จะบล็อกหรืออนุญาตทั้งประเทศ ในระดับดิสทริบิวชันของ CloudFront บทถัดไปเราจะสำรวจการใช้ CloudFront ร่วมกับ WAF และ Lambda@Edge

คำถามที่พบบ่อย

บทเรียน “URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์”

จำกัดการเข้าถึงเนื้อหาระดับพรีเมียมด้วย URL และคุกกี้ที่ลงนาม และบล็อกผู้ใช้จากบางประเทศด้วยการจำกัดตามภูมิศาสตร์ คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม

ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ดิสทริบิวชันและต้นทางของ CloudFront
  2. พฤติกรรมแคชและการตั้งค่า TTL
  3. URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์
  4. CloudFront ร่วมกับ WAF และ Lambda@Edge
← กลับไปที่ AWS Solutions Architect