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