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