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表示。

  • 允許所有但(規則) - 預設情況下,這是超級使用者模式。使用規則指定對此的例外。如果OrientDB找不到請求資源的規則,則允許使用者執行操作。主要將此模式用於高階使用者和管理員。預設角色admin預設使用此模式,並且沒有例外規則。它在資料庫中寫為1。

  • 拒絕所有但(規則) - 預設情況下,此模式不允許任何操作。使用規則指定對此的例外。如果OrientDB找到請求資源的規則,則允許使用者執行操作。將此模式用作所有經典使用者的預設模式。預設角色讀取者和寫入者使用此模式。它在資料庫中寫為0。

廣告