การควบคุมการเข้าถึงระดับแอป (App-level access control)
การควบคุมการเข้าถึงระดับแอปช่วยให้คุณจำกัดว่าใครสามารถลงชื่อเข้าใช้แอปพลิเคชันเฉพาะได้ แทนที่จะอนุญาตให้ผู้ใช้ที่ลงทะเบียนทุกคนใน Logto tenant ของคุณเข้าถึงทุกแอป คุณสามารถสร้างกฎอนุญาตสำหรับแต่ละแอปพลิเคชันโดยอิงจากผู้ใช้, บทบาทผู้ใช้, องค์กร หรือบทบาทในองค์กร
ใช้การควบคุมการเข้าถึงระดับแอปเมื่อคุณต้องการ:
- ทำให้แอปภายในใช้งานได้เฉพาะพนักงานหรือผู้ดูแลระบบเท่านั้น
- จำกัด Protected App ให้กับกลุ่มผู้ใช้ที่เลือกไว้
- อนุญาตเฉพาะลูกค้าหรือพันธมิตรบางรายให้เข้าถึง แอป OIDC / OAuth ของบุคคลที่สาม
- เปิดตัวแอปใหม่ให้กับกลุ่มนำร่องก่อนเปิดให้ทุกคน
วิธีการทำงาน
เมื่อปิดการควบคุมการเข้าถึงระดับแอป ผู้ใช้ที่ลงทะเบียนทุกคนใน Logto tenant ของคุณสามารถลงชื่อเข้าใช้แอปพลิเคชันได้
เมื่อเปิดใช้งาน ผู้ใช้จะสามารถเข้าถึงแอปพลิเคชันได้ก็ต่อเมื่อเขาตรงกับอย่างน้อยหนึ่งกฎที่กำหนดไว้ หากผู้ใช้ไม่ตรงกับกฎใดเลย Logto จะปฏิเสธความพยายามในการลงชื่อเข้าใช้และแสดงหน้าปฏิเสธการเข้าถึงก่อนที่แอปพลิเคชันจะได้รับโทเค็น
การควบคุมการเข้าถึงระดับแอปจะถูกประเมินระหว่างกระบวนการ authorization และการต่ออายุโทเค็น ซึ่งหมายความว่า:
- ผู้ใช้ที่ไม่มีสิทธิ์จะถูกบล็อกก่อนที่จะลงชื่อเข้าใช้แอปพลิเคชันได้สำเร็จ
- การอนุญาตแอปที่มีอยู่จะถูกตรวจสอบอีกครั้งเมื่อใช้โทเค็นรีเฟรชเพื่อขอโทเค็นใหม่
- การอัปเดตกฎจะมีผลกับการตรวจสอบ authorization และการต่ออายุโทเค็นในอนาคต โดยไม่เปลี่ยนแปลงเซสชัน Logto ระดับโกลบอลของผู้ใช้
การควบคุมการเข้าถึงระดับแอปแยกออกจาก การควบคุมการเข้าถึงตามบทบาท (RBAC) RBAC ควบคุมสิ่งที่ผู้ใช้สามารถทำได้หลังการยืนยันตัวตนโดยการออกสิทธิ์ (ขอบเขต; scopes) ในโทเค็นการเข้าถึง การควบคุมการเข้าถึงระดับแอปควบคุมว่าผู้ใช้จะสามารถเข้าถึงแอปพลิเคชันนั้นได้หรือไม่
ประเภทของกฎ
คุณสามารถกำหนดกฎอนุญาตต่อไปนี้ได้:
| ประเภทกฎ | สิ่งที่อนุญาต |
|---|---|
| ผู้ใช้ (Users) | ผู้ใช้เฉพาะสามารถเข้าถึงแอปพลิเคชันได้ |
| บทบาทผู้ใช้ (User roles) | ผู้ใช้ที่ได้รับมอบหมายบทบาทผู้ใช้ที่เลือกสามารถเข้าถึงแอปพลิเคชันได้ |
| องค์กร (Organizations) | สมาชิกปัจจุบันและอนาคตทั้งหมดขององค์กรที่เลือกสามารถเข้าถึงแอปพลิเคชันได้ |
| บทบาทในองค์กร (Organization roles) | สมาชิกที่มีบทบาทในองค์กรที่เลือกในองค์กรที่เลือกสามารถเข้าถึงแอปพลิเคชันได้ |
กฎเป็นแบบเพิ่มรวม (additive) ผู้ใช้เพียงแค่ตรงกับกฎใดกฎหนึ่งก็สามารถเข้าถึงแอปพลิเคชันได้
ตัวอย่างเช่น หากแอปพลิเคชันมีทั้งกฎบทบาทผู้ใช้ “Support team” และกฎบทบาทในองค์กร “BigTree - Admin” ผู้ใช้จะเข้าถึงแอปได้หากได้รับมอบหมายบทบาท Support team หรือเป็น Admin ในองค์กร BigTree
ตั้งค่าการควบคุมการเข้าถึงระดับแอป
- ไปที่ Console > Applications
- เปิดแอปพลิเคชันที่คุณต้องการจำกัด
- ไปที่แท็บ Rules
- ใน Custom allow rules คลิก Add rules
- เลือกประเภทกฎ:
- Users
- User roles
- Organizations
- Organization roles
- เลือกผู้ใช้, บทบาท, องค์กร หรือบทบาทในองค์กรที่ควรได้รับอนุญาตให้เข้าถึงแอปพลิเคชัน
- เปิดใช้งาน Enable access control
- คลิก Save changes
คุณต้องกำหนดกฎอนุญาตอย่างน้อยหนึ่งข้อก่อนเปิดใช้งานการควบคุมการเข้าถึง เพื่อป้องกันการเปิดใช้งานโดยไม่ได้ตั้งใจโดยไม่มีผู้ใช้ใดได้รับอนุญาตให้เข้าถึงแอปพลิเคชัน
แก้ไขหรือลบกฎ
คุณสามารถอัปเดตรายการอนุญาตได้จากแท็บ Rules ของแอปพลิเคชัน
- หากต้องการเพิ่มกฎ คลิก Add another ใต้ตารางกฎ
- หากต้องการลบกฎ คลิกปุ่มลบบนแถวกฎและยืนยันการดำเนินการ
- หลังจากเพิ่มหรือลบกฎ คลิก Save changes เพื่อบันทึกการอัปเดต
หากเปิดใช้งานการควบคุมการเข้าถึง Logto ต้องการให้มีกฎอย่างน้อยหนึ่งข้อคงอยู่ หากต้องการลบกฎทั้งหมด ให้ปิด Enable access control ก่อน แล้วจึงบันทึกการเปลี่ยนแปลง
ผลกระทบของการเปลี่ยนกฎต่อผู้ใช้
การควบคุมการเข้าถึงระดับแอปจะไม่ยุติเซสชัน Logto ระดับโกลบอลของผู้ใช้ ผู้ใช้ยังคงลงชื่อเข้าใช้ Logto และแอปพลิเคชันอื่น ๆ ได้
สำหรับแอปพลิเคชันที่ถูกจำกัด:
- ผู้ใช้ที่ไม่ตรงกับกฎอนุญาตใด ๆ อีกต่อไปจะถูกบล็อกเมื่อเข้าสู่กระบวนการ authorization ของแอปครั้งถัดไป
- หากผู้ใช้มีการอนุญาตที่เกี่ยวข้องกับแอปอยู่แล้ว Logto จะตรวจสอบกฎอีกครั้งเมื่อแอปใช้โทเค็นรีเฟรชเพื่อขอโทเค็นใหม่ หากผู้ใช้ไม่มีสิทธิ์อีกต่อไป Logto จะปฏิเสธคำขอโทเค็น
สิ่งนี้ช่วยให้การตัดสินใจการเข้าถึงผูกกับแอปพลิเคชันโดยไม่รบกวนแอปอื่นที่ไม่เกี่ยวข้องโดยไม่จำเป็น
ความสัมพันธ์กับสิทธิ์ของแอปบุคคลที่สาม
สำหรับ แอปพลิเคชันบุคคลที่สาม การควบคุมการเข้าถึงระดับแอปและการจัดการสิทธิ์แก้ปัญหาคนละด้านกัน:
- การควบคุมการเข้าถึงระดับแอป กำหนดว่าผู้ใช้ได้รับอนุญาตให้ลงชื่อเข้าใช้แอปบุคคลที่สามหรือไม่
- การจัดการสิทธิ์ กำหนดว่าแอปบุคคลที่สามสามารถขอขอบเขตโปรไฟล์ผู้ใช้, ขอบเขตทรัพยากร API และขอบเขตองค์กรใดบนหน้าขอความยินยอม (consent screen) ได้บ้าง
หากกำหนดทั้งสองอย่าง ผู้ใช้ต้องผ่านการควบคุมการเข้าถึงระดับแอปก่อนจึงจะสามารถอนุญาตแอปบุคคลที่สามได้
ความสัมพันธ์กับ Protected App
สำหรับ Protected App การควบคุมการเข้าถึงระดับแอปจะจำกัดว่าใครสามารถผ่านชั้นการยืนยันตัวตนของ Logto และเข้าถึง origin server ที่ได้รับการปกป้องได้
กฎการยืนยันตัวตนของ Protected App ยังคงกำหนดว่า route ใดต้องการการยืนยันตัวตน การควบคุมการเข้าถึงระดับแอปจะกำหนดว่าผู้ใช้ Logto ที่ได้รับการยืนยันตัวตนคนใดได้รับอนุญาตให้เข้าถึงแอป Protected App
แนวทางปฏิบัติที่ดีที่สุด
- เริ่มต้นด้วยกฎบทบาทผู้ใช้หรือบทบาทในองค์กรเมื่อเป็นไปได้ เพราะดูแลรักษาง่ายกว่ารายชื่อผู้ใช้ยาว ๆ
- ใช้กฎองค์กรเมื่อทุกคนในองค์กรควรเข้าถึงแอป
- ใช้กฎบทบาทในองค์กรเมื่อเฉพาะสมาชิกบางคนขององค์กรควรเข้าถึงแอป
- ทบทวนกฎการเข้าถึงเมื่อผู้ใช้เปลี่ยนบทบาท, เข้าร่วมองค์กร หรือออกจากองค์กร
- แยกสิทธิ์ RBAC และการควบคุมการเข้าถึงระดับแอปในโมเดลความคิดของคุณ: การควบคุมการเข้าถึงระดับแอปตอบคำถาม “ผู้ใช้คนนี้เข้าถึงแอปนี้ได้หรือไม่?” ขณะที่ RBAC ตอบว่า “ผู้ใช้คนนี้สามารถทำอะไรได้บ้างหลังเข้าถึง API หรือฟีเจอร์ขององค์กร?”