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 ในฐานข้อมูล