โมเดลพื้นฐานสำหรับการสร้างฐานข้อมูลกับผู้ใช้และกลุ่มคืออะไร?


9

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

ฉันคิดว่าฉันมี:

user_table
user_id
user_name
...

group_type
group_id
group_name
parent_id
...

group_table
id
user_id
group_id

คนแรกคือผู้ใช้คนที่สองคือกลุ่มและคนที่สามคือตารางตัวกลางที่เชื่อมต่อทั้งสอง ผู้ใช้หนึ่งรายมีหลายกลุ่ม

เสียงนี้ตกลงไหม


นอกเหนือจากชื่อ GROUP_TYPEตารางของคุณควรมีชื่อGROUPหรือสิ่งที่คล้ายคลึงกันและคุณGROUP_TABLEควรอ้างอิงทั้งผู้ใช้และกลุ่มตามที่เชื่อมโยง
Adam Musch

@adam ไม่ group_table ทำเช่นนั้นกับ user_id และ group_id?
johnny

4
@AdamMusch ไม่ควรตั้งชื่อ GROUP เนื่องจากเป็นคำที่สงวนไว้ ไม่ควรตั้งชื่อตารางและคอลัมน์ตามคำที่สงวนไว้
Philᵀᴹ

1
@Phil เห็นด้วย คุณอาจตั้งชื่อตารางSELECTและเขตข้อมูลFROMเพื่อให้คุณมีคิวรีเช่นSELECT [FROM] FROM [SELECT]
JNK

2
ลองโทรหาเอนทิตีพื้นฐานเช่น 'app_user' และ 'app_role'
ConcernedOfTunbridgeWells

คำตอบ:


17

วิธีการดั้งเดิมในการจำลองนี้จะใช้รูปแบบที่เรียกว่าตามบทบาทการรักษาความปลอดภัย

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

การรักษาความปลอดภัยตามบทบาท

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

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


แต่ถ้าผู้ใช้ของฉันมีบทบาทอย่างผู้จัดการหรืออะไรและด้วยเหตุผลบางอย่างผู้ใช้คนเดียวกันต้องได้รับอนุญาตอย่างใดอย่างหนึ่งเช่นกัน (ซึ่งไม่ได้อยู่ในบทบาทนั้นและไม่มีบทบาทอื่นใดอยู่คนเดียว)
levi

@levi - หากเป็นเช่นนั้นวิธีหนึ่งในการจัดการคือการสร้างบทบาทพิเศษเช่น"สิทธิ์พิเศษของ Bob"ซึ่งเป็นบิตของกระบอง แต่ก็แก้ปัญหาตราบใดที่คุณไม่มีข้อยกเว้นมากเกินไปเช่น นี้. เป็นไปได้ว่าสิ่งที่คุณคิดว่าเป็นข้อยกเว้นเฉพาะบุคคลอาจเป็นบทบาทใหม่ที่คุณไม่ได้พิจารณา จะเกิดอะไรขึ้นเมื่อบ๊อบเลิก? การเปลี่ยนของ Bob ยังต้องได้รับอนุญาตพิเศษหรือไม่ ถ้าเป็นเช่นนั้นคุณมีบทบาทกับสมาชิกหนึ่งคนไม่ใช่ข้อยกเว้น
Joel Brown

@levi - ความเป็นไปได้อีกอย่างหนึ่งคือคุณต้องมีส่วนผสมของสิทธิ์ส่วนบุคคลและบทบาท ในกรณีดังกล่าวROLEตารางของคุณสามารถพิมพ์ย่อยลงในประเภทบุคคลและกลุ่มซึ่งประเภทกลุ่มมีศูนย์ถึงสมาชิกจำนวนมากและประเภทบุคคลมีสมาชิกหนึ่งคน วิธีที่คุณบังคับใช้กฎเหล่านี้ขึ้นอยู่กับคุณ มันสามารถทำได้อย่างชัดเจนในสคีมาฐานข้อมูลของคุณซึ่งในกรณีนี้คุณต้องเปลี่ยนสคีมาที่มีภาพเล็กน้อย หรือคุณอาจใช้ตรรกะแอปพลิเคชันซึ่งในกรณีนี้สคีมาของคุณยังคงดูเหมือนสิ่งที่ฉันเห็นในภาพด้านบน
Joel Brown
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.