與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如何解釋這些規則。 有兩種工作模式,分別用1
和0
表示。
全部允許(規則) - 預設情況下,它是超級使用者模式。 使用規則指定對此的例外情況。 如果OrientDB找不到所請求資源的規則,則允許使用者執行該操作。 主要用於高階使用者和管理員。 預設角色admin預設使用此模式,並且沒有例外規則。 它在資料庫中寫為1
。
拒絕所有但(規則) - 預設情況下,此模式不允許任何操作。 使用規則指定對此的例外情況。 如果OrientDB找到請求資源的規則,那麼它允許使用者執行操作。 使用此模式作為所有經典使用者的預設模式。 預設角色,讀者和寫者,使用這種模式。 它在資料庫中寫為0
。