• หลายผู้เช่า
  • saas
  • ซอฟต์แวร์
  • พัฒนา
  • สถาปัตยกรรม

การแยกผู้เช่าในแอปพลิเคชันหลายผู้เช่า

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

Guamian
Guamian
Product & Design

สวัสดีทุกคน! ในบทนี้ เราจะสร้างจากการอภิปรายก่อนหน้านี้เกี่ยวกับหัวข้อหลายผู้เช่า ถ้าคุณยังไม่ได้อ่านบทความก่อนหน้านี้ เราแนะนำให้เริ่มจากบทนั้นก่อน!

เมื่อพูดถึงแอปพลิเคชันหลายผู้เช่า สิ่งสำคัญคือต้องคิดเรื่อง การแยกผู้เช่า ซึ่งหมายถึงการแยกและรักษาความปลอดภัยของข้อมูลและทรัพยากรของผู้เช่าต่าง ๆ ภายในระบบที่แชร์ (เช่น โครงสร้างพื้นฐานบนคลาวด์หรือแอปพลิเคชันหลายผู้เช่า)

เป้าหมายของการแยกผู้เช่าคือให้แน่ใจว่าข้อมูลและการดำเนินการของผู้เช่าแต่ละรายยังคงแตกต่างและปลอดภัยจากกันและกัน แม้ว่าพวกเขาจะใช้ทรัพยากรพื้นฐานเดียวกัน

ในสถานการณ์ Software as a Service (SaaS) การแยกผู้เช่าเกี่ยวข้องกับการสร้างโครงสร้างภายในกรอบ SaaS ที่ควบคุมการเข้าถึงทรัพยากรอย่างเข้มงวด สิ่งนี้ป้องกันความพยายามที่ไม่ได้รับอนุญาตในการเข้าถึงทรัพยากรของผู้เช่าอื่น ๆ

ในขณะที่คำอธิบายอาจดูเป็นนามธรรม เราจะใช้ตัวอย่างและรายละเอียดที่สำคัญเพื่ออธิบายแนวคิดเรื่องการแยก

การแยกผู้เช่าไม่ขัดกับแนวคิด"แชร์"แบบหลายผู้เช่า

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

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

การแยกมีหลายระดับ

เมื่อเราเข้าใจว่าการแยกไม่เกี่ยวข้องอย่างเคร่งครัดกับระดับทรัพยากรโครงสร้างพื้นฐานและไม่ใช่การแยกชัดเจนระหว่างโครงสร้างพื้นฐานทางกายภาพ มันนำไปสู่ข้อสรุปเช่นนี้:

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

แผนภาพด้านล่างแสดงให้เห็นสเปกตรัมของการแยกนี้

isolated shared

การรับรองที่ถูกต้องและการอนุญาตไม่เท่ากับ “การแยก”

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

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

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

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

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

ตัวตนในแอปหลายผู้เช่า

เราได้พูดถึงการแยกผู้เช่า แต่แล้วตัวตนล่ะ? คุณจะตัดสินใจได้อย่างไรว่าตัวตนของคุณควร "แยก" หรือไม่?

มักจะมีความสับสนเกี่ยวกับแนวคิด "การแยกตัวตน" อาจหมายถึงสถานการณ์ที่ผู้ใช้จริง ๆ หนึ่งคนมีสองตัวตนในการเข้าใจทั่วไปของคน

  1. ตัวตนทั้งสองสามารถอยู่ในระบบตัวตนเดียวกันได้ ตัวอย่างเช่น Sarah อาจมีอีเมลส่วนตัวที่ลงทะเบียนพร้อมกับอีเมลของบริษัทที่เชื่อมต่อผ่าน Single Sign-On (SSO)
  2. ผู้ใช้ดูแลตัวตนโดดเด่นสองตัวในระบบตัวตนที่แยกต่างหาก ซึ่งแสดงถึงผลิตภัณฑ์ที่แตกต่างกันโดยสิ้นเชิง ซึ่งไม่เกี่ยวข้องกันทั้งหมด

บางครั้ง สถานการณ์เหล่านี้ถูกอ้างถึงว่าเป็น "ตัวตนที่แยก" อย่างไรก็ตาม ป้ายนี้อาจไม่ช่วยในการตัดสินใจ

แทนที่จะกำหนดว่าคุณต้องการ "การแยกตัวตน" หรือไม่ พิจารณาว่าคุณหรือส่วนหนึ่งของธุรกิจหรือผลิตภัณฑ์ของคุณจำเป็นต้องรักษาระบบตัวตนแยกหรือไม่ คำตอบนี้สามารถชี้นำการออกแบบระบบการจัดการตัวตนและการเข้าถึง (IAM) ของคุณได้ สำหรับคำตอบสั้น ๆ เกี่ยวกับแอปหลายผู้เช่า

ในกรณีส่วนใหญ่ ในแอปหลายผู้เช่า ตัวตนจะถูกแชร์ ขณะที่ทรัพยากรของผู้เช่าแต่ละรายถูกแยก

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

เมื่อมุ่งมั่นไปที่การแยกผู้เช่า คุณอาจสังเกตเห็นการเน้นย้ำซ้ำ ๆ กับคำว่า "องค์กร" ซึ่งมักจะได้รับการพิจารณาว่าเป็นแนวปฏิบัติที่ดีในการสร้างแอปพลิเคชันหลายผู้เช่า

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

Logto กำลังแนะนำฟีเจอร์ “องค์กร” ในเดือนพฤศจิกายน

Logto กำลังพัฒนาอย่างแข็งขันในฟีเจอร์ "องค์กร" โดยมีเป้าหมายสำหรับการเปิดตัวในเดือนพฤศจิกายน 2023 ฟีเจอร์นี้ได้รับการออกแบบมาโดยเฉพาะเพื่อตอบสนองความต้องการการแยกผู้เช้าที่จำเป็นสำหรับการสร้างผลิตภัณฑ์ SaaS ตามมาตรฐานอุตสาหกรรมและแนวปฏิบัติที่ดี

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