Logto x Cloudflare Workers: วิธีรักษาความปลอดภัยให้ Workers ของคุณจากการเข้าถึงของสาธารณะ
ในบทความนี้ เราได้นำเสนอวิธีการรักษาความปลอดภัย API ของ Cloudflare Workers ของคุณด้วย Logto โดยเราใช้ Hono เป็นเฟรมเวิร์กแอปพลิเคชันเว็บเพื่อทำให้การพัฒนาเป็นไปอย่างง่ายดาย
Cloudflare Workers (ใช้คำว่า Workers สั้น ๆ ในเนื้อหาต่อไปนี้) มอบสภาพแวดล้อมการดำเนินงานแบบเซิร์ฟเวอร์เลส ที่ช่วยให้คุณสร้างแอปพลิเคชันใหม่ หรือเสริมแอปพลิเคชันที่มีอยู่ได้โดยไม่ต้องกำหนดค่าหรือดูแลรักษาโครงสร้างพื้นฐาน
ด้วย Workers คุณสามารถสร้างแอปพลิเคชันเซิร์ฟเวอร์เลสของคุณและปรับใช้ได้ทันทีทั่วโลกเพื่อประสิทธิภาพที่ยอดเยี่ยม ความน่าเชื่อถือ และขนาด Workers ไม่เพียงแต่มอบประสิทธิภาพที่ยอดเยี่ยมแต่ยังให้แผนฟรีที่ให้เยอะมาก ๆ และแผนเสียค่าบริการที่ราคาไม่แพงอีกด้วย ไม่ว่าคุณจะเป็นนักพัฒนารายบุคคลหรือทีมขนาดใหญ่ Workers ช่วยให้คุณพัฒนาและส่งมอบผลิตภัณฑ์ได้อย่างรวดเร็วในขณะเดียวกันลดภาระในการดำเนินงานลงได้
Workers สามารถเข้าถึงได้โดยสาธารณะตามค่าเริ่มต้น จึงจำเป็นต้องมีมาตรการป้องกันเพื่อป้องกันการโจมตีและการใ ช้งานที่ไม่เหมาะสม Logto นำเสนอบริการระบุตัวตนที่ครบวงจร ใช้งานง่ายและมีขนาดใหญ่ที่สามารถปกป้อง Workers และบริการเว็บอื่น ๆ ทั้งหมดของคุณ
บทความนี้เจาะลึกกระบวนการรักษาความปลอดภัยให้กับ Workers ของคุณโดยใช้ Logto
สร้างตัวอย่าง Workers
มาก่อสร้างโปรเจกต์ตัวอย่าง Workers ด้วย Hono ในเครื่องท้องถิ่นกัน
เราใช้คำสั่ง CLI ของ Wrangler เพื่อปรับใช้ตัวอย่างไปยัง Cloudflare ทำให้เราสามารถเข้าถึงเส้นทางได้
ป้องกัน API ของ Workers
เพื่อเปรียบเทียบ API ที่สามารถเข้าถึงได้โดยสาธารณะและ API ที่ได้รับการป้องกัน เราเพิ่ม API GET /auth/greet
ซึ่งต้องการช่วงที่เฉพาะเจาะจงในการเข้าถึง
เราไม่สามารถเข้าถึง API ที่สอดคล้องกันได้หากไม่มีสิทธิ์ที่ถูกต้อง
เพื่อจัดการการเข้าถึง API ของ Workers อย่างถูกต้อง เราแนะนำ Logto
ตั้งค่า Logto
ลงทะเบียนบัญชีหากคุณยังไม่มี
เราใช้ Machine-to-machine (M2M) เป็นตัวอย่างในการเข้าถึง API ของ Workers ที่ได้รับการป้องกันเพราะใช้งานง่าย หากคุณต้องการให้ผู้ใช้เว็บแอปของคุณเข้าสู่ระบบ การตั้งค่าจะคล้ายกันแต่คุณควรใช้บทบาท “User” แทนบทบาท “Machine-to-machine”
- เข้าสู่ Logto Admin Console และไปยังแท็บ “API resource” สร้างทรัพยากร API ชื่อ “Workers sample API” พร้อมตัวบ่งชี้ทรัพยากรเป็น
https://sample.workers.dev/
และสร้างสิทธิ์greet:visitor
สำหรับทรัพยากร API นี้ด้วย
- สร้างบทบาท “Workers admin role” ซึ่งเป็นบทบาท “Machine-to-machine” และกำหนดช่วง
greet:visitor
ให้กับบทบาทนี้
- สร้างแอป M2M และกำหนดบทบาท “Workers admin role” ให้กับแอปนี้
อัปเดตตัวตรวจสอบสิทธิ์ Workers
เนื่องจาก Logto ใช้ JWT access token ภายใต้การจัดการ เราจำเป็นต้องฝังตรรกะการตรวจสอบ JWT ใน Workers
ในเมื่อ JWT access token ถูกสร้างโดย Logto เราจึงจำเป็นต้อง:
- รับกุญแจสาธารณะที่สอดคล้องกันเพื่อยืนยันลายเซ็น
- ยืนยันผู้บริโภคของ JWT access token ว่าเป็น Workers APIs
ค่าคงที่เหล่านี้สามารถกำหนดค่าในไฟล์ wrangler.toml
[1] และจะถูกใช้เป็นตัวแปรสิ่งแวดล้อมของ Workers คุณยังสามารถจัดการตัวแปรสิ่งแวดล้อมด้วยตนเองในแดชบอร์ด Cloudflare ได้อีกด้วย
หลังจากปรับใช้โครงการ Workers ไปยัง Cloudflare แล้ว เราสามารถทดสอบได้ว่า API ได้รับการป้องกันอย่างสำเร็จหรือไม่
- รับ access token
- ขอ API
GET /auth/greet
ของ Workers
บทสรุป
ด้วยคู่มือแบบขั้นตอนต่อขั้นตอนในบทความนี้ คุณควรจะสามารถใช้ Logto เพื่อสร้างการป้องกันสำหรับ API ของ Workers ของคุณได้
ในบทความนี้เราได้ใช้ Wrangler CLI สำหรับการพัฒนาและปรับใช้โครง การ Workers ในเครื่องท้องถิ่น Cloudflare ยังมี Workers APIs ที่แข็งแกร่งและหลากหลายเพื่อช่วยในการปรับใช้และการจัดการ
ลองพิจารณาพัฒนาแอปพลิเคชัน SaaS ดู API ของ Cloudflare จะช่วยให้คุณสามารถปรับใช้ Workers พิเศษสำหรับผู้เช่าทุกคนได้อย่างง่ายดาย ในขณะนั้น Logto จะทำให้มั่นใจว่า access tokens จะยังคงเป็นของแต่ละผู้เช่า ซึ่งการควบคุมในลักษณะนี้จะป้องกันการเข้าถึงที่ไม่ได้รับอนุญาตระหว่างผู้เช่า เพิ่มความปลอดภัยและความเป็นส่วนตัวของข้อมูลสำหรับผู้ใช้แอป SaaS ของคุณ
สถาปัตยกรรมที่ปรับตัวและแข็งแกร่งของ Logto สนองตอบต่อความต้องการการยืนยันตัวตนและการอนุญาตที่หลากหลายของแอปพลิเคชันต่าง ๆ ไม่ว่าคุณจะสร้างแพลตฟอร์ม SaaS ที่ซับซ้อนหรือเว็บแอปที่ง่าย Logto ก็มีความยืดหยุ่นและรองรับการขยายได้เพื่อตอบสนองความต้องการเฉพาะของคุณ