การสร้างความเชื่อมั่นผ่านการควบคุมการเข้าถึง
แอปส่วนใหญ่มักคิดว่าตัวเองปลอดภัยเพียงเพราะมีหน้าล็อกอิน
การล็อกอินเป็นเพียงขั้นตอนแรก เมื่อผู้ใช้เข้ามาแล้ว คุณต้องตอบคำถามหนึ่งข้อให้ได้ว่า: ผู้ใช้คนนี้ทำอะไรได้บ้าง?
หลายคนสับสนระหว่าง Authentication (การยืนยันตัวตน) และ Authorization (การกำหนดสิทธิ์)
• Authentication ถามว่า: คุณคือใคร? • Authorization ถามว่า: คุณได้รับอนุญาตให้ทำอะไรได้บ้าง?
ผู้ใช้อาจล็อกอินสำเร็จ แต่นั่นไม่ได้หมายความว่าพวกเขาควรจะเห็นทุกข้อมูลหรือแก้ไขได้ทุกโปรไฟล์
ใช้ Role Based Access Control (RBAC) เพื่อทำให้กฎเกณฑ์มีความชัดเจน
RBAC ทำงานโดยการตรวจสอบบทบาท (role) ของผู้ใช้เทียบกับรายการบทบาทที่ได้รับอนุญาต หากคุณไม่ใช้การควบคุมการเข้าถึง คุณจะเผชิญกับความเสี่ยง เช่น:
- แดชบอร์ดที่เปิดเผยข้อมูลมากเกินไป
- การให้สิทธิ์ภายในมากเกินความจำเป็น
- ข้อมูลรั่วไหลโดยไม่ตั้งใจ
- การตรวจสอบย้อนหลัง (audit trails) ที่ไม่มีประสิทธิภาพ
- ความเชื่อมั่นที่สูญเสียไป
ปฏิบัติตามหลักการสิทธิ์ขั้นต่ำที่จำเป็น (Principle of Least Privilege) โดยให้สิทธิ์แก่ผู้ใช้เฉพาะเท่าที่จำเป็นต่อการทำงานเท่านั้น
• พนักงานฝ่ายสนับสนุนไม่ควรเห็นข้อมูลลูกค้าทั้งหมด • วิศวกรไม่ควรเข้าถึงระบบ Production ได้โดยค่าเริ่มต้น • ข้อมูล HR ต้องถูกแยกส่วนไว้อย่างชัดเจน • บทบาท Admin ต้องมีจำนวนน้อยและสามารถตรวจสอบได้
บางครั้งการกำหนดตามบทบาทอาจไม่เพียงพอ คุณจำเป็นต้องมีสิทธิ์ตามการกระทำ (action-based permissions) เช่น ผู้ใช้อาจดูข้อมูลได้แต่ลบไม่ได้ สิ่งนี้จะช่วยให้คุณควบคุมได้อย่างละเอียด (granular control)
คุณควรแยกประเภทข้อมูลตามระดับความสำคัญด้วย: • ข้อมูลสาธารณะ (Public data): ชื่อและรูปถ่าย • ข้อมูลส่วนตัว (Private data): อีเมลและเบอร์โทรศัพท์ • ข้อมูลที่ละเอียดอ่อน (Sensitive data): เงินเดือนหรือเลขบัตรประชาชน
จัดการข้อมูลแต่ละประเภทในโค้ดของคุณให้แตกต่างกัน วิธีนี้จะช่วยให้การจัดการความปลอดภัยทำได้ง่ายขึ้น
ความเชื่อมั่นยังต้องการความรับผิดชอบ (accountability) ทุกครั้งที่มีการเข้าถึงข้อมูลที่ละเอียดอ่อน ระบบของคุณต้องสร้างบันทึกการตรวจสอบ (audit trail) การกระทำที่สำคัญต้องทิ้งร่องรอยไว้เสมอ
ก่อนจะปล่อยแอปของคุณ ให้ตรวจสอบประเด็นเหล่านี้:
- ขั้นตอนการล็อกอินและเซสชัน (session) มีความปลอดภัยหรือไม่?
- การกำหนดสิทธิ์อ้างอิงตามบทบาทและการกระทำหรือไม่?
- ข้อมูลที่ละเอียดอ่อนถูกแยกส่วนไว้หรือไม่?
- การตั้งค่าเริ่มต้นของคุณมีการจำกัดสิทธิ์ไว้หรือไม่?
- คุณมีการบันทึกการเข้าถึงทั้งหมดหรือไม่?
- คุณสามารถอธิบายเรื่องการกำหนดสิทธิ์ให้ผู้ใช้เข้าใจได้หรือไม่?
Authentication คือการนำผู้ใช้เข้ามา ส่วน Authorization คือสิ่งที่ทำให้ระบบของคุณน่าเชื่อถือ ความเชื่อมั่นคือฟีเจอร์หนึ่งของผลิตภัณฑ์
