OrientDB安全

與RDBMS一樣,OrientDB也基於衆所周知的概念,用戶和角色提供安全性。 每個數據庫都有自己的用戶,每個用戶都有一個或多個角色。 角色是工作模式和權限集合的組合。

用戶

默認情況下,OrientDB爲服務器中的所有數據庫維護三個不同的用戶 -

管理員 - 此用戶可以無限制地訪問數據庫上的所有功能。
讀取用戶 - 此用戶是隻讀用戶。讀取用戶可以查詢數據庫中的任何記錄,但不能修改或刪除它們。 它無法訪問內部信息,例如用戶和角色本身。
寫入用戶 - 該用戶與讀取用戶相同,但它也可以創建,更新和刪除記錄。

使用用戶
連接到數據庫時,可以通過在OUser類上使用SELECT查詢來查詢數據庫上的當前用戶。

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。 例如,如果要禁用除admin之外的所有用戶,請使用以下命令 -

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如何解釋這些規則。 有兩種工作模式,分別用10表示。

  • 全部允許(規則) - 默認情況下,它是超級用戶模式。 使用規則指定對此的例外情況。 如果OrientDB找不到所請求資源的規則,則允許用戶執行該操作。 主要用於高級用戶和管理員。 默認角色admin默認使用此模式,並且沒有例外規則。 它在數據庫中寫爲1

  • 拒絕所有但(規則) - 默認情況下,此模式不允許任何操作。 使用規則指定對此的例外情況。 如果OrientDB找到請求資源的規則,那麼它允許用戶執行操作。 使用此模式作爲所有經典用戶的默認模式。 默認角色,讀者和寫者,使用這種模式。 它在數據庫中寫爲0