OrientDB - ความปลอดภัย
เช่นเดียวกับ RDBMS OrientDB ยังให้การรักษาความปลอดภัยตามแนวคิดผู้ใช้และบทบาทที่รู้จักกันดี แต่ละฐานข้อมูลมีผู้ใช้ของตนเองและผู้ใช้แต่ละคนมีบทบาทอย่างน้อยหนึ่งบทบาท บทบาทคือการรวมกันของโหมดการทำงานและชุดสิทธิ์
ผู้ใช้
โดยค่าเริ่มต้น OrientDB จะรักษาผู้ใช้ที่แตกต่างกันสามคนสำหรับฐานข้อมูลทั้งหมดในเซิร์ฟเวอร์ -
Admin - ผู้ใช้รายนี้สามารถเข้าถึงฟังก์ชันทั้งหมดบนฐานข้อมูลได้โดยไม่มีข้อ จำกัด
Reader- ผู้ใช้นี้เป็นผู้ใช้แบบอ่านอย่างเดียว ผู้อ่านสามารถค้นหาระเบียนใด ๆ ในฐานข้อมูล แต่ไม่สามารถแก้ไขหรือลบได้ ไม่มีการเข้าถึงข้อมูลภายในเช่นผู้ใช้และบทบาทของตัวเอง
Writer - ผู้ใช้นี้เหมือนกับผู้อ่านผู้ใช้ แต่ยังสามารถสร้างอัปเดตและลบบันทึกได้
การทำงานกับผู้ใช้
เมื่อคุณเชื่อมต่อกับฐานข้อมูลคุณสามารถสอบถามผู้ใช้ปัจจุบันบนฐานข้อมูลได้โดยใช้ SELECT คำถามเกี่ยวกับ OUser ชั้นเรียน
orientdb> SELECT RID, name, status FROM OUser
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
---+--------+--------+--------
# | @CLASS | name | status
---+--------+--------+--------
0 | null | admin | ACTIVE
1 | null | reader | ACTIVE
2 | null | writer | ACTIVE
---+--------+--------+--------
3 item(s) found. Query executed in 0.005 sec(s).
การสร้างผู้ใช้ใหม่
ในการสร้างผู้ใช้ใหม่ให้ใช้คำสั่ง INSERT โปรดจำไว้ว่าในการดำเนินการนี้คุณต้องตั้งค่าสถานะเป็น ACTIVE และให้บทบาทที่ถูกต้อง
orientdb> INSERT INTO OUser SET
name = 'jay',
password = 'JaY',
status = 'ACTIVE',
roles = (SELECT FROM ORole WHERE name = 'reader')
การอัปเดตผู้ใช้
คุณสามารถเปลี่ยนชื่อสำหรับผู้ใช้ด้วยคำสั่ง UPDATE
orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'
ในทำนองเดียวกันคุณยังสามารถเปลี่ยนรหัสผ่านสำหรับผู้ใช้ได้
orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'
OrientDB บันทึกรหัสผ่านในรูปแบบแฮช ทริกเกอร์OUserTrigger เข้ารหัสรหัสผ่านอย่างโปร่งใสก่อนที่จะบันทึกบันทึก
ปิดการใช้งานผู้ใช้
ปิดการใช้งานผู้ใช้โดยใช้ UPDATE เพื่อเปลี่ยนสถานะจาก ACTIVE เป็น SUSPENDED ตัวอย่างเช่นหากคุณต้องการปิดการใช้งานผู้ใช้ทั้งหมดยกเว้นผู้ดูแลระบบให้ใช้คำสั่งต่อไปนี้ -
orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'
บทบาท
บทบาทกำหนดว่าการดำเนินการใดที่ผู้ใช้สามารถดำเนินการกับทรัพยากรได้ โดยหลักแล้วการตัดสินใจนี้ขึ้นอยู่กับโหมดการทำงานและกฎ กฎนั้นทำงานแตกต่างกันไปขึ้นอยู่กับโหมดการทำงาน
การทำงานกับบทบาท
เมื่อคุณเชื่อมต่อกับฐานข้อมูลคุณสามารถสอบถามบทบาทปัจจุบันบนฐานข้อมูลโดยใช้ SELECT คำถามเกี่ยวกับ ORole ชั้นเรียน
orientdb> SELECT RID, mode, name, rules FROM ORole
หากดำเนินการค้นหาข้างต้นสำเร็จคุณจะได้ผลลัพธ์ดังต่อไปนี้
--+------+----+--------+-------------------------------------------------------
# |@CLASS|mode| name | rules
--+------+----+--------+-------------------------------------------------------
0 | null | 1 | admin | {database.bypassRestricted = 15}
1 | null | 0 | reader | {database.cluster.internal = 2, database.cluster.orole = 0...
2 | null | 0 | writer | {database.cluster.internal = 2, database.cluster.orole = 0...
--+------+----+--------+-------------------------------------------------------
3 item(s) found. Query executed in 0.002 sec(s).
การสร้างบทบาทใหม่
ในการสร้างบทบาทใหม่ให้ใช้คำสั่ง INSERT
orientdb> INSERT INTO ORole SET name = 'developer', mode = 0
การทำงานกับโหมด
ในกรณีที่กฎกำหนดว่าผู้ใช้ที่เป็นสมาชิกของบทบาทบางอย่างสามารถทำอะไรได้บ้างบนฐานข้อมูลโหมดการทำงานจะกำหนดวิธีที่ OrientDB ตีความกฎเหล่านี้ โหมดการทำงานมีสองประเภทกำหนดโดย 1 และ 0
Allow All But (Rules)- โดยค่าเริ่มต้นจะเป็นโหมดผู้ใช้ขั้นสูง ระบุข้อยกเว้นโดยใช้กฎ หาก OrientDB ไม่พบกฎสำหรับรีซอร์สที่ร้องขอก็จะอนุญาตให้ผู้ใช้ดำเนินการ ใช้โหมดนี้สำหรับผู้ใช้ระดับสูงและผู้ดูแลระบบเป็นหลัก ผู้ดูแลระบบเริ่มต้นใช้โหมดนี้โดยค่าเริ่มต้นและไม่มีกฎข้อยกเว้น มันเขียนเป็น 1 ในฐานข้อมูล
Deny All But (Rules)- โดยค่าเริ่มต้นโหมดนี้ไม่อนุญาตให้ทำอะไรเลย ระบุข้อยกเว้นโดยใช้กฎ หาก OrientDB พบกฎสำหรับรีซอร์สที่ร้องขอจะอนุญาตให้ผู้ใช้ดำเนินการ ใช้โหมดนี้เป็นค่าเริ่มต้นสำหรับผู้ใช้แบบคลาสสิกทั้งหมด บทบาทเริ่มต้นผู้อ่านและผู้เขียนใช้โหมดนี้ มันเขียนเป็น 0 ในฐานข้อมูล