AuthZ (การอนุญาต) คืออะไร?
สำรวจความหมายของ AuthZ, AuthN เปรียบเทียบกับ AuthZ, วิธีการทำงานของ AuthZ, และแนวปฏิบัติที่ดีที่สุดในการอนุญาต
AuthZ คืออะไร และมันแตกต่างจาก AuthN อย่างไร?
AuthZ เป็นคำย่อของ การอนุญาต การอนุญาตเป็นกลไกที่แยกจาก การตรวจสอบสิทธิ์ ในขณะที่การตรวจสอบสิทธิ์ระบุว่าคุณคือใคร การอนุญาตจะกำหนดว่าคุณสามารถเข้าถึงทรัพยากรเฉพาะและทำการกระทำอะไรกับมันได้บ้าง
ในตัวอย่างในโลกจริง ทรัพยากรสามารถรวมถึงซอฟต์แวร์, ระบบ, เอกสาร, คำสั่งซื้อ, และทรัพย์สินต่าง ๆ การอนุญาตเพิ่มชั้นของการควบคุมโดยเฉพาะว่าใครสามารถเข้าถึงทรัพยากรต่าง ๆ เหล่านี้และภายใต้เงื่อนไขใดบ้าง
AuthZ ทำงานอย่างไร?
การอนุญาตแยกจากการตรวจสอ บสิทธิ์ แต่หลายครั้งจะเชื่อมโยงกับมัน ตัวอย่างเช่น โปรโตคอลมาตรฐานเช่น OAuth 2.0, OIDC, และ SAML ผสานกลไกการอนุญาตที่ใช้งานตามโทเค็น
ในระบบการอนุญาตตามโทเค็น เซิร์ฟเวอร์การอนุญาตจะให้ access token แก่ผู้ใช้ โทเค็นนี้ซึ่งรวมถึงสิทธิ์จะกำหนดว่าผู้ใช้สามารถเข้าถึงทรัพยากรเฉพาะได้หรือไม่
การกำหนดสิทธิ์โดยตรงให้กับผู้ใช้อาจไม่มีประสิทธิภาพ โดยเฉพาะเมื่อมีเงื่อนไขที่ละเอียดอ่อนมากขึ้น จำเป็นต้องใช้การจัดการนโยบายการเข้าถึงสำหรับการจัดการสิทธิ์ที่ดีขึ้น
นี่คือขั้นตอนการทำงานในระดับสูงในการดำเนินงานของการอนุญาต:
- เริ่มกระบวนการตรวจสอบสิทธิ์: ผู้ใช้ลงชื่อเข้าใช้โดยการเลือกตัวระบุตัวตนและวิธีการ เช่น การใช้อีเมลและรหัสผ่าน
- คำขอการอนุญาต: หลังจากเข้าสู่ระบบแล้ว ผู้ใช้ขอเข้าถึงทรัพยากรรวมถึงรายละเอียดเช่น รหัสผู้ใช้และบทบาทของพวกเขา
- การตรวจสอบการควบคุมการเข้าถึง: ระบบตรวจสอบคำขอตามนโยบายการอนุญาตที่กำหนดไว้ล่วงหน้า เช่น กฎเกณฑ์ที่อิงตามบทบาทหรือคุณลักษณะ
- การตัดสินใจอนุญาต: ระบบกำหนดว่าควรให้หรือปฏิเสธการเข้าถึงขึ้นอยู่กับนโยบายและสิทธิ์
หากต้องการทำความเข้าใจกับการไหลของการขออนุญาต OAuth 2.0 โดยละเอียด โปรดดูที่ การขออนุญาต
มีรูปแบบการอนุญาตอะไรบ้าง?
การควบคุมการเข้าถึงตามบทบาทและการทำงานของมัน
การควบคุมการเข้าถึงตามบทบาท (RBAC) ใช้บทบาทในการจัดการการเข้าถึง ผู้ใช้แต่ละคนจะถูกกำหนดบทบาทหนึ่งหรือหลายบทบาทที่กำหนดไว้ล่วงหน้า และทุกบทบาทจะรวมถึงชุดของสิทธิ์ การเข้าใจความสัมพันธ์ระหว่างผู้ให้บริการ (หรือผู้ใช้) บทบาท และสิทธิ์คือกุญแจสำคัญของ RBAC
ในการเข้าใจวิธีทำงานของการควบคุมการเข้าถึงตามบทบาท (RBAC) คุณต้องรู้เกี่ยวกับ:
- ผู้ให้บริการ: ซึ่งสามารถเป็นผู้ใช้หรือหน่วยงานที่ไม่ใช่มนุษย์ เช่น
user
หรือmachine-to-machine application
- บทบาท: แทนความรับผิดชอบหรือหน้าที่การงาน เช่น
admin
member
- สิทธิ์: ระบุการกระทำที่อนุญาตในทรัพยากรเฉพาะ เช่น
read: order
การควบคุมการเข้าถึงตามคุณลักษณะและกา รทำงานของมัน
การควบคุมการเข้าถึงตามคุณลักษณะ (ABAC) ใช้ในงานอนุญาตและรองรับสถานการณ์ที่มีความซับซ้อนมากขึ้นโดยการใช้คุณลักษณะเฉพาะของหน่วยงาน มากกว่าที่จะใช้อิงบทบาทอย่างเดียว
ตัวอย่างเช่น บริษัทหนึ่งจัดการแพลตฟอร์มแบ่งปันเอกสารระดับโลกที่พนักงานต้องการเข้าถึงเอกสารที่มีความอ่อนไหวตามบทบาทงาน, ที่ตั้ง, และระดับการจัดประเภทของเอกสาร
คุณลักษณะสามารถออกแบบได้ดังนี้:
- คุณลักษณะของผู้ใช้: บทบาท (เช่น “Manager,” “Engineer”), ที่ตั้ง (เช่น “US,” “Europe”)
- คุณลักษณะของทรัพยากร: ประเภทเอกสาร (เช่น “Financial Report,” “Design File”), ระดับการจัดประเภท (เช่น “Confidential”)
- คุณลักษณะของสภาพแวดล้อม: เวลาการเข้าถึง (เช่น “During Work Hours”), ประเภทอุปกรณ์ (เช่น “Company Laptop”)
ยังมีโมเดลการควบคุมการเข้าถึงอื่น ๆ เช่น การควบคุมการเข้าถึงตามนโยบาย (PBAC) ซึ่งมีจุดแข็งและข้อด้อยต่างกัน และการเลือกโมเดลขึ้นอยู่กับกรณีการใช้งานและความต้องการของคุณ
กรณีศึกษาและตัวอย่างการใช้ AuthZ
ซอฟต์แวร์ B2C
ซอฟต์แวร์ B2C มักต้องการบทบาทเฉพาะตามความต้องการทางธุรกิจ ตัวอย่างเช่น แอปจัดการร้านหนังสืออาจรวมถึงบทบาทที่มีความรับผิดชอบต่าง ๆ เช่น การจัดการทรัพยากรและบริการ
แอปหลายผู้เช่า B2B
แอป B2B มักใช้สถาปัตยกรรมหลายผู้เช่าที่แต่ละผู้เช่าแทนองค์กร ในองค์กรต้องมีบทบาทเช่น admin และ member นี่คือที่ซึ่งการอนุญาต (AuthZ) มีบทบาทสำคัญในการจัดการผู้ใช้ในระดับองค์กร โดยมักใช้การควบคุมการเข้าถึงตามบทบาท (RBAC)
การอนุญาตของเครื่องต่อเครื่อง
การสื่อสารเครื่องต่อเครื่อง เกิดขึ้นโดยตรงระหว่างบริการโดยไม่มีการโต้ตอบของมนุษย์ ตัวอย่างเช่น การเรียกใช้บริการ API โดย. มักเกี่ยวข้องกับโทเค็น (เช่น OAuth 2.0 access tokens) เพื่อให้เข้าถึงได้ปลอดภัย, แปรผัน, และระเอียด
แนวปฏิบัติที่ดีที่สุดสำหรับ AuthZ คืออะไร?
ต่อไปนี้คือ แนวปฏิบัติที่ดีที่สุดสำหรับการอนุญาต (authZ) เพื่อให้แน่ใจว่าการควบคุมการเข้าถึงมีความปลอดภัยและมีประ สิทธิภาพ:
-
หลักการของสิทธิพิเศษน้อยที่สุด
สิ่งนี้จะช่วยลดความเสี่ยงของการเข้าถึงหรือการสร้างความเสียหายที่ไม่ได้รับอนุญาตจากบัญชีผู้ใช้ที่ถูกคุกคาม ผู้ใช้และระบบควรเข้าถึงเฉพาะทรัพยากรและการกระทำที่จำเป็นสำหรับบทบาทของพวกเขา
-
ใช้การอนุญาตที่ใช้โทเค็น
การควบคุมการเข้าถึงที่ใช้โทเค็นให้ความยืดหยุ่นและการควบคุมที่ละเอียดมากขึ้นในขณะที่ยึดมาตรฐานเปิด ใช้โทเค็นที่ปลอดภัย (เช่น OAuth 2.0, JWTs) เพื่อให้เข้าถึงตามช่วงเวลาและขอบเขต
-
ตรวจสอบและติดตามเป็นประจำ
การตรวจสอบบันทึกการเข้าถึงและนโยบายการอนุญาตเป็นประจำเป็นสิ่งจำเป็นในการตรวจสอบความผิดปกติหรือสิทธิ์ที่ล้าสมัย
-
บังคับใช้การแยกหน้าที่
เริ่มต้นด้วยการกำหนดสิทธิ์ที่ละเอียดเช่นการกำหนดการกระทำและทร ัพยากรเฉพาะ (เช่น อ่าน, เขียน, ลบ) เมื่อสร้างบทบาทให้ใช้ชื่อบทบาทที่ชัดเจนและบังคับใช้การแยกหน้าที่เพื่อลดความเสี่ยงของการฉ้อโกงหรือความผิดพลาดโดยผู้ใช้หนึ่งคน
-
รองรับหลายผู้ใช้ (ถ้าใช้ได้)
สำหรับระบบหลายผู้ผู้ เช่าความสำคัญของการแยกผู้เช่าเป็นสิ่งสำคัญ โดยการรวมกันกับการควบคุมการเข้าถึงตามบทบาท คุณสามารถบรรลุการแยกแหล่งข้อมูล เพื่อให้แน่ใจว่าบทบาทที่เหมาะสมสามารถเข้าถึงทรัพยากรได้เฉพาะในผู้เช่าของพวกเขา ซึ่งป้องกันการเข้าถึงที่ไม่ได้ตั้งใจหรือเป็นอันตรายต่อทรัพยากรของผู้เช่าอื่น
-
เพิกถอนการเข้าถึงแบบไดนามิก
เมื่อออกแบบระบบ AuthZ ของคุณให้มั่นใจว่าสิทธิ์สามารถปรับปรุงหรือเพิกถอนได้ทันทีหากเงื่อนไขเปลี่ยนแปลง (เช่น การปรับปรุงบทบาท หรือการยุติการจ้างงาน) สิ่งนี้สามารถทำได ้ผ่านการตรวจสอบ API แบบไดนามิก การใช้เว็บฮุค หรือวิธีการอื่น ๆ เป้าหมายคือการป้องกันการเข้าถึงที่ไม่ได้รับอนุญาตในเวลาจริง
ความแตกต่างระหว่าง AuthZ(Authorization) กับ Auth(Authentication) คืออะไร?
ความแตกต่างระหว่างการตรวจสอบสิทธิ์และการอนุญาตอยู่ที่วัตถุประสงค์และกระบวนการในโครงสร้างการระบุตัวตนและการเข้าถึง
AuthN (การตรวจสอบสิทธิ์) ตอบคำถามว่า “คุณคือใครและเป็นเจ้าของตัวตนใด” เป็นกระบวนการในการตรวจสอบตัวตนของผู้ใช้, บริการหรืออุปกรณ์ การตรวจสอบสิทธิ์ช่วยให้มั่นใจว่าหน่วยงานที่พยายามเข้าถึงระบบหรือทรัพยากรเป็นของจริง วิธีที่พบบ่อยได้แก่ รหัสผ่าน, ไบโอเมตริก และการตรวจสอบยืนยันสองปัจจัย (2FA) ตัวอย่างเช่น เมื่อคุณ ล็อกอินในบัญชีโดยใช้อีเมลและรหัสผ่าน ระบบจะยืนยันตัวตนของคุณผ่านการตรวจสอบสิทธิ์
AuthZ (การอนุญาต) ตอบคำถามว่า “คุณได้รับอนุญาตให้ทำอะไร?” เป็นกระบวนการในการอนุญาตหรือปฏิเสธการเข้าถึงทรัพยากรตามสิทธิ์หรือบทบาทของผู้ใช้ การอนุญาตเกิดขึ้นหลังจากการตรวจสอบสิทธิ์และกำหนดว่าจะให้กระทำใดสำหรับผู้ใช้ที่ผ่านการตรวจสอบ ตัวอย่างเช่น หลังจากล็อกอิน ผู้ใช้ที่เป็น admin อาจมีสิทธิ์ในการแก้ไขการตั้งค่า ขณะที่ผู้ใช้ทั่วไปสามารถดูเท่านั้น
โดยสรุป AuthN (การตรวจสอบสิทธิ์) ยืนยันตัวตน ขณะที่ AuthZ (การอนุญาต) กำหนดการเข้าถึง การตรวจสอบสิทธิ์เกิดขึ้นก่อน ตามมาด้วยการอนุญาตเพื่อให้ใช้ทรัพยากรได้อย่างปลอดภัยและเหมาะสม
สร้าง AuthZ (การอนุญาต) กับ Logto
Logto Cloud เสนอการบ ริการการอนุญาตที่สำคัญตามโปรโตคอลมาตรฐานเปิดเช่น OIDC, OAuth 2.0 และ SAML ฟีเจอร์รวมถึง การควบคุมการเข้าถึงตามบทบาท, องค์กร (หลายผู้เช่า), และ การอ้างสิทธิ์โทเค็นที่กำหนดเอง เพื่อตอบสนองความต้องการการอนุญาตของคุณจากมุมมองที่หลากหลาย